私は以下の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のような相対パスを使いたいです。
私は以下のコードを持っていますが、動作しません。
<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'要素なら、私の2つの提案は' MpGroupItem'要素の 'Name'子をそれぞれ選択するように移動するように働くようです。私は誰も '/ descendant-or-self :: node()/'を意味する)を使って親軸を4回上に移動してから子にアクセスするのを見たことがない祖先軸を使用し、 'MeasureItem'要素から親軸を使用したい場合、' ../../../../ Name/'が行うべきです。 –