2011-12-02 2 views
0

도달하지 못했다코드 나는 다음 XSL 코드가

<ROOT> 
    <MainNode> 
     <NAMES> 
      <NAME></NAME> 
     </NAMES> 
    </MainNode> 
</ROOT> 

어떤 이유가 될 수있다 : 나는 <body></body>

내 XML 구조 빈 HTML입니다 있나요?

답변

1

시도 : 문서 루트에서

<xsl:apply-templates select="//Name" /> 

또는 지정 노드 :

<xsl:apply-templates select="ROOT/MainNode/Names/Name" /> 
+0

하지만 – Ksice

+0

@Ksice 도움이되지 않았다 그런 – abatishchev

+2

의 XPath는 대소 것을 기억 XPath는 (첫 번째 옵션을) 시도 민감한. 케이싱이 수정되면이 두 가지 해결책 모두 작동해야합니다. –

2

문제는 당신이 apply-templates를 호출하는 범위로한다. 루트 템플릿에 있습니다. 즉, 현재 컨텍스트 (XML 내의 위치)가 루트 요소입니다. selectapply-templates과 함께 사용하면 XPath는 현재 컨텍스트/위치를 기반으로합니다.

귀하의 경우 루트에있는 모든 NAME 요소에 템플릿을 적용하고 있습니다. 존재하지 않으므로 NAME 템플릿이 절대로 호출되지 않습니다. 이미 제안 된 것처럼, 다음은 구조, 맞춤법 가정 일을해야하고, 총액이 예제에서 올바른 :

<xsl:apply-templates select="ROOT/MainNode/NAMES/NAME" /> 

다른 방법으로는 절대 경로처럼 작동,이 XPath는 문서의 아무 곳에서 작동합니다 문서의 루트에서 시작 : 나는 ROOT/MainNode/이름/이름을 시도한

<xsl:apply-templates select="/ROOT/MainNode/NAMES/NAME" />