我正在尝试使用XSL文件解析XML文件。
我的问题是,我的XML文件可以保存任意深度的路径f.x。
<document>
<branch>
<data>somedata</data>
<children>
<branch>
<data>somedata</data>
<children>
....
</children>
</branch>
</children>
</branch>
</document>
我不知道这些节点的深度,但我知道它们是如何命名的。如何提取每个节点f.x的内容。?
我想保留节点的层次结构。
感谢。
我找到了解决方案。不知道这是不是Martin og HashCoder的意思:
<xsl:template match="branch">
<p><xsl:value-of select="branchcontent.list/branchtext/properties.list/p/@v"/></p>
<xsl:apply-templates select="subbranches.list"/>
</xsl:template>
答案 0 :(得分:0)
您的问题对我来说不是很清楚..您是否尝试复制所有节点值?
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* , node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:0)
如果要展平层次结构,请使用
<xsl:template match="/">
<xsl:apply-templates select="//data"/>
</xsl:template>
<xsl:template match="data">
<xsl:value-of select="."/>
</xsl:template>
如果要遍历并保留层次结构,请使用
<xsl:template match="branch">
<div>
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="data">
<xsl:value-of select="."/>
</xsl:template>