我有一个架构,我使用XML编辑器"扁平化".在我弄平它后,我得到验证错误.我该怎么办才能解决这个问题?
错误信息:
F [Xerces]元素或属性与QName生成不匹配:QName :: =(NCName':')?NCName.
码:
<xs:import namespace="http://www.opengis.net/gml"
schemaLocation="http://schemas.opengis.net/gml/3.1.1/base/gml.xsd"
xmlns:="http://www.opengis.net/gml/3.1.1" />
<xs:annotation xmlns:="http://www.opengis.net/sps/1.0">
<xs:documentation>
<copyright> SPS is an OGC Standard. Copyright (c)
2007,2010 Open Geospatial Consortium, Inc. All Rights Reserved. To
obtain additional rights of use, visit http://www.opengeospatial.org/legal/ .
</copyright>
</xs:documentation>
</xs:annotation>
Run Code Online (Sandbox Code Playgroud)
这是一个截图,可能更好地说明我的错误:

编辑:
以某种方式删除冒号.这种"扁平化"究竟应该做什么?
xsd的展平采用了包含大量包含的xsd,并将其全部放入一个文件中(没有任何包含).
是否有任何命令行工具可以根据 XSD 1.1版验证 XML ?
Xmllint 不验证版本 1.1。
这是我的示例 XML 代码:
<Address>
<StreetAddress></StreetAddress>
<OtherDestination />
<City>TORONTO</City>
</Address>
Run Code Online (Sandbox Code Playgroud)
目前正在使用这个 XSD:
<xs:element name="Address" nillable="true">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element ref="StreetAddress" minOccurs="0"/>
<xs:element ref="OtherDestination" minOccurs="0"/>
<xs:element ref="City" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
我想id向Address这样的元素添加一个属性..
<Address id="first">
<StreetAddress></StreetAddress>
<OtherDestination />
<City>TORONTO</City>
</Address>
Run Code Online (Sandbox Code Playgroud)
我应该如何更改现有的 XSD 以满足我的要求?
我正在编写一个库,它根据XSD中定义的XML消息格式生成xml消息.但是,我对以下架构有几个问题:
对象中是否SOPClass需要元素ParticipantObjectIdentificationContents?
<xs:complexType name="ParticipantObjectIdentificationContents">
<xs:sequence>
<!-- there are other elements here -->
<xs:group ref="DICOMObjectDescriptionContents"/>
<!-- there are other elements here -->
</xs:sequence>
</xs:complexType>
<xs:group name="DICOMObjectDescriptionContents">
<xs:sequence>
<!-- there are other elements here -->
<xs:element ref="SOPClass"/>
<!-- there are other elements here -->
</xs:sequence>
</xs:group>
<xs:element name="SOPClass">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="Instance"/>
</xs:sequence>
<xs:attribute name="UID" type="xs:token"/>
<xs:attribute name="NumberOfInstances" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
<xs:element name="Instance">
<xs:complexType>
<xs:attribute name="UID" use="required" type="xs:token"/>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud) XML Schema 中十进制类型的最小和最大可接受值是多少?( type="xs:decimal")?
我对 XML 非常陌生,目前准备使用 Ineasysteps。我不断从解析器那里得到同样的问题
5:元素“xsd:schema”的前缀“xsd”未绑定。
这是 hello.xml:
<?xml version = "1.0" encoding = "UTF-8" ?>
<!-- XML in easy steps - Page 82. -->
<doc xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = "hello.xsd" >
<msg>Hello World</msg>
</doc>
Run Code Online (Sandbox Code Playgroud)
这是 hello.xsd 文档
<?xml version="1.0" encoding = "UTF-8" ?>
<!-- XML in easy steps - Page 84. -->
<xsd:schema>
<!-- DECLARE ELEMENTS. -->
<!-- Simple types. -->
<xsd:element name="msg" type="xsd:string"/>
<!-- Complex types. -->
<xsd:element name="doc" type="docType"/>
<!-- DEFINE STRUCTURE. -->
<xsd:complexType name="docType">
<xsd:sequence>
<xsd:element ref="msg"/> …Run Code Online (Sandbox Code Playgroud) 目标:创建一个complexType,允许元素"skip"以任意顺序包含任意元素,并且无误地验证我的xml.
架构:skip.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns="http://www.example.com/main"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/main"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
>
<xs:complexType name="skip">
<xs:sequence>
<xs:any minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我将skip.xsd导入到我的main.xsd中
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:esc="http://www.escmatrix.com/main"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com/main"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
>
<xs:include
schemaLocation="http://www.example/skip" />
<xs:element name="tasks">
<xs:complexType>
<xs:choice minOccurs="0"
maxOccurs="unbounded" >
<xs:element name="skip"
type="esc:skip" />
</xs:choice>
</xs:complexType>
</xs:element>
<xs:schema>
Run Code Online (Sandbox Code Playgroud)
我需要验证可以具有以下形式的xml:
<skip>
<anyelement1></anyelement1>
<anyelement2></anyelement2>
<anyelementN></anyelementN>
</skip>
Run Code Online (Sandbox Code Playgroud)
问题:验证时出错; "cvc-complex-type.2.4.c:匹配的通配符是严格的,但是找不到元素'anyelement1'的声明"
我正在尝试解决Eclipse遇到的XML验证问题。
当我尝试根据指定的架构验证xml时,我立即得到一个
No grammar constraints (DTD or XML Schema) referenced in the document.
错误。我尝试针对其进行验证的XML模式位于远程Web服务器上。我办公室中的某些人可以对此进行验证,而其他人则不能。我们正在使用相同的xml。
我注意到,成功进行验证后,Eclipse需要花费几分钟的时间,大概是因为它正在在线搜索模式。las,如果无法在我的计算机上进行验证,则故障是立即发生的。好像Eclipse甚至没有尝试在线搜索。
我目前正在使用Kepler发行版的Eclipse IDE JD(我认为是4.3),但是在Juno(3.8)上使用相同的xml进行验证既成功又失败。无论Eclipse版本如何,都能够成功进行验证的机器都是成功的。同样,无论Eclipse版本如何,都不成功的机器都是这样。
我完全迷路了。
我正在尝试根据 XSD 验证 XML。在这个 XML 中有带命名空间和不带命名空间的标签。
<my:person xmlns:my="http://my.namespace.com">
<my:name>John Doe</my:name>
<my:year>1988</my:year>
<namespaceLessElement>some value</namespaceLessElement>
</my:person>
Run Code Online (Sandbox Code Playgroud)
我的 XSD 看起来像这样。验证失败,因为根据 XSD,namespaceLessElement有一个命名空间。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema xmlns:myNamespace="http://my.namespace.com"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://my.namespace.com"
elementFormDefault="qualified">
<xs:element name="person" type="myNamespace:person"/>
<xs:complexType name="person">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="year" type="xs:int"/>
<xs:element name="namespaceLessElement" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
我找不到有关如何关闭namespaceLessElement. 有没有办法做到这一点?
XML 文档已嵌入 DTD 声明并且失败。
这里是DTD:
<!DOCTYPE movieList [
<!ELEMENT movieList (movie+)>
<!ELEMENT movie (title+, rating+, runTime+, genreList*, dateReleased+,
country+, review+, description+, director+)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT rating (#PCDATA)>
<!ELEMENT runTime (#PCDATA)>
<!ELEMENT genreList (genre+)>
<!ELEMENT genre (#PCDATA)>
<!ELEMENT dateReleased (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<!ELEMENT review (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT director (#PCDATA)>
]>
Run Code Online (Sandbox Code Playgroud)
这是 XML 元素:
<movieList>
<movie>
<title>Jaws</title>
<rating>PG</rating>
<runTime>124 minutes</runTime>
<genreList>
<genre>Adventure</genre>
<genre>Thriller</genre>
</genreList>
<dateReleased>20 June 1975</dateReleased>
<country>USA</country>
<review>8</review>
<description>When a gigantic great white shark begins to menace …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,只需将XML文件作为BLOB上传到数据库.我知道有几种方法可以使用XML验证DocumentBuilderFactory,DocumentBuilder然后解析它等,但我所说的数据很大,输入XML文件中出现异常的可能性较小.
但是,只是为了确保语法正确,有没有办法捕获文件中的异常而不实际解析每个文件?