在条件下将XSL属性保存到JavaScript数组
我是XSL新手,花了数小时寻找从XSLT中提取属性值的解决方案 我的XML看起来像:在条件下将XSL属性保存到JavaScript数组,javascript,arrays,xslt,Javascript,Arrays,Xslt,我是XSL新手,花了数小时寻找从XSLT中提取属性值的解决方案 我的XML看起来像: <itemList> <item id="1" name="mydoc1" showItem="option1">My documents1</item> <item id="2" name="mydoc1" showItem="option2">My documents2</item> <item id="2" name="my
<itemList>
<item id="1" name="mydoc1" showItem="option1">My documents1</item>
<item id="2" name="mydoc1" showItem="option2">My documents2</item>
<item id="2" name="mydoc1" showItem="option1">My documents3</item>
...
<item id="k" name="mydocWhatever" showItem="option1">My documents Whatever</item>
...
<item id="n" name="mydocN" showItem="optionN">My documentsN</item>
</itemList>
有人对此有解决方案吗?您的上下文在
中更改,并且由于没有后代
,因此您的选择为空
<xsl:for-each select="itemList/item[@showItem = 'option1']">
myItem = '<xsl:value-of select="@name" />' ;
</xsl:for-each>
myItem='';
var myItem=[
,
];
应该输出
var myItem=['mydoc1','mydoc1','mydocWhatever']代码>谢谢您的帮助。我尝试了上面的方法,但在我的代码中不起作用。我可以使用以下命令获得所有名称的数组:myItem='';但是在我添加了一个条件之后,myItem='';myItem为空。有什么想法吗?修正了,这是由预处理器引起的,属性“showItem”被过滤掉了。这就是为什么我看不见它。
<xsl:for-each select="itemList/item[@showItem = 'option1']">
myItem = '<xsl:value-of select="@name" />' ;
</xsl:for-each>
<xsl:text>var myItem = [</xsl:text>
<xsl:for-each select="itemList/item[@showItem = 'option1']">
<xsl:if test="position() > 1">, </xsl:if>
<xsl:value-of select="concat("'", @name, "'")"/>
</xsl:for-each>
<xsl:text>];</xsl:text>