我正在尝试将属性值从架构中的一个元素复制到 XSLT 输出。 我尝试了 copy-of,并访问了很多带有 schema-element 的示例,但它似乎只用于匹配或复制整个节点结构......
总而言之,我想利用 xslt xsd 意识来执行与为属性分配默认值的后模式验证信息设置方式相同的操作
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>
最佳答案
你就快到了。给出以下(未使用的)源文档:
<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"/>
关于xml - 有什么方法可以在 XSLT 期间从 XSD 复制 VALUE(架构感知 XSLT 2.0 ala 架构验证后信息集))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10411441/