Почему бы не скопировать атрибуты этого документа из исходного XML-файла? - PullRequest
0 голосов
/ 04 мая 2010

Я впервые работаю с xslt, и я действительно не понимаю, почему этот xsl не копирует атрибуты из исходного XML.Возможно, кто-то может дать мне подсказку ??

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output omit-xml-declaration="yes" indent="yes"/>
   <xsl:variable name="rpl" select="document('ParamInvoice.xml')"/>
   <xsl:template match="/">
      <xsl:copy>
         <xsl:apply-templates select="* | @*"/>
      </xsl:copy>
   </xsl:template>
   <xsl:template match="*">
      <xsl:variable name="vInvoiceElement" select="$rpl/StoraInvoice/*[name()=name(current())]"/>
      <xsl:copy>
         <xsl:if test="$vInvoiceElement/Attribute">
            <xsl:call-template name="AttributeErzeugen">
               <xsl:with-param name="pAttr" select="$vInvoiceElement/Attribute"/>
            </xsl:call-template>
         </xsl:if>
         <xsl:apply-templates/>
      </xsl:copy>
   </xsl:template>
   <xsl:template name="AttributeErzeugen">
      <xsl:param name="pAttr"/>
      <xsl:for-each select="$pAttr">
         <xsl:attribute name="{@name}"><xsl:value-of select="."/></xsl:attribute>
      </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>

1 Ответ

0 голосов
/ 26 августа 2011

Вместо <xsl:copy>, вы должны использовать <xsl:copy-of>. Разница между ними заключается в том, что copy копирует только элемент (без атрибутов и дочерних элементов), а copy-of копирует все элементы (атрибуты, дочерние элементы и т. Д.).

Чек http://www.w3schools.com/xsl/xsl_w3celementref.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...