Возможно, это может помочь. Но я не проверял. Не могли бы вы предоставить пример XML?
<xsl:value-of select="/input/as/a[@id=$id]/*[translate(local-name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='camel' and @id2=$id2]/@interest"/>
EDIT
Если вы хотите изменить весь файл XML в нижний регистр (без элементов и значений атрибутов, конечно), вы можете использовать этот следующий шаблон:
<?xml version="1.0" encoding="utf-8"?>
<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="*">
<xsl:element name="{translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Имея сделать преобразование в нижний регистр, вы можете попытаться создать многопроходную XSLT-преформацию - следующий проход будет вашим преобразованием. Однако я не уверен, как это сделать, используя XSLT 1.0.
EDIT 2
ОК, так что здесь идет весь пример. У меня не было ваших примеров, поэтому я работал над своими.
Пример входного файла:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<baba>aaa</baba>
<Baba>BBB</Baba>
</Root>
XSLT с сортировкой многоходовых:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:variable name="firstPassResult">
<xsl:apply-templates select="/" mode="firstPass"/>
</xsl:variable>
<xsl:template match="@*|node()" mode="firstPass">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*" mode="firstPass">
<xsl:element name="{translate(name(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'abcdefghijklmnopqrstuvwxyz')}">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates select="$firstPassResult" mode="secondPass"/>
</xsl:template>
<xsl:template match="//baba" mode="secondPass">
<xsl:value-of select="text()"/>
</xsl:template>
</xsl:stylesheet>
I работает под Altova XMLSpy отладчик. Выход:
<?xml version="1.0" encoding="UTF-8"?>aaaBBB
multi-pass? звучит интересно. скажите мне больше :-) как мне это сделать? – eckes
@eckes: see my edit – Lukasz
Отлично! Я использовал XSL с годами, но никогда не использовал ** режим **. Спасибо! – eckes