Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用libxslt从XML生成PDF期间的ValidationException_Xslt_Pdf Generation_Libxslt_Docbook Xsl - Fatal编程技术网

使用libxslt从XML生成PDF期间的ValidationException

使用libxslt从XML生成PDF期间的ValidationException,xslt,pdf-generation,libxslt,docbook-xsl,Xslt,Pdf Generation,Libxslt,Docbook Xsl,我在命令行中使用Docbook 1.78和xsltproc(libxslt 1.1.26和libxml 2.7.8)从XML文件生成fo文件。我的目标是使用Apache格式的输出处理器(fop;版本1.1)生成PDF。 我的XML输入文件: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE book SYSTEM "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dt

我在命令行中使用Docbook 1.78和xsltproc(libxslt 1.1.26和libxml 2.7.8)从XML文件生成fo文件。我的目标是使用Apache格式的输出处理器(fop;版本1.1)生成PDF。 我的XML输入文件:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE book SYSTEM "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
<book lang="de" id="MyBook">
    <chapter id="Introduction">
        <title>Introduction</title>
        <section id="sec_intro_1">
            <title>Test</title>
            <para>para1_sec_intro_1 (see also glossary: <xref linkend="gloss_etm-datei"/>).</para>
            <para>para2_sec_intro_1</para>
        </section>
        <section id="sec_intro_2">
            <title>Another Test</title>
            <para>para1_sec_intro_2 (glossary: <xref linkend="gloss_etm-datei"/>).</para> 
            <para>para2_sec_intro2</para>       
        </section>
    </chapter>
    <xi:include href="glossar_test.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</book>
fo文件已生成,但它包含ID不唯一的fo:wrapper元素。这是生成的fo文件:

...
(see also glossary: <fo:basic-link internal-destination="gloss_etm-datei"><fo:inline>
            <fo:wrapper id="idp8751564240"><!--ETM-Datei--></fo:wrapper>
            <fo:inline font-weight="bold">ETM-Datei</fo:inline>
        </fo:inline></fo:basic-link>)
....
(glossary: <fo:basic-link internal-destination="gloss_etm-datei"><fo:inline>
            <fo:wrapper id="idp8751564240"><!--ETM-Datei--></fo:wrapper>
            <fo:inline font-weight="bold">ETM-Datei</fo:inline>
        </fo:inline></fo:basic-link>).
...
我做错什么了吗? 谢谢你的帮助

提前谢谢

编辑 以下是glosar_test.xml:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
        "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">

<glossary id="glossar">
    <title>Glossar</title>
    <glossdiv id="gloss_E">
        <title>E</title>
        <glossentry id="gloss_etm-datei">
            <glossterm id="glossterm_etm_datei">
                <indexterm>
                    <primary>ETM-Datei</primary>
                </indexterm>
                <emphasis role="bold">ETM-Datei</emphasis>
            </glossterm>
            <glossdef>
                <para>
                    Glossary_Text
                </para>
            </glossdef>
        </glossentry>

    </glossdiv>
</glossary>

词汇表
E
日期
日期
词汇表和文本
我找到了解决办法! 同时,描述了如何引用gloassary。通常,您会使用
glossterm
-标记,例如:

<para>Set your <glossterm linkend="NetAddr">network address</glossterm>.
</para>
...
<glossary>
  <glossentry id="NetAddr">
    <glossterm>Network address</glossterm>
    <glossdef><para>Four numbers separated by periods</para></glossdef>
  </glossentry>
</glossary>

如果这样做,fo:wrapper的ID将被删除,fop可以将其解析为pdf文件。

您是否也可以显示
glossar_test.xml
,其中包含ID为
gloss_etm-datei
的内容?否则我无法复制这个。
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
        "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">

<glossary id="glossar">
    <title>Glossar</title>
    <glossdiv id="gloss_E">
        <title>E</title>
        <glossentry id="gloss_etm-datei">
            <glossterm id="glossterm_etm_datei">
                <indexterm>
                    <primary>ETM-Datei</primary>
                </indexterm>
                <emphasis role="bold">ETM-Datei</emphasis>
            </glossterm>
            <glossdef>
                <para>
                    Glossary_Text
                </para>
            </glossdef>
        </glossentry>

    </glossdiv>
</glossary>
<para>Set your <glossterm linkend="NetAddr">network address</glossterm>.
</para>
...
<glossary>
  <glossentry id="NetAddr">
    <glossterm>Network address</glossterm>
    <glossdef><para>Four numbers separated by periods</para></glossdef>
  </glossentry>
</glossary>
<xref linkend="ge-xslfoprocessor" endterm="gt-xslfoprocessor"/>
...

<glossentry id="ge-xslfoprocessor">
<glossterm id="gt-xslfoprocessor">XSL-FO processor</glossterm>
<glossdef>
<para>Software component that converts an XSL-FO document into a
formatted document.</para>
</glossdef>
</glossentry>