Как сделать прописные буквы при выполнении <xsl: copy-of select = "./*" /> - PullRequest
1 голос
/ 28 марта 2012

Я должен сделать верхний регистр всех значений узлов внутри родительского узла при копировании всего раздела.

Например: ATPM / 37 zATP - Разные исключения Пустое текстовое поле без номера 1 Указано Изменить на: ATPM /37 ZATP - РАЗЛИЧНЫЕ ИСКЛЮЧЕНИЯ ЯРКОСТЬ ЯРКОГО ТЕКСТА БЕЗ НОМЕРА 1 СКАЗАЛ

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Инструкция xsl:copy-of всегда делает точную копию;Вы не можете использовать его для копирования с изменениями.Для этого используйте шаблон удостоверения, чтобы точно скопировать то, что вы хотите скопировать, и другой шаблон для того, что вы хотите изменить.Таким образом:

<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates/>
  </xsl:copy>
</xsl:template>

<xsl:template match="text()">
  <xsl:value-of select="upper-case(.)"/>
</xsl:template>
1 голос
/ 28 марта 2012

В XSLT 2.0 попробуйте добавить

<xsl:template match="text()">
<xsl:value-of select="upper-case(.)"/>
</xsl:template>

В XSLT 1.0 используйте

<xsl:template match="text()"> 
    <xsl:value-of select="translate(., $smallcase, $uppercase)" /> 
</xsl:template> 
<xsl:variable name="smallcase" select="'abcdefghijklmnopqrstuvwxyz'" /> 
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'" />

вместо

...