Re: Преобразование для разных версий структуры одного докуме
От: . Великобритания  
Дата: 20.03.09 21:12
Оценка:
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
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.