我正在尝试将一个Attribute值从架构中的一个元素复制到XSLT输出。 我尝试了copy-of,并使用schema-element访问了很多例子,但它似乎只用于匹配或复制整个节点结构......
总结一下,我想利用xslt xsd意识来做相当于为属性分配默认值的Post-Schema-Validation Infosetway
XML
<MyProject Val="wrongval">
XSD
<xs:element name="MyProject">
<xs:complexType>
<xs:attribute name="Val" fixed="1234" />
</xs:complexType>
</xs:element>
XSLT
<xsl:template match="/">
<xsl:element name="MyProject">
<xsl:attribute name="Val">**???=1234**</xsl:attribute>
</xsl:element>
</xsl:template>
答案 0 :(得分:3)
你快到了。给出以下(未使用的)源文档:
<MyProject Val="wrongval"/>
以及以下架构:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="MyProject">
<xs:complexType>
<xs:attribute name="Val" fixed="1234" />
</xs:complexType>
</xs:element>
</xs:schema>
和以下样式表:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import-schema schema-location="test.xsd"/>
<xsl:template match="/">
<xsl:element name="MyProject" validation="strict"/>
</xsl:template>
</xsl:stylesheet>
转换输出为:
<?xml version="1.0" encoding="UTF-8"?><MyProject Val="1234"/>