Tôi có tệp XSLT để chuyển đổi lượng lớn dữ liệu. Tôi muốn thêm chức năng "tách", hoặc là XSLT bị xích hoặc trong XSLT hiện tại có thể tạo nhiều tệp đầu ra để giới hạn kích thước của các tệp theo một ngưỡng nhất định. Giả sử rằng XML đầu vào như sau:Các tệp đầu ra được chia XSLT - nhóm muenchian
<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>
Tệp XSLT dưới đây sử dụng nhóm 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>
Tuy nhiên, tôi muốn, dưới dạng đầu ra, một số tệp dưới đây thay vì tệp lớn. Đối với ví dụ này, tôi đã đặt chỉ một tên cho mỗi tệp .. nhưng đây phải là một tham số.
tập tin đầu ra cho người đầu tiên:
<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>
tập tin đầu ra cho người thứ hai:
<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>
gì sẽ là phương pháp ưa thích và thanh lịch nhất sử dụng XSLT 1.0? Có cách nào để gọi XSLT xích trong XSLT để tách các tập tin đầu ra không?
Chúc mừng.
Tốt câu hỏi, 1. Xem câu trả lời của tôi cho một số cách để làm điều này. –