pgdns wrote:
> XSLT 1.0 Debugging Error: Invalid prefixError in XPath expression,
> Invalid prefix
У меня такое подознение, что "." не может быть в имени атрибута, сделай не aaa_1.0, а aaa_1_0.
Ты можешь сделать общее преобразование, которое будет просто переносить в другой ns все элементы, которые не изменились.
<xsl:template match="*">
<xsl:element name="{local-name()}" namespace="urn:site.ru:SomeComplex:2.0">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
тут namespace можно и вычислять как-нибудь или просто сделать несколько таких правил для match="aaa_1_0:*", match="aaa_1_1:*" и т.п., указывая соответсвующие ns
<xsl:template match="oldns:*" xmlns:oldns="urn:site.ru:SomeComplex:1.0">
<xsl:element name="{local-name()}" namespace="urn:site.ru:SomeComplex:2.0">
....
<xsl:template match="oldns:*" xmlns:oldns="urn:site.ru:SomeComplex:1.2">
<xsl:element name="{local-name()}" namespace="urn:site.ru:SomeComplex:2.0">
....
(да, в разных частях документа одному и тому же префиксу можно приписывать разные ns)
А остальное добить частными случаями:
<xsl:template match="aaa_1_2:oldElement[a='b']">
<newElement newAttr="{@oldAttr1}">
<otherStructure newAttr="{@oldAttr2}">
<xsl:value-of select="."/>
</otherStructure>
</newElement>
</xsl:template>
Posted via RSDN NNTP Server 2.1 beta