在XSLT中替换值

时间:2016-11-14 12:33:23

标签: xslt xslt-2.0 xslt-grouping

我有这个XML文档:现在我想替换LineNo,以便输出将是行号1,2。我尝试过这样的事情。

<xsl:value-of select="replace( '000010',1)"/>
<Rder> 
   <Order>
      <OrderNo>458</OrderNo>
      <LineNo>000010</LineNo>
      <SerialNO>96</SerialNO>
       <VNo>543</VNo>
      </Order>
     <Order>
     <OrderNo>458</OrderNo>
     <LineNo>000020</LineNo>
     <SerialNO>32</SerialNO>
     <VNo>543</VNo>
     </Order>
</Rder>
I want to replace the value of LineNo= 000010 ,000020 by 1,2 in XSLT below  one i  have tried.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="xml" indent="yes" />
<xsl:key name="orders" match="Order" use="OrderNo" />
<xsl:template match="/*">
      <SalesOrders>
        <xsl:for-each select="Rder/Order[generate-id() = generate-id(key('orders', OrderNo)[1])]">
          <Order VNo="{VNo}" OrderNo="{OrderNo}"> 
            <OrderLines>
              <xsl:apply-templates select="key('orders', OrderNo)" />
            </OrderLines>
          </Order>
        </xsl:for-each>
      </SalesOrders>
    </xsl:template>
<xsl:template match="Order">
        <OrderLine  LineNo="{LineNo}" SerialNO="{SerialNO}"/>
    </xsl:template>
</xsl:stylesheet>

实际上我以相同的格式获取那些lineno细节我已经尝试了几种情况,它没有给出预期的格式。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

你为什么不这样做:

\s*

或:

<xsl:template match="Order">
    <OrderLine  LineNo="{position()}" SerialNO="{SerialNO}"/>
</xsl:template>