我有一个XSL变量prdxml
,它包含这样的XML
<node id="2939" parentID="2938" level="3" writerID="0" >
<data alias="itemNumbers">,3101056,8261247,</data>
<data alias="pass_word">akspass</data>
<data alias="logo">/media/41532/inner-logo01.png</data>
</node>
如何从此变量
中选择位于根节点中的id(id =“2939”)答案 0 :(得分:2)
我猜你使用的是XSLT 1.0。
为了做类似的事情你必须依赖扩展函数node-set()。但是因为它是一个扩展函数,它的可用性取决于你正在使用的XSLT处理器。
例如,在xsltproc,saxon中你可以使用类似的东西:
<xsl:stylesheet xmlns:exsl="http://exslt.org/common"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:variable name="_prdxml">
<node id="2939" parentID="2938" level="3" writerID="0" >
<data alias="itemNumbers">,3101056,8261247,</data>
<data alias="pass_word">akspass</data>
<data alias="logo">/media/41532/inner-logo01.png</data>
</node>
</xsl:variable>
<xsl:template match="/">
<xsl:variable name="prdxml" select="exsl:node-set($_prdxml)" />
<!-- Now you can navigate through the prdxml node set -->
<xsl:apply-templates select="$prdxml/node[@id = '2939']" />
</xsl:template>
</xsl:stylesheet>
如果您使用的是Microsoft XSLT Processor,则必须将扩展功能的名称空间更改为
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
答案 1 :(得分:2)
这看起来像Umbraco节点的XML结构(v4.5之前版本)。
要访问Umbraco节点上的任何属性,您可以使用@
符号,如下所示:
<xsl:value-of select="$prdxml/@id" />
<xsl:value-of select="$prdxml/@parentID" />
要访问您在Umbraco节点上定义的属性,您将使用以下内容:
<xsl:value-of select="$prdxml/data[@alias='pass_word']" />
<xsl:value-of select="$prdxml/data[@alias='logo']" />
Umbraco在他们的维基上有一整节; http://our.umbraco.org/wiki/reference/xslt;以及如何使用XPATH遍历XML的示例。
- 编辑以解决评论 -
我的XSLT的工作版本是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet [ <!ENTITY nbsp " "> ]>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxml="urn:schemas-microsoft-com:xslt"
xmlns:umbraco.library="urn:umbraco.library" xmlns:Exslt.ExsltCommon="urn:Exslt.ExsltCommon" xmlns:Exslt.ExsltDatesAndTimes="urn:Exslt.ExsltDatesAndTimes" xmlns:Exslt.ExsltMath="urn:Exslt.ExsltMath" xmlns:Exslt.ExsltRegularExpressions="urn:Exslt.ExsltRegularExpressions" xmlns:Exslt.ExsltStrings="urn:Exslt.ExsltStrings" xmlns:Exslt.ExsltSets="urn:Exslt.ExsltSets"
exclude-result-prefixes="msxml umbraco.library Exslt.ExsltCommon Exslt.ExsltDatesAndTimes Exslt.ExsltMath Exslt.ExsltRegularExpressions Exslt.ExsltStrings Exslt.ExsltSets">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:param name="currentPage"/>
<xsl:template match="/">
Current Page ID : <xsl:value-of select="$currentPage/@id" />
</xsl:template>
</xsl:stylesheet>
可能无法在您的网页上显示的原因可能是:
<xsl:param name="currentPage" />
已从您的XSLT中删除。