영화와 해당 액터를 저장하는 XML 파일이 있습니다.XPath 1.0을 사용하여 특성을 기반으로 고유 한 요소 값을 선택하십시오.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="index.xsl"?>
<movies
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="movies.xsd">
<movie movieID="1">
<actors>
<actor actorID="1">
<name link="hello">Bob</name>
</actor>
<actor actorID="2">
<name link="hello">Mike</name>
</actor>
</actors>
</movie>
<movie movieID="2">
<actors>
<actor actorID="1">
<name link="hello">Bob</name>
</actor>
<actor actorID="2">
<name>Daniel</name>
</actor>
</actors>
</movie>
</movies>
위의 코드에서 알 수 있듯이 각각 2 개의 "액터"하위 요소가 포함 된 2 개의 "동영상"요소가 있습니다. 4 개의 "name"자식 요소 중 3 개가 "link"특성을 포함합니다. Bob, Mike, Bob
속성 "link"가 포함 된 액터의 이름 만 표시하려면 다음 XSLT 코드를 사용하고 있습니다.
<xsl:template match="/">
<xsl:text>Actors: </xsl:text>
<xsl:apply-templates select="/movies/movie/actors/actor/name[@link]"/>
</xsl:template>
<xsl:template match="name[@link]">
<xsl:value-of select="." />
<xsl:element name="br" />
</xsl:template>
내가 얻을 출력 :
Bob
Mike
Bob
당신은 이름이 "밥"을 볼 수 있듯이 두 번 반복합니다.
<xsl:template match="[not(@name[@link] = preceding::@name)]">
<xsl:template match="not(@name[@link] = preceding::@name)">
<xsl:template match="not(@name[@link] = preceding-sibling::@name)">
그들 모두는 페이지가 오류를 표시했다 : 나는 다음의 XPath 1.0 쿼리를 시도
속성 "링크"에만 고유 한 배우의 이름을 표시합니다.
완벽합니다. 고유 한 요소를 정의하는보다 효율적인 방법을 알고 있으면 좋습니다. 고맙습니다! – Alex