我有下面的 XML,其中我想使用 XSLT 提取 p1 值为 Orange 的 p2 元素值,然后在 variablePrint 标签中显示该值。
<rootyFruity xmlns:h="http://www.w3.org/TR/html4/">
<h:fruit>
<h:p1>Apple</h:p1>
<h:p2>1</h:p2>
</h:fruit>
<h:fruit>
<h:p1>Orange</h:p1>
<h:p2>2</h:p2>
</h:fruit>
<h:fruit>
<h:p1>Guava</h:p1>
<h:p2>3</h:p2>
</h:fruit>
<h:fruit>
<h:p1>Grapes</h:p1>
<h:p2>4</h:p2>
</h:fruit>
<h:variablePrint>ssss</h:variablePrint>
</rootyFruity>
下面是 XSLT,我能够形成仅抓取 variablePrint 元素并使用变量在其中显示值 5。
当 p1 值为橙色时,有没有办法提取 p2 元素值?
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:miscHelper="http://www.jclark.com/xt/java/glog.webserver.util.MiscellaneousHelper"
version="1.0">
<xsl:variable name="variableName" select="5"/>
<xsl:output method="xml"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//*[local-name()='variablePrint']/text()">
<xsl:value-of select="$variableName"/>
</xsl:template>
</xsl:stylesheet>
您可以通过这种方式设置变量:
这会找到匹配的水果元素并返回其 p2 子元素的内容。您需要添加 h: 命名空间前缀的定义。