Xml XSLT文件-每个函数的问题
我有一个类似于下面的文件:Xml XSLT文件-每个函数的问题,xml,xslt,Xml,Xslt,我有一个类似于下面的文件: <catalog> <cd0> <title>Empire Burlesque</title> <artist>Bob Dylan</artist> <country>USA</country> <company>Columbia</company> <
<catalog>
<cd0>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year></cd0>
<cd1>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd1>
<cd2>
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd2>
.
.
.
</catalog>
皇帝讽刺剧
鲍勃·迪伦
美国
哥伦比亚
10.90
1985
皇帝讽刺剧
鲍勃·迪伦
美国
哥伦比亚
10.90
1985
皇帝讽刺剧
鲍勃·迪伦
美国
哥伦比亚
10.90
1985
.
.
.
我想提取节点
,
,
等的任何元素。。。每个函数都有一个函数,但我找不到如何实现它
你能帮我一下吗?大致猜猜你想要达到什么目标,这里有一些评论: XSLT中的循环元素很可能是处理XML标记的典型初学者方法。在XML中,您必须改变您的想法。这意味着不循环标记,而是应用符合特定路径(xpath)的模板 以下是检查年份:
<xsl:template match="cd[year/.>1985]">
<li>
<xsl:value-of select="title"/>
</li>
</xsl:template>
只是指:
对每个属性(@)节点或(|)每个标记节点(*或node())使用此模板,并将此节点复制到输出文档,递归应用并迭代源文档。注释标记被忽略
希望这能给每一个新手一个提升!一旦你知道如何使用它,它实际上非常酷,非常有效。最好向我们展示你想要实现的输出,以及你编写的不起作用的代码,然后我们可以看到你的困境,以及语言规范中是否有某些特定部分需要建议。仅供参考,
xsl:for each
不是一个循环,在这里使用它不仅可以缩短代码,还可以减少处理量。
<xsl:template match="cd[@id='1']">
<li>
<xsl:value-of select="title"/>
</li>
</xsl:template>
<xsl:template match="cd[year/.>1985]">
<li>
<xsl:value-of select="title"/>
</li>
</xsl:template>
<xsl:template match="*">
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>