У меня возникли трудности с получением xsl: apply-template select, чтобы выбрать только нужные элементы. Каждая из следующих форм для элемента узла действительна.Сложность записи XPATH для выбора правильных узлов в XSLT
<?xml version="1.0" encoding="utf-8"?>
<root>
<node>unimportant</node>
<node>
<value>unimportant</value>
<asdf>important</asdf>
</node>
<node>
<value>unimportant</value>
<value>unimportant</value>
<qwerty>important</qwerty>
</node>
</root>
Я хочу выбрать только узлы с «важным» контентом и избегать других. Имена узлов с важным контентом (asdf & qwerty) мне неизвестны и не могут быть частью логики преобразования.
Вот XSLT:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="node">
<xsl:apply-templates select="node()[not(self::value)]"/>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
А вот выход:
<?xml version="1.0" encoding="utf-8"?>
<root>unimportant
<asdf>important</asdf>
<qwerty>important</qwerty>
</root>
Ожидаемые результаты будут следующими
<?xml version="1.0" encoding="utf-8"?>
<root>
<asdf>important</asdf>
<qwerty>important</qwerty>
</root>
Преобразование правильно выбрать нужные элементы , но он также собирает несущественный контент из первого элемента узла. Как построить инструкцию select, которая позволяет избежать выбора этого контента?
ли неважных имена узлов, известные Y ОУ? – Joshua
Я не думаю, что вы достаточно хорошо объяснили проблему. Вы дали нам пример, и вы рассказали нам, как следует обрабатывать этот пример, но вы не дали нам общих правил. Мы не знаем, какая из строк в вашем примере (значение, asdf, qwerty, important, notimportant) являются буквальными строками, которые появляются в вашем реальном XML, и которые являются заполнителями для более общего содержимого. –
@ Майкл Кэй. Да, в этой проблеме есть гораздо больше, чем в примере. Я упорно трудился, чтобы отогнать эту проблему до минимального necessary.Thankfully hr_117 был в состоянии помочь мне. –