2016-06-02 2 views
-2

Предыдущий XMLкак изменить специальное значение узла для XML с помощью XLS

<?xml version="1.0" encoding="UTF-8"?> 
<cities> 
    <city abbr="A">"NameA1"</city> 
    <city abbr="B">"NameB1"</city> 
    <city abbr="C">"NameC1"</city> 
</cities> 

Обновлено XML

<?xml version="1.0" encoding="UTF-8"?> 
<cities> 
    <city abbr="A">"NameD1"</city> 
    <city abbr="B">"NameB1"</city> 
    <city abbr="C">"NameC1"</city> 
</cities> 

Описание: Я хочу, чтобы выяснить, узел, атрибут «сокр» приравнивает к « "и измените значение с" NameA1 "на" NameD1 ". Я не знаком с xsl. Не могли бы вы рассказать мне, как это сделать?

+0

Предыдущее XML <город сокр = "A"> "NameA1" <город сокр = "B"> "NameB1" <город сокр = "C"> "NameC1" Обновлено XML <город сокр = "А"> "NameD1" <город сокр = "B"> "NameB1" <город сокр = "C"> "NameC1"

+0

Редактировать свой вопрос и поставить пример там только. – Moumit

ответ

0

Вы должны начать с помощью XSLT identity template

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

Это скопирует все существующие узлы в вашем XML без изменения. Затем вам просто нужно добавить отдельный шаблон, который будет иметь приоритет над шаблоном идентификации, где вы можете сопоставить текстовый узел, который хотите изменить.

<xsl:template match="city[@abbr='A']/text()"> 
    <xsl:text>NameD1</xsl:text> 
</xsl:template> 

Собираем их вместе дает это:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes" /> 

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

    <xsl:template match="city[@abbr='A']/text()"> 
    <xsl:text>"NameD1"</xsl:text> 
    </xsl:template> 
</xsl:stylesheet> 
Смежные вопросы