<data>
<Attributes>
<Attribute name='somethingelse' value='blah'/>
<Attribute name='forms'>
<List>
<String>xform</String>
<String>yform</String>
</List>
</Attribute>
</Attributes>
</data>
我已经在属性级别解析了xslt,所以我只需要执行<xsl:value-of select="Attribute[@name='somethingelse']/attribute::value"/>
如何选择具有2个字符串xform和yform的表单。我想在同一行上获得xform和yform。从其他线程,有人给了我以下代码:
<xsl:template match="/">
<xsl:for-each select="//String">
<xsl:value-of select="."/><xsl:if test="not(position() = last())">|</xsl:if>
</xsl:for-each>
</xsl:template>
我不知道如何将它们放在一起。我的目标是输出如下:
嗒嗒,XForm的| yform
答案 0 :(得分:1)
不确定我的问题是否正确,但我想这应该输出你想要的内容:
<xsl:template match="/">
<xsl:apply-templates select="//Attributes"/>
</xsl:template>
<xsl:template match="Attributes">
<xsl:value-of select="Attribute[@name='somethingelse']/@value"/>
<xsl:text>,</xsl:text>
<xsl:for-each select="Attribute[@name='forms']/List/String">
<xsl:value-of select="."/>
<xsl:if test="position() != last()">|</xsl:if>
</xsl:for-each>
</xsl:template>
答案 1 :(得分:0)
你也可以像这样分配一个变量:
<xsl:variable name="strings">
<xsl:value-of select="concat(String[1],String[2],String[3])" />
</xsl:variable>
第3个字符串是否存在并不重要。这是一种破解,我实际上硬编码了我的代码,在每个代码之间添加'###',这样我就可以运行'contains($ strings,'### Keyword'),这基本上是检查是否有任何字符串以特定字符串开头。