Sau đây là cách này có thể được thực hiện:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="xsi">
<xsl:output omit-xml-declaration="yes"/>
<!-- -->
<xsl:template match="/">
<exercises xsi:noNamespaceSchemaLocation="mySchema.xsd"/>
</xsl:template>
</xsl:stylesheet>
Khi chuyển đổi này được áp dụng trên bất kỳ nguồn tài liệu XML (không sử dụng), kết quả mong muốn được sản xuất:
<exercises xsi:noNamespaceSchemaLocation="mySchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
Không cần sử dụng <xsl:attribute>
trong trường hợp của bạn, tuy nhiên nếu cần, nó có thể được sử dụng mà không gặp bất kỳ sự cố nào:
<xsl:attribute name="xsi:noNamespaceSchemaLocation">
<xsl:value-of select="'mySchema.xsd'"/>
</xsl:attribute>
Do lưu ý rằng nó là một thực hành tốt chỉ đơn giản là xác định không gian tên cần thiết tại <xsl:stylesheet>
yếu tố để họ có thể dễ dàng được (tái) được sử dụng ở khắp mọi nơi khi cần thiết. Điều này đặc biệt hữu ích, nếu cần một không gian tên đã cho trên nhiều phần tử hoặc thuộc tính được tạo ra.
Trong trường hợp này, bạn cũng nên chỉ định tất cả các tiền tố như vậy trong giá trị của thuộc tính exclude-result-prefixes
sao cho các không gian tên sẽ không được tự động truyền trên tất cả các thành phần của chữ.
Nguồn
2009-01-08 14:16:41
Bạn đang sử dụng trình phân tích cú pháp XSLT nào? – Kev