特定のデータを削除する必要があるXMLドキュメントがあります
xmlドキュメントの構造は次のとおりです。
<a>
<b select='yes please'>
<c d='text1' e='text11'/>
<c d='text2' e='text12'/>
<c d='text3' e='text13'/>
<c d='text4' e='text14'/>
<c d='text5' e='text15'/>
</b>
</a>
<a>
<b select='no thanks'>
<c d='text1' e='text21'/>
<c d='text3' e='text23'/>
<c d='text5' e='text25'/>
</b>
</a>
<a>
<b select='yes please'>
<c d='text1' e='text31'/>
<c d='text2' e='text32'/>
<c d='text3' e='text33'/>
<c d='text4' e='text34'/>
<c d='text5' e='text35'/>
</b>
</a>
<a>
<b select='no thanks'>
<c d='text4' e='text41'/>
<c d='text3' e='text43'/>
<c d='text5' e='text45'/>
</b>
</a>
これらのサブドキュメントを特定したら、d attribute = 'text1'およびd attribute = 'text4'の/ a/b要素グループのみを選択する必要があり、d属性値 'でe属性の値を取得したいtext5 '
それが明確であることを願って
乾杯
DD
このXPathを使用できます。
//a[b/c/@d = 'text1' and b/c/@d = 'text4']/b/c[@d = 'text5']/@e
1番目と3番目のe='text15'
のe='text35'
とa/b
を選択します
XSLT:
<xsl:template match="//a[b/c/@d = 'text1' and b/c/@d = 'text4']/b/c[@d = 'text5']">
<xsl:value-of select="@e"/>
</xsl:template>
これらのサブドキュメントを特定したら、d attribute = 'text1'およびd attribute = 'text4'の/ a/b要素グループのみを選択する必要があり、d属性値 'でe属性の値を取得したいtext5 '
それが明確であることを願って
はい、XPathへの翻訳がほとんど機械的であることは明らかです
(: those /a/b element groups :) a/b
(: that have d attribute = 'text1' :) [c/@d='text1']
(: and d attribute = 'text4' :) [c/@d='text4']
(: and .. i want to get the value of the e attributes
with d attribute value 'text5' :) / c[@d='text5'] / @e
単一のテンプレートを使用して必要なグループに一致させると、必要な属性の値を取得できます。
<xsl:template match="/*/a/b[c[@d='text1'] and c[@d='text4']]">
<xsl:value-of select="c[@d='text5']/@e"/>
</xsl:template>
仮定:
<root>
<a>
<b select='yes please'>
<c d='text1' e='text11'/>
<c d='text2' e='text12'/>
<c d='text3' e='text13'/>
<c d='text4' e='text14'/>
<c d='text5' e='text15'/>
</b>
</a>
<a>
<b select='no thanks'>
<c d='text1' e='text21'/>
<c d='text3' e='text23'/>
<c d='text5' e='text25'/>
</b>
</a>
<a>
<b select='yes please'>
<c d='text1' e='text31'/>
<c d='text2' e='text32'/>
<c d='text3' e='text33'/>
<c d='text4' e='text34'/>
<c d='text5' e='text35'/>
</b>
</a>
<a>
<b select='no thanks'>
<c d='text4' e='text41'/>
<c d='text3' e='text43'/>
<c d='text5' e='text45'/>
</b>
</a>
</root>
出力はtext15
およびtext35
。
この単一のXPath式を使用:
/*/a/b[c/@d='text1' and c/@d='text4']
/c[@d='text5']
/@e