2013-04-17 2 views
1

XSL을 처음 사용하고 XSLT에서 속성 값을 추출하는 솔루션을 찾는 데 시간을 투자했습니다. 나는 모든 item.nameshowItem="option1"을 얻을 자바 스크립트 배열 또는 객체에 저장할조건부 자바 스크립트 배열에 XSL 속성 저장

<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> 

: 같은

내 XML 보인다.

시도했지만 작동하지 않습니다.

<xsl:for-each select="itemList/item[@showItem = 'option1']"> 
    myItem='<xsl:value-of select="//itemList/item/@name"/>'); 
</xsl:for-each> 

누구에게도 해결책이 있습니까?

답변

1

문맥이 <xsl:for-each> 안에 있으며, <itemlist> 자손이 없으므로 선택 사항은 비어 있습니다.

<xsl:for-each select="itemList/item[@showItem = 'option1']"> 
    myItem = '<xsl:value-of select="@name" />' ; 
</xsl:for-each> 
1
<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> 

출력 var myItem = ['mydoc1', 'mydoc1', 'mydocWhatever'];을해야한다.

+0

도움 주셔서 감사합니다. 위 코드를 시도했지만 코드에서 작동하지 않습니다. 다음을 사용하여 모든 이름 배열을 가져올 수 있습니다. myItem = ''; 그러나 조건을 추가 한 후 myItem = ''; myItem이 비어 있습니다. 아이디어가 있으십니까? –

+0

프리 프로세서로 인해 발생하는 문제이며, "showItem"속성이 필터링되었습니다. 그것이 내가 그것을 볼 수없는 이유입니다. –