Замените значение атрибута, используя сложное выражение соответствия - PullRequest
0 голосов
/ 12 января 2011

Я хочу заменить теги xml, которые выглядят так: <indicator itype="ST" ind="U"/> на <indicator itype="ST" ind="HELLO"/>. Используемая мной таблица стилей xslt выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
                    version="1.0">
  <xsl:template match = "@*|node()">
    <xsl:copy>
      <xsl:apply-templates select = "@*|node()"/>
    </xsl:copy>
  </xsl:template>
  <xsl:template match = "indicator[@itype='ST' and  @ind='U']">
    <xsl:attribute name = "ind">
      <xsl:text>HELLO</xsl:text>
    </xsl:attribute>
  </xsl:template>
</xsl:stylesheet>

Таблица стилей не работает, и процессор выдает исключение. Как я могу это исправить?

1 Ответ

1 голос
/ 12 января 2011

Если вы хотите заменить значение атрибута, то вам нужно сопоставить узел атрибута.Эта таблица стилей:

<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="indicator[@itype='ST']/@ind[.='U']">
        <xsl:attribute name="ind">
            <xsl:text>HELLO</xsl:text>
        </xsl:attribute>
    </xsl:template>
</xsl:stylesheet>

Вывод:

<indicator itype="ST" ind="HELLO"></indicator>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...