В XSLT как выбрать значение из узла, используя идентификаторы, в которых есть несколько одинаковых узлов? - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь выбрать значения из нескольких узлов с одинаковыми именами, но я не могу создать переменные или операторы IF, которые являются успешными.

В приведенном ниже примере я пытаюсь выяснить, как создать оператор IF в XSLT, в котором говорится, что IF HouseID и HouseNo из узла Houses совпадают с HouseID и HouseNo из узла Streets, а затем показывают цену соответствующего узел.

Ниже приведен пример XML:

<pi:Houses>
 <pi:HouseID>1111</pi:HouseID>
 <pi:HouseNo>012</pi:HouseNo>
 <pi:Price>100000</piPrice>
</pi:House>

<pi:Streets>
 <pi:HouseID>1111</pi:HouseID>
 <pi:HouseNo>012</pi:HouseNo>
 <pi:Price>100000</piPrice>
</pi:Streets>

<pi:Houses> 
 <pi:HouseID>2222</pi:HouseID>
 <pi:HouseNo>098</pi:HouseNo>
 <pi:Price>9000000</piPrice>
</pi:House>

<pi:Streets>
 <pi:HouseID>2222</pi:HouseID>
 <pi:HouseNo>098</pi:HouseNo>
 <pi:Price>9000000</piPrice>
</pi:Streets>

В настоящее время я пытаюсь использовать

<xsl:if test ="pi:Houses/pi:HouseID = pi:Streets/HouseID">
<xsl:value-of select="pi:Houses/pi:Price"/>
</xsl:if>

Но это дает мне два значения. Я пытался использовать оператор position (), но не радость.

Любые предложения будут великолепны, спасибо!

1 Ответ

0 голосов
/ 22 января 2020

Я решил эту проблему в прошлом, используя переменные.

В этом примере я вырезал пространства имен, чтобы было легче читать

<xsl:for-each select='//Streets'>
  <xsl:variable name='id' select='HouseID'/>

  <p>
    Street HouseID:<xsl:value-of select='$id'/><br/>
    House Price: <xsl:value-of select='../Houses[HouseID=$id]/Price'/>
  </p>

</xsl:for-each>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...