다음은 ID가 승인 된 ID 목록 내에 있는지 확인하고 출력에서 "표시 이름"을 사용하는 간단한 스타일 시트입니다.
<root>
<entry>
<name>Red to Blue</name>
<travel>15</travel>
<delay>7</delay>
</entry>
<entry>
<name>Purple to Green</name>
<travel>17</travel>
<delay>6</delay>
</entry>
</root>
편집 : 당신이 XSL 1.0와 함께 붙어있는 경우 :
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:variable name="desired-ids">rd_bl="Red to Blue" pu_gr="Purple to Green"</xsl:variable>
<xsl:template match="root">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="DATA">
<xsl:variable name="current-id" select="ID/text()" />
<xsl:variable name="id-with-equals" select="concat($current-id, '=')" />
<xsl:if test="contains($desired-ids, $id-with-equals)">
<xsl:variable name="id-with-open-quote" select="concat($id-with-equals, '"')" />
<xsl:variable name="display-name" select="substring-before(substring-after($desired-ids, $id-with-open-quote), '"')" />
<entry>
<name>
<xsl:value-of select="$display-name" />
</name>
<travel>
<xsl:value-of select="travel" />
</travel>
<delay>
<xsl:value-of select="delay" />
</delay>
</entry>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
당신이 볼 수 닫는 태그 오류를 수정 한 후 예를 들어, XML을 사용하여
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:variable name="desired-ids">
<id name="rd_bl">Red to Blue</id>
<id name="pu_gr">Purple to Green</id>
</xsl:variable>
<xsl:template match="root">
<root>
<xsl:apply-templates />
</root>
</xsl:template>
<xsl:template match="DATA">
<xsl:variable name="current-id" select="ID/text()" />
<xsl:if test="$desired-ids/id[@name=$current-id]">
<entry>
<name>
<xsl:value-of select="$desired-ids/id[@name=$current-id]" />
</name>
<travel>
<xsl:value-of select="travel" />
</travel>
<delay>
<xsl:value-of select="delay" />
</delay>
</entry>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
출력 이것은 훨씬 덜 우아하고, 어색한 문자열 일치를 사용하여 유효한 ID를 확인하고 표시 이름을 추출합니다.
누군가에게 전체 스타일 시트를 작성하도록 요청합니까? –
전혀 아닙니다 - 나머지 스타일 시트가 필요합니다. 제 XSL 경험은 제한되어 있습니다. 각 노드를 처리하기 위해 XSL : for-each를 사용하는 것에 익숙합니다. 몇 가지 값을 선택하고 표시 이름을 추가하는 방법이 손실되었습니다. 몇 가지 변수와 루프를 적용하려고했지만 올바른 방향으로 지적해야합니다. – ClintHend
XSL 2.0을 사용할 수 있습니까? –