2012-02-08 2 views
0

У меня есть XML-файл с 25 элементами. Я просто хочу преобразовать 2 элемента и сохранить оставшийся XML. Может ли кто-нибудь сказать мне, как это сделать. Все примеры онлайн изменяют XML-документ в целом, я не хочу этого. Я просто хочу изменить значения двух элементов.Как изменить небольшую часть XML с помощью XSL

+2

Как эти два элемента уникально идентифицированы ?, выставить образец xml. – Kristofer

+0

Опубликовать образец XML и что вы хотите, чтобы эти 2 элемента были преобразованы? –

ответ

0

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

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 

<!-- copy all nodes and attributes --> 
<xsl:template match="node() | @*"> 
    <xsl:copy> 
     <xsl:apply-templates select="node() | @*"/> 
    </xsl:copy> 
</xsl:template> 

<!-- but remove annotations --> 
<xsl:template match="xs:annotation"/> 
6

Такие задачи решаются с помощью шаблона тождественного преобразования, которое

<xsl:template match="@* | node()"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
</xsl:template> 

, а затем путем добавления шаблонов для элементов, чтобы быть изменено, например,

<xsl:template match="foo"> 
    <bar> 
    <xsl:apply-templates select="@* | node()"/> 
    </bar> 
</xsl:template> 

изменяет foo к bar элементов и/или

<xsl:template match="foobar"/> 

удаляет foobar элементы.

Чтобы дать вам еще один пример, например, если мы хотим скопировать baz элементов с их содержанием, но хотим добавить new элемент можно добавить шаблон

<xsl:template match="baz"> 
    <xsl:copy> 
    <xsl:apply-templates select="@* | node()"/> 
    <new>...</new> 
    </xsl:copy> 
</xsl:template> 

До тех пор, пока вы сохраняете тождественное преобразование живой (с применением шаблонов) для всего, что вы не хотите менять, вы можете очень хорошо структурировать свою таблицу стилей, написав шаблон для каждого элемента, который нужно изменить.

+0

Спасибо тонну! работает. – Chandu

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