i'm отчаянно ищет простое решение моей проблемы и надеется, что кто-то там сможет помочь :).Элемент копирования без содержимого с помощью xslt
Задача: Дано xml-документ, содержащий элементы с атрибутами. Мне нужно выбрать некоторые значения элементов, поместить их перед элементами и затем удалить содержимое элементов с помощью xslt. Здесь идет сложная часть. Мне нужно сделать это только для элементов, которые не, встроенных в некоторый другой элемент, такой как <a>
.
Пример:
<document>
<text>Some text <element attribute="123">"abc"</element> more text.</text>
<text>Lots of text...</text>
<a><element attribute="123">"abc"</element></a>
</document>
Преобразовать в:
<document>
<text>Some text "abc" (<element attribute="123"></element>) more text.</text>
<text>Lots of text...</text>
<a><element attribute="123">"abc"</element></a>
</document>
Мое решение до сих пор:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="element[not(ancestor::a)]">
<xsl:value-of select= "." />
<xsl:text> (</xsl:text>
<xsl:copy-of select= "." />
<xsl:text>)</xsl:text>
</xsl:template>
</xsl:stylesheet>
будет Generat e:
<document>
<text>Some text "abc" (<element attribute="123">"abc"</element>) more text.</text>
<text>Lots of text...</text>
<a><element attribute="123">"abc"</element></a>
</document>
Это довольно близкий, но не желаемый результат. Теперь мне нужно удалить «abc» из первого элемента или даже скопировать элемент без его содержимого, но я не могу и каким-то образом придерживаюсь своего решения. Кто-нибудь здесь, кто может просветить меня?
Спасибо, человек. Это работало как прелесть. Очень признателен! –