2013-08-19 4 views
2

XSL 파일을 편집하는 중 요소 이름을 가져 오는 데 문제가 있습니다.XSLT에서 요소 이름을 가져 오는 방법

../../name()을 제외한 모든 항목이 작동합니다. 내가 무엇을 노력하고있어 요소의 이름을 얻을 수있다. 그 아래의 모든 요소는 동일한 요소의 특성을 성공적으로 가져옵니다. 따라서 ../../@name (등등)이 작동한다는 사실은 ../../name()으로 무엇을하려고하는지 명확히해야합니다. 나는 성공적으로 ../../@name와 (예) "확장 된 내용을"얻고

<form name="Extended Content" alias="CONTENT" hide="notes" nocompose="true" noquery="true" publicaccess="false" designerversion="8"> 

:하지만,

<tr> 
<td><xsl:value-of select="../../name()" /></td> 
<td><xsl:value-of select="../../@name"/></td> 
<td><xsl:value-of select="../../@alias"/></td> 
<td><xsl:value-of select="../../@comment"/><xsl:text>...</xsl:text></td> 
<td><xsl:value-of select="../../dxl:wassignedby" /></td> 
<td><xsl:apply-templates select="."/></td> 
</tr> 

XML의 조각 (경우에 당신이 내가 무슨 말을 시각화하는 데 도움이)입니다 ../../name()으로 "양식"을받지 못했습니다.

+0

당신은 "양식을 얻지 못하고 있습니다"... "- 당신은 무엇을 얻고 있습니까? 템플릿의 실제 출력을 보여주십시오. –

+0

내가 가지고있는 것에 나는 오류가 있습니다. – iconoclast

답변

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

는 XPath는 2.0에서 작동 여기서 모두의 XPath 1.0 및 2.0

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

작품. 그래서 당신은 XPath 1.0을 실행 중이며 후자를 사용해야합니다.

+1

XPath 주소는 "/"로 끝날 수 없으므로'name (../../)'이 있으면'name (../ ..)'이 필요합니다. –

+0

@ G.KenHolman Thx는 조언을 위해 복사 및 붙여 넣기 후에 생각할 때마다 두 번째로 사용해야합니다.) – hek2mgl

+0

굉장합니다. 그것은 완전히 일을 깨끗이합니다. – iconoclast

2

name()에 매개 변수를 전달해야합니다. 이름으로 전달할 매개 변수는

name(.) 

입니다. 마침표는 현재 노드를 의미합니다. 더 잘 설명하는 링크가 있습니다. Is there an XSLT name-of element?

+0

도움을 주셔서 감사합니다. 나는'name()'의 존재를 알고 있었지만 제대로 작동하지는 못했다. 그래서 그것은 중복이 아닙니다. – iconoclast

+0

@iconoclast ok 제거했습니다. –

+0

@JackThor 다른 질문에 대한 링크를 포함시키는 것이 정말 좋았다고 느꼈습니다. 그 질문에 대한 답변을 읽는 것이 대개 요소 이름을 얻는 가장 좋은 방법 인 'local-name'을 언급했기 때문입니다. 그래서 나는 그것에 관한 정보를 포함하거나 링크를 다시 추가 할 것입니다. –

관련 문제