0

次のような 2 つのノード リストがあります。

最初のリスト:

<WebAddresses>
  <item>
   <AddressID>01</AddressID>
   <Street>Street01</Street>
   <State>Idaho<State>
   <Country>US</Country>
  <item>
  <item>
   <AddressID>02</AddressID>
   <Street>Street02</Street>
   <State>Kentucky<State>
   <Country>US</Country>
  <item>
</WebAddresses>

2 番目のリスト

<Addresses>
  <row>
    <WebID>02</WebID>
    <Line1>Line1</Line1>
    <Line2>Line1</Line2>
    <State>Lousiana</State>
    <Country>US</Country>
  </row>
  <row>
    <WebID>03</WebID>
    <Line1>Line1</Line1>
    <Line2>Line2</Line2>
    <State>California</State>
    <Country>US</Country>
  </row>
</Addresses>

私のxsltには

<xsl:variable name="webAddr" select="$webXML\\WebAddresses"/>
<xsl:variable name="appAddr" select="$AppXML\\Addresses"/>

WebID出力リストにはWebID=03. 私は次のことを試しました:

 <xsl:variable name="leftX" select="$appAddr[not(WebID=$webAddr/AddressID)]"/>

ただし、データをフィルタリングするのではなく、変更されていないappAddrリストを返します。私は.netコードでそれを行うことができますが、xsltの方法を探していました. 助けてください。

4

1 に答える 1

0

これを機能させるには、いくつかのことを行う必要があります。

まず、変数webAddrappAddr変数に無効な XPath が含まれています。これらを次のように変更します。

<xsl:variable name="webAddr" select="$webXML//WebAddresses"/>
<xsl:variable name="appAddr" select="$AppXML//Addresses"/>

(または、必要な XPath が正確にわかっている場合は、無駄な//軸を避けるようにしてください)。

leftX次に、変数を次のように変更します。

<xsl:variable name="leftX" select="$appAddr/row[WebID = $webAddr/item/AddressID)]"/>

このテンプレートは、子の値が の孫のいずれかと等しい値を持つすべての<row>要素を削除します。<WebID><AddressID><WebAddresses>

于 2013-06-11T13:44:16.030 に答える