1

私は持っている

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" []>
<article lang="en">
     <articleinfo>
            <title>Test Article</title>
     </articleinfo>
     <sect1 label="">
            <title>Test1 Section</title>
            <para>Some content</para>
    </sect1>
    <sect1>
            <title>Test2 Section</title>
            <para>Another content</para>
    </sect1>
</article>

「Test1」というタイトルの sect1 を 1 つだけ抽出したいので、次のような単純な xsl 変換を記述します。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://docbook.org/ns/docbook">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="article/sect1[contains(title, 'Test1')]">
  <xsl:message>Match</xsl:message>
  <xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>

しかし、なんらかの理由で、このような変換は、言及されたタイトルの sect1 だけでなく、タグを除いたすべての XML ファイルのコンテンツもコピーします。

xsltproc ./extract_sect1.xsl test.xml 
Match
<?xml version="1.0"?>


            Test Article

    <sect1 label="">
            <title>Test1 Section</title>
            <para>Some content</para>
    </sect1>

            Test2 Section
            Another content

では、なぜ「Test2 セクション」と「別のコンテンツ」が表示されるのでしょうか。この状況を修正するにはどうすればよいですか?

4

2 に答える 2