Объединение переменной для пути - PullRequest
0 голосов
/ 29 ноября 2018

Как объединить переменную с поиском пути

Вот как выглядит xml

<FIELD Name="User1Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User2Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User3Transmission.DocumentID" Value=""></<FIELD
<FIELD Name="User4Transmission.DocumentID" Value=""></<FIELD

Обновление: после тщательной проверки я считаю, что xml выглядит следующим образом

<FIELD>
  <NAME>User1Transmission.DocumentID</NAME>
  <VALUE></VALUE
</FIELD>
<FIELD>
  <NAME>User2Transmission.DocumentID</NAME>
  <VALUE></VALUE
</FIELD>

Хотя это только пример, User3,4 также не может существовать.Поэтому я пытаюсь найти информацию в соответствии с Пользователем.

Я точно знаю, что могу получить информацию для каждого Пользователя таким образом

<DocumentID><xsl:value-of select="//FIELD[NAME='User1Transmission.DocumentID']/VALUE"/></DocumentID>

Однако я не знаю,значение всегда будет там.

Я создал переменную count, которая позволяет мне выбирать User1, User2 и т. д., но я не могу объединить переменную с путем.

Iпопробуйте следующее

<DocumentID><xsl:value-of select="//FIELD[NAME='User[$count]Transmission.DocumentID']/VALUE"/></DocumentID>
<DocumentID><xsl:value-of select="//FIELD[NAME='concat('User',$count,'Transmission.DocumentID')]/VALUE"/></DocumentID>

Но все они кажутся неудачными.

1 Ответ

0 голосов
/ 29 ноября 2018

Рассмотрим следующий пример:

XML

<FIELDS>
    <FIELD>
      <NAME>User1Transmission.DocumentID</NAME>
      <VALUE>100</VALUE>
    </FIELD>
    <FIELD>
      <NAME>User2Transmission.DocumentID</NAME>
      <VALUE>200</VALUE>
    </FIELD>
    <FIELD>
      <NAME>User3Transmission.DocumentID</NAME>
      <VALUE>300</VALUE>
    </FIELD>
</FIELDS>

XSLT 1.0

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:param name="user-number" select="2"/>

<xsl:template match="/FIELDS">
    <result>
        <xsl:value-of select="FIELD[NAME=concat('User', $user-number, 'Transmission.DocumentID')]/VALUE" />
    </result>
</xsl:template>

</xsl:stylesheet>

Результат

<?xml version="1.0" encoding="utf-8"?>
<result>200</result>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...