2015-03-01 2 views
0

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» из первого элемента или даже скопировать элемент без его содержимого, но я не могу и каким-то образом придерживаюсь своего решения. Кто-нибудь здесь, кто может просветить меня?

ответ

1

Вместо <xsl:copy-of select= "." /> вы хотите

<xsl:copy> 
    <xsl:copy-of select="@*"/> 
</xsl:copy> 

который делает неполную копию и копирует атрибуты.

+0

Спасибо, человек. Это работало как прелесть. Очень признателен! –

Смежные вопросы