노드를 선택하려고 할 때 xsl에서 변수를 어떻게 사용합니까?

StackOverflow https://stackoverflow.com/questions/5374

  •  08-06-2019
  •  | 
  •  

문제

나는 이것이 Google에게는 쉬운 일이라고 생각했지만 성공하지 못했습니다.

변수에 속성 ​​값(지금까지는 쉬움)을 할당한 다음 해당 변수를 사용하여 해당 속성 값을 기반으로 다른 노드를 선택하고 싶습니다.

예:

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id='{@myId}']/@Name />

작동하지 않습니다.{@myId}를 변수에 있는 값으로 바꾸면 올바른 노드를 찾지만 이렇게 하면 아무것도 생성되지 않습니다.뭔가 빠진 것이 확실합니다. 아니면 다른 방법이 있을 수도 있습니다.

컨텍스트는 동일한 ID 값을 공유하는 다른 최상위 노드 아래에 관련 데이터가 있으므로 내 템플릿에서 관련 노드를 가져와야 한다는 것입니다.

도움이 되었습니까?

해결책

좋아, 마침내 알아냈어.정말 어리석은 문제입니다. 따옴표와 중괄호를 생략하면 되었습니다.내가 그 때 중 하나 생각 내가 이미 그것을 시도했다는 것입니다.:D 아, 그리고 첫 번째 예에서 @myId를 잘못 입력했는데, 코드는 실제로 $myId였습니다.

<xsl:variable name="myId" select="@id" />
<xsl value-of select="//Root/Some/Other/Path/Where[@id=$myId]/@Name" />

다른 팁

변수($variable)와 속성 값 템플릿을 사용하여 일부 속성에 XPath 표현식을 넣을 수 있는 것과 혼동하신 것 같습니다.

<newElement Id="{@Id}"/>

분명히 결합될 수 있으므로 속성 값 템플릿에 다음과 같은 변수를 포함할 수 있습니다.

<newElement Id="{$myId}"/>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top