tôi có thể làm cho nó làm việc bằng cách thêm một tiền tố đến không gian tên mặc định (người cuối cùng ), nhưng làm thế nào có thể tôi ra một XML mà không cần thêm một tiền tố, nó là càng tốt bằng cách sử dụng XslCompiledTransform trong. NET 4?
Đây là một ví dụ cụ thể như thế nào để làm điều đó:
chuyển đổi này:
<xsl:stylesheet version="1.0"
xmlns="http://workflow.converga.com.au/compass"
xmlns:c="http://workflow.converga.com.au/compass"
xmlns:ext="http://exslt.org/common"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="c ext xsl">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pnewItem">
<item name="wine">
<price>3</price>
<quantity>5000</quantity>
</item>
</xsl:param>
<xsl:template match="node()|@*" name="identity">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="c:item[last()]">
<xsl:call-template name="identity"/>
<xsl:copy-of select="ext:node-set($pnewItem)/*"/>
</xsl:template>
</xsl:stylesheet>
khi áp dụng với XslCompiledTransform trên tài liệu XML sau:
<pExport xmlns="http://workflow.converga.com.au/compass">
<Goods>
<item name="tobacco">
<price>5</price>
<quantity>1000</quantity>
</item>
</Goods>
</pExport>
tạo ra muốn (cùng tài liệu XML với một mục mới được bổ sung), chính xác kết quả:
<pExport xmlns="http://workflow.converga.com.au/compass">
<Goods>
<item name="tobacco">
<price>5</price>
<quantity>1000</quantity>
</item>
<item name="wine">
<price>3</price>
<quantity>5000</quantity>
</item>
</Goods>
</pExport>
Nguồn
2010-09-06 17:10:50
Có vẻ như bạn có thể * không * tìm cách để làm cho nó hoạt động với không gian tên mặc định mà không cần thêm tiền tố vào XML đầu ra. Theo cách nào thì nó không hoạt động? Hành vi được quan sát là gì, khi bạn không thêm tiền tố? Bạn đã gắn thẻ điều này với XSLT, vì vậy có lẽ bạn có nghĩa là một bộ xử lý XSLT không nhận ra phần tử pExport trong không gian tên công việc/la bàn? Cần thêm thông tin. Nó có thể giúp hiển thị phần có liên quan của biểu định kiểu của bạn. – LarsH
Câu hỏi hay (+1).Xem câu trả lời của tôi cho một ví dụ cụ thể và giải pháp được sử dụng. –
LarsH, có ý tôi là không thêm tiền tố, XSLT đầu ra sẽ không thể khớp các nút với không gian tên mặc định (không có thẻ). Tôi đang tìm kiếm một cách để phù hợp với các yếu tố này mà không cần thêm tiền tố của riêng tôi cho không gian tên mặc định. –