В XSLT заменить значение

У меня есть этот XML-документ: теперь я хочу заменить LineNo, чтобы на выходе была строка no will 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 в том же формате, что и в паре случаев, когда он не дает ожидаемого формата.

Любая помощь будет оценена по достоинству.


person user3659699    schedule 14.11.2016    source источник
comment
Вы хотите заменить <LineNo>000010</LineNo> на <LineNo>1</LineNo>, потому что хотите удалить все 0 цифры или потому что его родительский элемент Order является первым в своей группе?   -  person Martin Honnen    schedule 14.11.2016
comment
Если вы используете XSLT 2.0, почему бы вам не использовать xsl:for-each-group?   -  person michael.hor257k    schedule 14.11.2016
comment
Да Мартин Точно, но тот, который нам нужен динамически, должен быть таким, если он придет 000010 ---› или 000020 --› 000030 ---›3   -  person user3659699    schedule 14.11.2016
comment
Майкл, не могли бы вы рассказать мне, как мы можем использовать, я не очень разбираюсь в xslt. xsl: для каждой группы?   -  person user3659699    schedule 14.11.2016


Ответы (1)


Почему бы вам не сделать просто:

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

or:

<xsl:template match="Order">
    <OrderLine  LineNo="{number(LineNo) div 10}" SerialNO="{SerialNO}"/>
</xsl:template>
person michael.hor257k    schedule 14.11.2016