나는 아래 xml을가집니다. XSLT 상대 경로
<MpGroup>
<MpGroupItem>
<MeasurePoints>
<MeasurePointItem>
<Measures>
<MeasureItem>
<Name>xyz</Name>
<Result>2</Result>
</MeasureItem>
<MeasureItem>
<Name>rty</Name>
<Result>2</Result>
</MeasureItem>
</Measures>
<MeasureLimit>
<CurveLimit>
<CurveLimitItem>
<X>1</X>
<Y1>1</Y1>
<Y2>1</Y2>
</CurveLimitItem>
<CurveLimitItem>
<X>2</X>
<Y1>1</Y1>
<Y2>1</Y2>
</CurveLimitItem>
</CurveLimit>
<CurveYUnit></CurveYUnit>
</MeasureLimit>
</MeasurePointItem>
</MeasurePoints>
<Name>ABC</Name>
</MpGroupItem>
나는 MeasureItem 내부이고 거기에서 내가 MpGroup/MpGroupItem/이름의 값을 얻을 필요가
. 나는 xpath를 사용하고 싶지 않다. //../../../../Name과 같은 상대 경로를 사용하고 싶습니다.코드가 xslt 이하이지만 작동하지 않습니다.
<xsl:for-each select="MpGroups/MpGroupItem">
<xsl:for-each select="MeasurePoints/MeasurePointItem">
<xsl:if test="Measures != ''">
<xsl:for-each select="Measures/MeasureItem">
<InputValue><xsl:value-of select="normalize-space(//../../../../Name)"/></InputValue>
</xsl:for-each>
</xsl:if>
<xsl:if test="Measures = ''">
<InputValue><xsl:value-of select="normalize-space(//../../Name)"/></InputValue>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
누구든지 xpath 대신 상대 경로를 사용하는 방법을 알려주십시오. 어떤 도움을 많이 주시면 감사하겠습니다.
예 마틴 당신 말이 맞습니다. 사실 저는 xslt에 익숙하지 않습니다. //../../../../Name과 같은 이름을 사용하여이를 달성 할 수있는 방법이 있습니까? – user3736941
'//../../../../ Name '이라는 다소 이상한 접근법을 왜 사용하고 싶은지 이해할 수 없습니다. 무엇으로 표현하고 싶습니까? 문맥이'MeasureItem' 엘리먼트라면, 두 개의 제안은'MpGroupItem' 엘리먼트의'Name' 자식을 각각 선택하기 위해 탐색하는 작업을하는 것처럼 보입니다. 나는 누구도'/ descendant-or-self :: node() /'를 사용하는'/'을 사용하여 부모 축을 네 번 위로 탐색 한 다음 자식에 액세스하는 것을 본 적이 없다. 조상 축을 사용하고'MeasureItem' 엘리먼트의 부모 축을 사용하고자한다면'../../../../ Name /'이해야합니다. –