ソースのXML:ため、それぞれ使用してXSL:for-eachまたはtemplatesはこのソースXMLをより良く解決しますか?
<A>
<B>
<Yes>Y</Yes>
<Address>
<Type>Present</Type>
<DoorNo>354</DoorNo>
<Line>ABCD</Line>
</Address>
<Address>
<Type>Permanent</Type>
<DoorNo>354</DoorNo>
<Line>ABCD</Line>
</Address>
</B>
<B>
<Yes>N</Yes>
<Address>
<Type>Present</Type>
<DoorNo>354</DoorNo>
<Line>ABCD</Line>
</Address>
<Address>
<Type>Permanent</Type>
<DoorNo>354</DoorNo>
<Line>ABCD</Line>
</Address>
</B>
<D>
<Address>
<Type>Office</Type>
<DoorNo>354</DoorNo>
<Line>ABCD</Line>
</Address>
</D>
</A>
マイコード:
<Address>
<xsl:for-each select="A/B[Yes = 'Y']">
<xsl:for-each select="Address">
<xsl:if test="DoorNo = ../../D/Address/DoorNo">
<xsl:value-of select="Line"/>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</Address>
出力は次のようになります。私の場合は、条件、A/BのDoorNoと同様に
<Address>
ABCD
</Address>
/AddressはA/D/AddressのDoorNoと等しく、タグ値はA/Bの 'Y'でなければならず、出力は次のようになります。
現在のアドレスと恒久的なアドレスが同じ場合、アドレスの1つのみを出力に表示する必要があります。 else IF条件が満たされていなければなりません。
2日からfor-eachをCount変数で再帰的テンプレートに置き換えようとしていますが、1つのADDRESSを取得できません。
私は次のように再帰的テンプレートでこれを試しています。 同じDoorNo値を持つアドレスが '1'より大きい場合Count < = 1が機能し、First Addressの行のみを表示する必要があります。複数のアドレス値は避けなければなりません。
これを解決しようとしている人にお越しいただき、ありがとうございました 解決してくれてありがとうございました。
誤って書式設定したため、後者のコードサンプルが表示されません。 –
希望の出力を見せてくれました。実際の出力は何ですか? '
ABCDABCD'? – LarsH