Tôi đã được giao nhiệm vụ tổng hợp một cuốn sách (sử dụng XSL FO) từ một số tệp XML, giờ tôi đang cố gắng đếm số liệu cuốn sách này (đánh số đơn giản, không reset vào chương hoặc bất cứ điều gì), cách tiếp cận ngây thơ của tôi đã làm điều nàySố XSLT chỉ tính các trường hợp trong tệp hiện tại của tài liệu nhiều tệp
<xsl:template match="figure">
<fo:block xsl:use-attribute-sets="figure">
.. stuff to deal with images ..
<fo:block xsl:use-attribute-sets="figure-caption">
Figure <xsl:number level="any"/>: <xsl:apply-templates/>
</fo:block>
<fo:block xsl:use-attribute-sets="figure-caption">
</xsl:template>
tôi có một file XML tổng hợp mà lựa chọn các tập tin để sử dụng bằng cách sử dụng document()
chức năng như vậy:
<xsl:template match="include">
<xsl:apply-templates select="document(@src)"/>
</xsl:template>
Bây giờ, sự cố của tôi là number
dường như đã thay đổi ays chỉ đếm các cá thể trong tệp hiện tại, không phải là những gì tôi muốn (hiện tại, chỉ có một hoặc hai hình ảnh cho mỗi tệp, dẫn đến tất cả các số liệu là 'Hình 1' hoặc 'Hình 2').
Tôi đã xem xét hai phương pháp tiếp cận, cả về bản chất là XSLT hai lần. Thứ nhất, cách tiếp cận đơn giản, tạo ra một XML trung gian chứa toàn bộ cuốn sách bằng cách sử dụng một biến đổi nhận dạng, mà tôi không muốn làm vì những lý do khác.
Thứ hai, sử dụng node-set()
mở rộng, mà tôi đã cố gắng như thế này
<xsl:template match="include">
<xsl:apply-templates select="ext:node-set(document(@src))"/>
</xsl:template>
nhưng điều này tạo ra kết quả tương tự.
Bất kỳ ý tưởng nào? Có lẽ một cái gì đó không phải là một sự chuyển đổi hai vượt qua? Mọi sự trợ giúp sẽ rất được trân trọng.
Tốt câu hỏi, 1. Xem câu trả lời của tôi cho một cuộc thảo luận về hai cách tiếp cận, một khuyến nghị và giải thích rõ ràng cho đề xuất này. –
+1. Đó là một câu hỏi thú vị. – Flack
+1 Thật vậy, một câu hỏi hay. –