Найдите и выберите тег xml, используя код xslt.

Я новичок в программировании xslt. Мне нужна помощь, чтобы получить фрагмент кода для моего требования,

У меня есть файл xml, который похож на

 <Tags>
 <tag>
 <value>abc</value>
 </tag>
 <tag>
 <value>def</value>
  </Tags>

Текст внутри тегов значений — это значения определенных тегов, которые будут присутствовать во входящем запросе xml.

Теперь мне нужен код xslt, который будет искать, есть ли у входящего xml какие-либо теги, просматривая список тегов, которые присутствуют в образце xml, который я предоставил. Если тег есть, я хочу сохранить значение этого тега в переменной.

Спасибо


person anky316    schedule 12.10.2015    source источник
comment
Покажите нам образец входных данных, которые вы хотите обработать, и примеры значений, которые вы хотите сохранить в переменной. Также покажите нам XSLT, который вы пробовали. С помощью //* вы выбираете все элементы в документе, с помощью doc('tags.xml')/Tags/tag/value вы выбираете все value элементы в показанном вами примере тега (при условии, что имя файла tags.xml') and then //*[local-name() = doc('tags.xml')/ Теги/тег/значение] выбирает все элементы с локальным именем, которые перечислены в документе tags.xml.   -  person Martin Honnen    schedule 13.10.2015
comment
@Martin Honnen Привет, у меня есть xml со списком тегов. ‹Tags› ‹tag› ‹value›CustomerLookup‹/value› ‹/tag› ‹tag› ‹value›RefrenceNumber‹/value› ‹/tag› ‹/Tags›, где CustomerLokup и RefrenceNumber — имена тегов. Я хочу проверить, доступны ли какие-либо из этих тегов во входящем запросе (случайные запросы xml). Если какой-либо из тегов присутствует, чем Encrpyt, этот тег и отправьте исходный входящий xml с зашифрованным тегом вперед. Спасибо   -  person anky316    schedule 14.10.2015
comment
Ну, вы уже показали один фрагмент в своем вопросе. Если вы хотите добавить дополнительные фрагменты, отредактируйте свой вопрос и отметьте их должным образом. И покажите нам образец random.xml и как он должен выглядеть после шифрования тегов, чтобы мы знали, какой результат вы хотите создать.   -  person Martin Honnen    schedule 14.10.2015


Ответы (1)


Я сделал XML-фрагмент действительным XML и сохранил его здесь: http://stamm-wilbrandt.de/en/forum/Tags.xml

В приведенной ниже таблице стилей используется возможность сравнения XPath между строковым значением ("name()" текущего узла) и набором узлов (все ‹value> в Tags.xml):

$ coproc2 Tags.xsl <(echo '<d><abc/></d>') http://dp1-l3.boeblingen.de.ibm.com:2223
abc
$ 
$ cat Tags.xsl 
<!DOCTYPE xsl:stylesheet [ 
  <!ENTITY url "http://stamm-wilbrandt.de/en/forum/Tags.xml"> 
  <!ENTITY LF "<xsl:text>&#10;</xsl:text>">
]>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
>
  <xsl:output omit-xml-declaration="yes" />

  <xsl:variable name="tags" select="document('&url;')" />

  <xsl:template match="/">
    <xsl:for-each select="//*[name()=$tags/Tags/tag/value]">
      <xsl:value-of select="name()" />&LF;
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>
$ 
person HermannSW    schedule 13.12.2015