나는 이것에 대한 답을 알고 있다고 생각하지만, 나는이 사실을 올바르게 이해하고 있다는 확인을 원한다.apply-templates가 명시 적으로 호출되지 않으면 XSLT가 현재 노드의 자식 노드를 처리하지 않는 것이 맞습니까?
XSLT 템플릿이 일치하여 실행될 때 은 현재 노드의 하위 노드 (일치하는 템플릿이 실행되는 노드 현재)가 기본적으로 처리되지 않습니다. "apply-templates"를 호출하여 프로세서가 현재 (일치하는) 노드의 하위 노드로 이동하도록해야합니다. 동안
<person>
<firstName>Deane</firstName>
<lastName>Barker</lastName>
</person>
변환이, XSLT 프로세서가 "사람"요소에서 시작 :
이 XML을 고려하십시오. 템플릿을 찾으면 템플릿을 실행하지만 템플릿을 찾기 위해 "firstName"및 "lastName"요소로 내려갑니다. "apply-templates"가 "person"에 대한 템플릿에서 명시 적으로 호출되는 경우에만 수행됩니다. 이 경우<!-- Template #1 -->
<xsl:template match="person">
I found a "person" element
</xsl:template>
<!-- Template #2 -->
<xsl:template match="firstName">
I found a "firstName" element
</xsl:template>
, 올바른 실행되지 않습니다 # 2 틀 :
이 XSL을 고려? XML 문서의 순회는 "person"엘리먼트를 치고, Template # 1을 찾고, 실행 한 다음 결코 "person"의 자식으로 내려 가지 않습니다. 나는이에 대한 첫 번째 템플릿을 변경하는 경우-
<!-- Template #1 -->
<xsl:template match="person">
I found a "person" element
<xsl:apply-templates select="firstName"/>
</xsl:template>
만 다음 # 2 실행하는 서식합니다. 내가 이것을 정확히 이해하고 있는가?
Nitpicking :'@ xsl : apply-templates />'(@select없이) 템플릿이 요소가 아닌 모든 하위 * 노드 *에 적용됩니다 (자식으로 취급되지 않는 속성 제외). – Tomalak
이 버그 (http://meta.stackexchange.com/questions/18360/vote-too-old-to-be-changed-but-i-havent-voted)로 인해 답변을 얻을 수 없습니다. . 죄송합니다. – Tomalak
고마워, 나는 실수했다. –