首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XSLT - Value-Of

XSLT - Value-Of
EN

Stack Overflow用户
提问于 2011-08-02 20:58:42
回答 3查看 2.2K关注 0票数 0

同样,您也可以执行以下操作:

代码语言:javascript
复制
<xsl:for-each select="catalog/cd[artist='Bob Dylan']">

你能对Value-Of语句做同样的过滤吗?

代码语言:javascript
复制
<xsl:value-of select="value[name='Name']" />

谢谢,詹姆斯。

编辑:

很抱歉给你造成了混乱。

我有一些XML:

代码语言:javascript
复制
<DynamicData>
    <item>
      <name>Name</name>
      <value xsi:type="xsd:int">0</value>
    </item>
    <item>
      <name>Value</name>
      <value xsi:type="xsd:long">9</value>
    </item>
</DynamicData>

我想在select的值上使用一个过滤器,就像执行for-each时一样。我刚刚开始研究XSLT,所以不确定它的能力。最后,我使用了以下XSLT:

代码语言:javascript
复制
<set>   
    <xsl:attribute name="name"> 
       <xsl:choose>
        <xsl:when test="item[name='Name']/value=0">Low</xsl:when>
        <xsl:when test="item[name='Name']/value=1">Medium</xsl:when>
        <xsl:when test="item[name='Name']/value=2">High</xsl:when>  
       </xsl:choose>
    </xsl:attribute>
    ...

我遇到的问题是,我在测试中将过滤器放在value元素之后,如下所示。显然,‘<xsl:when test="item/value[name='Name']=2">High</xsl:when>’元素不是'value‘的元素,而是'item’的元素,这就是为什么这个不起作用。

谢谢大家的帮助,我终于做到了:)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-08-02 21:04:20

是的,select接受XPATH表达式作为它的参数

XSL:value-of

虽然规范说明您可以,但这可能取决于您的XML/XSL引擎的实现。

票数 1
EN

Stack Overflow用户

发布于 2011-08-02 22:34:29

请记住,在XSLT1.0中, <xsl:value-of select="someNodeSet"/>只输出someNodeSet中第一个节点的字符串值

另一边的

代码语言:javascript
复制
<xsl:for-each select="someNodeSet">
 <xsl:value-of select="."/>
</xsl:for-each>

输出someNodeSet中每个节点的字符串值。

票数 2
EN

Stack Overflow用户

发布于 2011-08-03 20:33:59

请注意,在XSLT1.0中,可以使用xsl:copy-oftext()测试节点解决这个问题。

例如,给定以下输入:

代码语言:javascript
复制
<catalog>
    <cd>
        <artist>Bob Dylan</artist>
    </cd>
    <cd>
        <artist>Pink Floyd</artist>
        <title>ummagumma</title>
    </cd>
    <cd>
        <artist>Pink Floyd</artist>
        <title>Atom Earth Mother</title>
    </cd>
</catalog> 

您可以按如下方式使用xsl:copy-of

代码语言:javascript
复制
 <xsl:copy-of select="catalog/cd[artist='Pink Floyd']/title/text()"/>

将返回所有匹配节点的值,如下所示:

代码语言:javascript
复制
 <xsl:for-each select="catalog/cd[artist='Pink Floyd']/title">
   <xsl:value-of select="."/>
 </xsl:for-each>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6912458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档