XSLT для разбиения элементов на наборы? - PullRequest
1 голос
/ 12 мая 2010

Является ли XSLT хорошим решением для разбиения XML-документа на наборы по имени элемента? Например, если мой документ:

<mydocument>
<items>
<item>one</item>
<item>two</item>
<item>three</item>
<item>four</item>
</items>
</mydocument>

Я хочу разделить это на наборы по 3 или менее, например:

<mydocument>
<items page="1">
<item>one</item>
<item>two</item>
<item>three</item>
</items>
<items page="2">
<item>four</item>
</items>
</mydocument>

Может ли кто-нибудь предоставить мне подход XSLT или, что еще лучше, пример.

1 Ответ

2 голосов
/ 12 мая 2010

Это преобразование :

<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="vSetSize" select="3"/>

 <xsl:template match="/*/*">
  <mydocument>
   <xsl:for-each select=
     "item[position() mod $vSetSize = 1]">
     <items page="{position()}">
      <xsl:copy-of select=
       ". | following-sibling::*
               [not(position() >= $vSetSize)]"/>
     </items>
   </xsl:for-each>
  </mydocument>
 </xsl:template>

</xsl:stylesheet>

при применении к предоставленному XML-документу дает желаемый результат :

<mydocument>
    <items page="1">
        <item>one</item>
        <item>two</item>
        <item>three</item>
    </items>
    <items page="2">
        <item>four</item>
    </items>
</mydocument>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...