首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML :将simpletype转换为匿名类型

XML :将simpletype转换为匿名类型
EN

Stack Overflow用户
提问于 2017-02-08 12:57:06
回答 1查看 1.2K关注 0票数 2

我有一个模式,我想将simpleType转换为匿名simpleType。原始模式如下所示,我做了几次尝试,例如:

删除base="xxx"; 在扩展后添加simpleType; 等等..。

但最终得到了无效的架构。

问答

  1. 如何在不丢失信息的情况下将输入转换为有效的匿名simpleType架构?
  2. 此外,xslt是否可以通过元素名称、类型名称等的动态输入自动完成此操作?

提前谢谢你,

输入模式

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" elementFormDefault="qualified">
<xs:element name="elem1">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension base="simpleType1">
                <xs:attribute name="att1" type="simpleType2" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>
<xs:simpleType name="simpleType1">
    <xs:restriction base="xs:decimal">
        <xs:fractionDigits value="5"/>
        <xs:totalDigits value="18"/>
        <xs:minInclusive value="0"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="simpleType2">
    <xs:restriction base="xs:string">
        <xs:pattern value="[A-Z]{3,3}"/>
    </xs:restriction>
</xs:simpleType>
</xs:schema>

我的尝试结果:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="test" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" elementFormDefault="qualified">
<xs:element name="elem1">
    <xs:complexType>
        <xs:simpleContent>
            <xs:extension>
                <xs:simpleType>
                    <xs:restriction base="xs:decimal">
                        <xs:fractionDigits value="5"/>
                        <xs:totalDigits value="18"/>
                        <xs:minInclusive value="0"/>
                    </xs:restriction>
                </xs:simpleType>
                <xs:attribute name="att1" use="required"/>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:pattern value="[A-Z]{3,3}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:element>
</xs:schema>

验证表明,这是一个包含错误的无效架构,如:

元素中需要属性'base‘。 元素下不允许使用。 元素中需要属性'name‘。

EN

回答 1

Stack Overflow用户

发布于 2017-02-08 13:29:43

在XSD中,当声明具有受限内容和属性的元素时,不可能使用纯匿名的本地定义。

当然,您可以单独使用属性(att1)类型的本地定义,但如果还需要在elem1上声明att1,则不能使用元素的受限简单内容(elem1)的类型(simpleType1)。

也请参阅: https://stackoverflow.com/a/33303107/290085

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42113791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档