-1

我正在尝试使用 XSL 文件解析 XML 文件。

我的问题是,我的 XML 文件可以保存任意深度的路径 fx

<document>
    <branch>
        <data>somedata</data>
        <children>
            <branch>
                <data>somedata</data>
                <children>
                    ....
                </children>
            </branch>
         </children>
     </branch>
</document>

我不知道这些节点的深度,但我知道它们是如何命名的。如何提取每个节点 fx 的内容?

我想保留节点的层次结构。

谢谢。

我找到了解决方案。不知道这是否是 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>
4

2 回答 2

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>
于 2013-11-04T10:28:33.157 回答
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>
于 2013-11-04T10:29:03.907 回答