在条件下将XSL属性保存到JavaScript数组

在条件下将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

我是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="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() &gt; 1">, </xsl:if>
  <xsl:value-of select="concat(&quot;'&quot;, @name, &quot;'&quot;)"/>
</xsl:for-each>
<xsl:text>];</xsl:text>