2009-10-28 4 views
0
<data> 
<Attributes> 
<Attribute name='somethingelse' value='blah'/> 
<Attribute name='forms'> 
    <List> 
     <String>xform</String> 
     <String>yform</String> 
    </List> 
    </Attribute> 
</Attributes> 
</data> 

이미 속성 수준에서 XSLT를 분석하고, 그래서 내가하는 XForms 2 개 문자열이있는 형태에 대한 선택을 어떻게 바로 <xsl:value-of select="Attribute[@name='somethingelse']/attribute::value"/>XSLT 구문 분석 여러 줄

를 수행하여 값 ㅋ를 얻을 수 있으며, 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> 

을 나는 모든 together.My 목표는 같은 출력하는 것입니다 넣어하는 방법을 잘 모르겠습니다 :

어쩌구하는 XForms를 | yform

답변

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

당신은 또한과 같이 하나의 변수에 할당 할 수있는 :

<xsl:variable name="strings"> 
    <xsl:value-of select="concat(String[1],String[2],String[3])" /> 
</xsl:variable> 

세 번째 문자열이 있는지 여부는 중요하지 않습니다. 이것은 일종의 해킹입니다. 실제로 각 코드 사이에 '###'을 추가하여 코드를 10 개 하드 코딩했기 때문에 'contains ($ strings,'### Keyword ')를 실행할 수 있습니다. 문자열은 특정 문자열로 시작됩니다.