标签: xsd-validation

XSD maxLength 和 minLength 应用于整数

我在找出如何告诉 XSD 字段数据的最小长度必须为 12 位数字和最大长度为 14 位数字时遇到一些麻烦。有没有人知道如何做到这一点,因为minlengthmaxlength只能用于字符串。

<xs:simpleType name="timestamp_vorige_inspectie">
    <xs:restriction base="xs:integer">
        <xs:minLength value="12"/>
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

xml xsd integer xml-validation xsd-validation

5
推荐指数
1
解决办法
1万
查看次数

从另一个 XSD 导入复杂类型

我发现将复杂类型从一个 XSD 文件导入和引用到另一个 XSD 文件时遇到困难。让我用一个例子来说明我的场景

学生.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
    xmlns="xyz"
    elementFormDefault="qualified">

    <xsd:element name="student" type="student" />

    <xsd:complexType name="student">
        <xsd:sequence>
            <xsd:element name="id" type="xsd:string" />
            <xsd:element name="birth-date" type="xsd:date" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

这是另一个 XSD,Teacher.xsd,我想在其中引用 Student.xsd 中的复杂类型 Student

老师.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
    xmlns="xyz"
    elementFormDefault="qualified">

    <xsd:import schemaLocation="student.xsd"
        namespace="xyzzz" />

    <xsd:element name="teacher" type="teacher" />

    <xsd:complexType name="teacher">
        <xsd:sequence>
            <xsd:element name="id" type="xsd:string" />
            <xsd:element name="name" type="xsd:string" />

            // TODO - Refer to student from student.xsd

        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

我看过其他 Stack …

xml xsd xml-validation xsd-validation

5
推荐指数
1
解决办法
8920
查看次数

在 XSD 中,如何只允许元素内容中存在空格?

我正在为一个没有内容、只有属性的元素编写 XSD,这看起来相当简单:

  <xs:complexType name="ViewElement">
    <xs:attribute name="Name" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:element name="VIEW" type="ViewElement" minOccurs="0" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

如果 XML 包含

<VIEW Name='V_UP'></VIEW>
Run Code Online (Sandbox Code Playgroud)

或者

<VIEW Name='V_UP'/>
Run Code Online (Sandbox Code Playgroud)

效果很好。但如果 XML 包含

<VIEW Name='V_UP'>
</VIEW>
Run Code Online (Sandbox Code Playgroud)

我明白了

该元素不能包含空格。内容模型为空。

我想让 XML 的作者能够灵活地以这种方式编写 XML,但我不知道如何允许内容,而只允许空白内容。有什么建议么?

xml xsd xml-validation xsd-validation

5
推荐指数
1
解决办法
2686
查看次数

错误:S4s-elt-character:除“xs:appinfo”和“xs:documentation”之外的架构元素中不允许使用非空白字符

我有这个 xml-Schema:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
        <xs:element name="Fussballmannschaft">
                <xs:complexType>
                        <xs:attribute name="Name" type="xs:string" />
                        <xs:attribute name="Stadt" type="xs:string" />
                        <xs:attribute name="Tabellenplatz" type="xs:string" />
                        <xs:element name="Spieler">
                                <xs:complexType>
                                        <xs:attribute name="SpielerID" type="xs:string" />
                                        <xs:keyref name="I_D" refer="Name" />
                                        <xs:attribute name="Name" type="xs:string" />
                                        <xs:element name="Torwart">
                                                <xs:attribute name="GehealteneElfmeter" type="xs:integer" />
                                                <xs:keyref name="ID_Torwart" refer="SpielerID" />
                                        </xs:element>
                                        <xs:element name="Verteidiger">
                                                <xs:attribute name="GewonneneZweikaempfe" type="xs:integer" />
                                                <xs:keyref name="ID_Verteidiger" refer="SpielerID" />
                                        </xs:element>
                                        <xs:element name="Stuermer">
                                                <xs:attribute name="GeschosseneTore" type="xs:integer" />
                                                <xs:keyref name="ID_Stuermer" refer="SpielerID" />
                                        </xs:element>
                                </xs:complexType>
                        </xs:element>
                </xs:complexType>
        </xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

和这个样本:

<Fussballmannschaft Name="BVB">
<Stadt>Dortmund</Stadt>
<Tabellenplatz>3</Tabellenplatz>
    <Spieler …
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-validation xsd-validation

5
推荐指数
3
解决办法
1万
查看次数

为什么 Edge 将编码 ="UTF-8" 更改为编码 ISO-8859-1

浏览器 Edge 自行将 XSD 文件从编码“UTF-8”转换为 ISO-8859-1。我的问题是 1. 这是 EDGE 的特性吗,还是 EDGE 这样做是因为 UTF-8 在我没有查看时已被弃用,并被 ISO-8859-1 取代。2. 为什么浏览器之间的处理存在差异,3. 是否存在全局首选的编码结构。已阅读 W3 学校和 Stackoverflow 文章,内容丰富,但没有建议。
我想选择一个标准来处理我的应用程序中的所有 XML 文件(会有很多)。我应该只使用 ISO-8859-1 吗?请直接指导,帮助我真的感觉自己文盲占了上风。

事实是 A. Visual Studio 使用 UTF 创建文件,b我在关联的 Xml 文件中没有特殊字符/符号,将来也不需要它们,c.chrome 浏览器忽略(不显示)以下 XML 标记,该标记显示在边缘 ' 'd。两种浏览器都会处理 file:/// ...file。

用于测试 xsd 参考的代码为 file:///D:\prjClimateControl\prgrms\slnsVsTo\prjV00G00Jun0619\sysdocXml1.xsd

边缘显示中的xml标签是但显示为

没有错误消息文件显示正确但更改了结束编码

xsd-validation visual-studio-2012

5
推荐指数
0
解决办法
4592
查看次数

创建具有限制的XSD可选十进制元素

我已经设法使用这个创建一个可选的十进制元素:

  <xs:simpleType name="OptionalDecimal">
    <xs:union memberTypes="xs:decimal empty-string" />
  </xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

但我还需要添加限制,以便在输入时将其限制为最大长度为10,最大数量为3位小数.所以我有这个:

<xs:restriction base="xs:decimal">
  <xs:maxInclusive value="9999999999"/>
  <xs:fractionDigits value="3"/>
</xs:restriction>
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何将它们结合起来.他们可以合并吗?或者有更好的方法吗?

xml xsd xsd-validation

4
推荐指数
1
解决办法
1万
查看次数

XSD验证,如果有其他可能性

只是试图弄清楚是否可以通过XSD架构级别验证来实现以下场景.


例如-

<PreferredPlan>
This tag can have Values - Family or Single
Run Code Online (Sandbox Code Playgroud)

如果我得到"家庭"的价值,我应该有低于xml的元素.

<Family>
<tag1></tag1>
<tag2></tag2>
Run Code Online (Sandbox Code Playgroud)

如果捕获"单个"值,我应该有以下标签.

<Single>
<tag3></tag3>
<tag4></tag4>
</Single>
Run Code Online (Sandbox Code Playgroud)


xsd-validation

4
推荐指数
1
解决办法
7140
查看次数

使用相对路径使用DTD或XSD进行本地XML验证?

可以使用文档类型描述(DTD)或XML架构(xsd)定义和验证XML文件,如下所示:

<?xml version='1.0' encoding='UTF-8'?>
<annotation xmlns="http://www.xyz.com"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.xyz.com
    file:system.xsd" >
Run Code Online (Sandbox Code Playgroud)

要么

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE annotation SYSTEM "http://www.xyz.de/system.dtd">
Run Code Online (Sandbox Code Playgroud)

两种方式都定义了找到DTD或XSD的URL.有没有办法给出相对或本地路径?所以我可以将它们与XML文件一起存储,而不是依赖于服务器?

xml xsd dtd xml-validation xsd-validation

4
推荐指数
1
解决办法
1万
查看次数

XSD规范中词汇表述与规范表述之间的区别

我今天参考了XSD规范,以查找十进制类型的定义。在其中,我发现了两个不同的数据类型定义冲突,一个词法定义和一个下面引用的规范定义:

3.2.3.1词汇表示

十进制具有一个词法表示,由有限长度的十进制数字序列(#x30-#x39)组成,这些序列之间用句点分隔,作为十进制指示符。允许使用可选的前导符号。如果省略符号,则假定为“ +”。前导零和尾随零是可选的。 如果小数部分为零,则可以省略周期和随后的零。例如:-1.23、12678967.543233,+ 100000.00、210。

3.2.3.2规范表示

十进制的规范表示是通过禁止词法表示(第3.2.3.1节)中的某些选项来定义的。具体来说,禁止前面的可选“ +”号。小数点是必需的。禁止前导和尾随零,但必须遵守以下规定:小数点左右必须至少有一位数字,该数字可能是零。

总而言之,如果小数的小数部分为零,则词法表示允许不存在小数点和尾随零,而规范表示则明确指出需要十进制。

以下哪个定义是“正确的”?我的应用程序正在发送词汇表示形式,而正在使用的应用程序正在期望规范表示形式。

xml xsd specifications xsd-validation

4
推荐指数
1
解决办法
1014
查看次数

如何在XSD中将复杂类型重用于多个元素?

我一直无法找到任何有关此的信息,可能是由于我没有掌握术语。我想要做的是为货币创建一个模板元素(已经有),并在两个地方使用两个不同的名称(即currentBalancemaxBalance)使用它。

我当前的模板格式为:

<xsd:element name="currency">
    <xsd:complexType>
        <xsd:simpleContent>
            <xsd:extension base="xsd:double">
                <xsd:attribute ref="currencyCode" />
            </xsd:extension>
        </xsd:simpleContent>
    </xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-validation xsd-validation

4
推荐指数
1
解决办法
1493
查看次数