에서 XSLT와 목록을 만들어 다음과 같은 XML 파일이 있습니다두 개의 XML 문서
<root>
<sub type="print">print</sub>
<sub type="email">email</sub>
</root>
내가 각을 일치시킬 다음 목록에 최대 입력 :
<types>
<type>email</type>
<type>broadcast</type>
<type>mobile</type>
<type>print</type>
<type>web</type>
</types>
으로이 XSLT 사용을 " doc "은 xml이고 위의 목록의"types "는 매개 변수로 전달됩니다.
<xsl:stylesheet
xmlns = "http://www.w3.org/1999/xhtml"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
version="2.0">
<xsl:output method="xhtml" indent="yes" />
<xsl:param name="doc"/>
<xsl:param name="types"/>
<xsl:template match="/">
<xsl:for-each select="$doc//sub">
<xsl:variable name="count">
<xsl:number value="position()" format="1"/>
</xsl:variable>
<ul>
<xsl:for-each select="$types//type">
<xsl:choose>
<xsl:when test="$doc//sub[$count]/@type = text()">
<li>
<b>
<xsl:value-of select="$doc//sub[$count]/@type"/> - <xsl:value-of select="text()"/>
</b>
</li>
</xsl:when>
<xsl:otherwise>
<li>
<xsl:value-of select="$doc//sub[$count]/@type"/> - <xsl:value-of select="text()"/>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</ul>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
이렇게하면 순서가 지정되지 않은 목록 f 또는 내 xml의 각 하위 인쇄 유형에서 하위 및 다음 각 유형. 하위와 유형이 일치하면 굵게 표시되어야합니다. 나는이 원하는 :
<ul>
<li>print - email</li>
<li>print - broadcast</li>
<li>print - mobile</li>
<li><b>print - print</b></li>
<li>print - web</li>
</ul>
<ul>
<li><b>email - email</b></li>
<li>email - broadcast</li>
<li>email - mobile</li>
<li>email - print</li>
<li>email - web</li>
</ul>
을하지만이 얻을 : 도움 어떠한 모든
<ul>
<li><b>print email - email</b></li>
<li>print email - broadcast</li>
<li>print email - mobile</li>
<li><b>print email - print</b></li>
<li>print email - web</li>
</ul>
<ul>
<li><b>print email - email</b></li>
<li>print email - broadcast</li>
<li>print email - mobile</li>
<li><b>print email - print</b></li>
<li>print email - web</li>
</ul>
감사합니다.
감사합니다! 유형을 "sub"에서 변수로 설정 한 다음 유형을 "types"에서 "."으로 구분합니다. 승자였습니다. 매력처럼 일했습니다! – SpockJenkins
@ user972029 - 대단히 환영합니다! +1 좋은 질문입니다. –