2016-12-08 1 views
0

xslt의 간단한 예를 만들었습니다. 태그 이름을 h2에 표시하고 싶습니다. xslt를 사용하여 태그 이름을 표시하는 방법? 그것은 나에게 오류를 제공XSLT에서 태그 이름을 가져 오는 방법은 무엇입니까?

Link 내가이

<!--h1><xsl:value-of select="abc/p/name(.)"/></h1--> 

을 사용 :

여기 내 코드입니다. 왜?

예상 출력 :

"P" (ABC 태그 안에 제 태그) 모두

+0

코드를 외부 링크가 아닌 질문 자체에 게시하십시오. –

답변

1

귀하의 시도 :

<xsl:value-of select="abc/p/name(.)"/> 

이 작동을 프로세서가 XSLT 2.0을 지원 제공. XSLT 1.0에서

, 당신은 할 필요가 : 또한 물론, XSLT 2.0에서 작동

<xsl:value-of select="name(abc/p)"/> 

.

+0

감사합니다 ... !! – user944513

+0

전화 기능이 작동하지 않는 이유를 알려주십시오. https://plnkr.co/edit/TN1BN5Yao5Z63RDcBGlN?p=preview – user944513

+0

별도의 질문을 게시하는 것이 좋습니다. 힌트 :'xsl : call-template'은 입력 내용과 일치하는 템플릿에 있어야합니다 .. –

0

먼저하십시오 <xsl:template match="text()" /> 불필요한 출력을 방지하도록 추가.

그러면 재미있는 부모 노드이기 때문에 첫 번째 템플릿을 abc과 일치하도록 변경합니다. 노드의 자식이 필요하면 abc/*을 사용하십시오. 그런 다음 템플릿은 abs/pabc/catalog과 일치합니다. 하지만 첫 아이 만 원해, 그렇지? 따라서 abc/*[1]을 사용하십시오. 이 경우는 abc/p과 일치합니다. 이제 name(.) 또는 local-name()을 사용할 수 있습니다.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="abc/*[1]"> 
    <html> 
     <body> 
     <h1><xsl:value-of select="local-name()"/></h1> 
     </body> 
    </html> 
    </xsl:template> 

    <xsl:template match="text()" /> 

</xsl:stylesheet> 

귀하의 XML 파일

<abc> 
    <p test='ravi'>test123</p> 
    <catalog> 
     <cd> 
      <title>Empire Burlesque</title> 
      <artist>Bob Dylan</artist> 
      <country>USA</country> 
      <company>Columbia</company> 
      <price>10.90</price> 
      <year>1985</year> 
     </cd> 
    </catalog> 
</abc> 

이 읽기 ​​: https://stackoverflow.com/a/585290/5413817

+0

이'의 용도는 무엇입니까? ' – user944513

+0

왜 원치 않는 오류가 발생합니까? 이 줄이 없으면'' – user944513

+0

tamplate는 이전에 비교할 수없는 모든 것을 일치시킵니다. 그것은 switch-case에서'default'의 일종입니다. – Marcus

관련 문제