我在尝试将大量嵌套的 xml 文件转换为文本时遇到问题。我真正想要的输出只是某些节点及其子节点的文本内容(在本例中为“secondBit”和“thirdBit”类型的节点“div”)。不幸的是,有一些内部标签 (span class="bold") 需要被删除,并且结束标签被一个空格替换。这是输入文件:
<?xml version="1.0" encoding="UTF-8"?>
<myxml>
<content>
<p class="heading">Omit this please</p>
<div type="firstBit">
<div class="extended"><span class="italic">this as well</span>
</div>
<meta name="factor"/>
</div>
<div type="secondBit">
<p>
<meta name="first" id="9"/>Some text in here.</p>
</div>
<div type="thirdBit">
<div class="internal" >
<div class="intro">
<p class="varied">And then a <span class="bold">Button</span>can be pushed <span class="bold">without</span>any trouble</p>
</div>
</div>
</div>
</content>
</myxml>
这是我到目前为止的xsl:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*" />
<xsl:output method="text" encoding="UTF-8" indent="no"
omit-xml-declaration="yes" />
<xsl:template match="node()">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="div[@type= ('secondBit', 'thirdBit')]">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
然而,这给了我输出:
这里有一些文字。然后可以毫无问题地按下按钮
而我想要输出(注意空格):
这里有一些文字。然后可以毫无问题地按下按钮
我知道我可能必须以某种方式介绍以下 xsl 片段,但我不确定如何:
<xsl:template match="span[@class='bold']">
<xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text>
</xsl:template>
如果这不是问这些问题的地方,我为浪费人们的时间而道歉。
否则感谢所有帮助。