Xml 显示相同级别元素的xsl if条件
在if条件之后,如何显示相同级别的元素值 比如说 XMLXml 显示相同级别元素的xsl if条件,xml,xslt,if-statement,Xml,Xslt,If Statement,在if条件之后,如何显示相同级别的元素值 比如说 XML 皇帝讽刺剧 鲍勃·迪伦 美国 哥伦比亚 10.90 1985 隐藏你的心 邦尼泰勒 英国 哥伦比亚唱片公司 9.90 1988 最成功的 多莉·帕顿 美国 RCA 9.90 1982 XSLT 这不会使英国级别元素的标题和艺术家不高兴 我知道解决这个问题的一种方法是对每个循环使用,但我正在寻找一种有效的方法,如下所示: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XS
皇帝讽刺剧
鲍勃·迪伦
美国
哥伦比亚
10.90
1985
隐藏你的心
邦尼泰勒
英国
哥伦比亚唱片公司
9.90
1988
最成功的
多莉·帕顿
美国
RCA
9.90
1982
XSLT
这不会使英国级别元素的标题和艺术家不高兴
我知道解决这个问题的一种方法是对每个循环使用,但我正在寻找一种有效的方法,如下所示:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/catalog/cd">
<xsl:if test="country = 'UK'">
<xsl:value-of select="title"/>
<xsl:value-of select="artist"/>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
产生:
<?xml version="1.0" encoding="UTF-8"?>
Hide your heartBonnie Tyler
把你的心藏起来邦妮·泰勒
这是:
产生:
<?xml version="1.0" encoding="UTF-8"?>
Hide your heartBonnie Tyler
把你的心藏起来邦妮·泰勒
这只能使用模板完成:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/catalog/cd[country='UK']" priority="1">
<xsl:value-of select="title"/>
<xsl:value-of select="artist"/>
</xsl:template>
<xsl:template match="/catalog/cd">
<!-- handle non-UK CDs here -->
</xsl:template>
</xsl:stylesheet>
当然,根据您的需求,还有许多其他方法可以安排模板以生成所需的输出。例如,您可能会得到显式模板,用于处理title
和artist
元素(或显式隐藏每个cd
的所有其他子元素)
所有这一切都取决于您的特殊需要,但我想在这里说明的一点是,当您在模板匹配中正确捕获目标元素时,您可以获得很多功能(并最终获得更干净的代码)。(而不是特殊条件)。这可以仅使用模板完成:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/catalog/cd[country='UK']" priority="1">
<xsl:value-of select="title"/>
<xsl:value-of select="artist"/>
</xsl:template>
<xsl:template match="/catalog/cd">
<!-- handle non-UK CDs here -->
</xsl:template>
</xsl:stylesheet>
当然,根据您的需求,还有许多其他方法可以安排模板以生成所需的输出。例如,您可能会得到显式模板,用于处理title
和artist
元素(或显式隐藏每个cd
的所有其他子元素)
所有这一切都取决于您的特殊需要,但我想在这里说明的一点是,当您在模板匹配中正确捕获目标元素时(而不是特殊条件),您将获得大量的能力(并最终获得更干净的代码)