Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 根据输入参数迭代次数改变XSLT转换_Xml_Xslt_Param - Fatal编程技术网

Xml 根据输入参数迭代次数改变XSLT转换

Xml 根据输入参数迭代次数改变XSLT转换,xml,xslt,param,Xml,Xslt,Param,我已经发布了我的源XML和目标XML,我需要帮助使用XSLT转换它。我正在尝试将源XML集合拆分为不同的目标XML文档。我需要在运行时将迭代编号传递到XSLT中 源XML: 样本元素标题 一些数据 一些数据1 一些数据2 一些数据3 目标XML: 第一次迭代: 一些数据 第二次迭代: 一些数据1 第三次迭代: 一些数据2 第四次迭代: 一些数据3 以下XSLT: <?xml version="1.0" encoding="UTF-8"?> <xsl:styleshe

我已经发布了我的源XML和目标XML,我需要帮助使用XSLT转换它。我正在尝试将源XML集合拆分为不同的目标XML文档。我需要在运行时将迭代编号传递到XSLT中

源XML:



样本元素标题
一些数据
一些数据1
一些数据2
一些数据3

目标XML:


第一次迭代:
一些数据
第二次迭代:
一些数据1
第三次迭代:
一些数据2
第四次迭代:
一些数据3


以下XSLT:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:sou="source.sample.com">

  <xsl:param name="iteration" select="1"/>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="sou:Header"/>

  <xsl:template match="sou:Elements">
    <xsl:if test="count(preceding-sibling::sou:Elements) + 1 = $iteration">
      <xsl:copy>
        <xsl:apply-templates/>
      </xsl:copy>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<sou:rElement xmlns:sou="source.sample.com">
  <sou:Header>
    <sou:Elem1>SampleElementHeader</sou:Elem1>
  </sou:Header>
  <sou:Body>
    <sou:Elem2>
      <sou:Elem3>
        <sou:ElemCollection>
          <sou:Elements>
            <sou:data>SomeData</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData1</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData2</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData3</sou:data>
          </sou:Elements> 
        </sou:ElemCollection>
        <sou:Elem3>
          <sou:Elem2>
          </sou:Elem2>
        </sou:Elem3>
      </sou:Elem3>
    </sou:Elem2>
  </sou:Body>
</sou:rElement>
<?xml version="1.0" encoding="UTF-8"?>
<sou:rElement xmlns:sou="source.sample.com">
  <sou:Body>
    <sou:Elem2>
      <sou:Elem3>
        <sou:ElemCollection>
          <sou:Elements>
            <sou:data>SomeData</sou:data>
          </sou:Elements>
        </sou:ElemCollection>
        <sou:Elem3>
          <sou:Elem2>
          </sou:Elem2>
        </sou:Elem3>
      </sou:Elem3>
    </sou:Elem2>
  </sou:Body>
</sou:rElement>

和所需的输出XML(当
迭代设置为2到4时)。

请发布您尝试的XSLT。这解决了我的问题。谢谢。
<?xml version="1.0" encoding="UTF-8"?>
<sou:rElement xmlns:sou="source.sample.com">
  <sou:Header>
    <sou:Elem1>SampleElementHeader</sou:Elem1>
  </sou:Header>
  <sou:Body>
    <sou:Elem2>
      <sou:Elem3>
        <sou:ElemCollection>
          <sou:Elements>
            <sou:data>SomeData</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData1</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData2</sou:data>
          </sou:Elements>
          <sou:Elements>
            <sou:data>SomeData3</sou:data>
          </sou:Elements> 
        </sou:ElemCollection>
        <sou:Elem3>
          <sou:Elem2>
          </sou:Elem2>
        </sou:Elem3>
      </sou:Elem3>
    </sou:Elem2>
  </sou:Body>
</sou:rElement>
<?xml version="1.0" encoding="UTF-8"?>
<sou:rElement xmlns:sou="source.sample.com">
  <sou:Body>
    <sou:Elem2>
      <sou:Elem3>
        <sou:ElemCollection>
          <sou:Elements>
            <sou:data>SomeData</sou:data>
          </sou:Elements>
        </sou:ElemCollection>
        <sou:Elem3>
          <sou:Elem2>
          </sou:Elem2>
        </sou:Elem3>
      </sou:Elem3>
    </sou:Elem2>
  </sou:Body>
</sou:rElement>