2

我正在尝试将 Attribute 值从架构中的一个元素复制到 XSLT 输出。我尝试了复制,并访问了很多带有模式元素的示例,但它似乎仅用于匹配或复制整个节点结构......

总结一下,我想利用 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>
4

1 回答 1

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"/>
于 2012-05-02T11:10:21.377 回答