我有
<?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,所以我写了这样简单的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 Section”和“Another content”,我该如何解决这种情况?