मेरे पास एक एक्सएसएलटी फ़ाइल है ताकि बड़ी मात्रा में डेटा बदल सके। मैं एक "विभाजित" कार्यक्षमता जोड़ना चाहता हूं, या तो एक जंजीर एक्सएसएलटी या वर्तमान एक्सएसएलटी के भीतर जो कई आउटपुट फाइलें बना सकता है ताकि फाइलों के आकार को किसी निश्चित दहलीज के नीचे सीमित किया जा सके। मान लेते हैं कि इनपुट XML रूप में नीचे है दो:एक्सएसएलटी विभाजित आउटपुट फाइलें - मुएनचियन ग्रुपिंग
<People>
<Person>
<name>John</name>
<date>June12</date>
<workTime taskID="1">34</workTime>
<workTime taskID="2">12</workTime>
</Person>
<Person>
<name>John</name>
<date>June13</date>
<workTime taskID="1">21</workTime>
<workTime taskID="2">11</workTime>
</Person>
<Person>
<name>Jack</name>
<date>June19</date>
<workTime taskID="1">20</workTime>
<workTime taskID="2">30</workTime>
</Person>
</People>
XSLT फ़ाइल muenchian समूहीकरण का उपयोग कर नीचे के रूप में है।
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="PersonTasks" match="workTime" use="concat(@taskID, ../name)"/>
<xsl:template match="/">
<People>
<xsl:apply-templates select="//workTime[generate-id() = generate-id(key('PersonTasks',concat(@taskID, ../name))[1])]"/>
</People>
</xsl:template>
<xsl:template match="workTime">
<xsl:variable name="taskID">
<xsl:value-of select="@taskID"/>
</xsl:variable>
<xsl:variable name="name">
<xsl:value-of select="../name"/>
</xsl:variable>
<Person>
<name>
<xsl:value-of select="$name"/>
</name>
<taskID>
<xsl:value-of select="$taskID"/>
</taskID>
<xsl:for-each select="//workTime[../name = $name][@taskID = $taskID]">
<workTime>
<date>
<xsl:value-of select="../date"/>
</date>
<time>
<xsl:value-of select="."/>
</time>
</workTime>
</xsl:for-each>
</Person>
</xsl:template>
</xsl:stylesheet>
हालांकि, मुझे एक आउटपुट के रूप में, एक बड़ी संख्या के बजाय नीचे की गई कई फाइलें चाहिए। इस उदाहरण के लिए, मैंने प्रति फ़ाइल केवल एक नाम सेट किया है .. लेकिन यह एक पैरामीटर होना चाहिए।
पहले व्यक्ति के लिए आउटपुट फ़ाइल:
<People>
<Person>
<name>John</name>
<taskID>1</taskID>
<workTime>
<date>June12</date>
<time>34</time>
</workTime>
<workTime>
<date>June13</date>
<time>21</time>
</workTime>
</Person>
<Person>
<name>John</name>
<taskID>2</taskID>
<workTime>
<date>June12</date>
<time>12</time>
</workTime>
<workTime>
<date>June13</date>
<time>11</time>
</workTime>
</Person>
</People>
दूसरे व्यक्ति के लिए आउटपुट फ़ाइल:
<People>
<Person>
<name>Jack</name>
<taskID>1</taskID>
<workTime>
<date>June19</date>
<time>20</time>
</workTime>
</Person>
<Person>
<name>Jack</name>
<taskID>2</taskID>
<workTime>
<date>June19</date>
<time>30</time>
</workTime>
</Person>
</People>
क्या पसंद किया और सबसे सुरुचिपूर्ण दृष्टिकोण XSLT 1.0 का उपयोग कर सकता है? एक्सएसएलटी के भीतर एक जंजीर एक्सएसएलटी को कॉल करने का कोई तरीका है ताकि आउटपुट फाइलों को विभाजित किया जा सके?
चीयर्स।
अच्छा सवाल है, +1। ऐसा करने के कई तरीकों के लिए मेरा उत्तर देखें। –