标签: xsd

JAVA中的XSD验证错误

我正在尝试使用以下代码从给定的XSD文件验证我的XML文件,

        Source xmlFile = new StreamSource(fXmlFile);
        SchemaFactory schemaFactory = SchemaFactory
        .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
        Schema schema = schemaFactory.newSchema(new File("presentation.xsd"));
        Validator validator = schema.newValidator();
        try {
            validator.validate(xmlFile);
            System.out.println(xmlFile.getSystemId() + " is valid");
        } catch (SAXException e) {
            System.out.println(xmlFile.getSystemId() + " is NOT valid");
            System.out.println("Reason: " + e.getLocalizedMessage());
        }
Run Code Online (Sandbox Code Playgroud)

我上传了我的XSD文件到这里给你看:http://orhancanceylan.com/stack/presentation.xsd

但是当我运行我的代码时,我收到此错误:

org.xml.sax.SAXParseException: s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'.
Run Code Online (Sandbox Code Playgroud)

有什么问题,我该如何解决?

java xml validation xsd

2
推荐指数
1
解决办法
2437
查看次数

lxml/MathML XML Schema - 如何修复"内容模型不是决定论者".错误?

我正在遵循lxml验证文档来构建一个类,该类根据Math ML 3.0模式验证给定的XML字符串.这是班级:

class XMLSchema(object):

    def __init__(self, path_to_xsd_file):
        with open(path_to_xsd_file) as f:
            xmlschema_doc = etree.parse(f)
        self.xmlschema = etree.XMLSchema(xmlschema_doc)

    def validate(self, well_formed_xml_string):
        """Validates a well-formed XML string against an XML schema.

        Returns True if xml_string is valid, False if not.

        """
        xml = etree.parse(StringIO(well_formed_xml_string))
        return self.xmlschema.validate(xml)
Run Code Online (Sandbox Code Playgroud)

实例化它会产生以下结果:

>>> x = XMLSchema('mathml3.xsd')
Traceback (most recent call last):
...
lxml.etree.XMLSchemaParseError: complex type 
'annotation-xml.model': The content model is not determinist., line 42
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

python xsd lxml mathml

2
推荐指数
1
解决办法
2582
查看次数

'minOccurs'属性不能出现

我正在构建我的svcutil命令行以从OSEO模式生成业务对象.

每当它告诉我"xxx"类型丢失时,我确定我需要包含在命令行中的xsd并添加它.到目前为止,我的命令行如下所示:

svcutil /language:C# /namespace:*,OGC.OSEO.DataContract /out:IOSEO.cs oseo/1.0/oseo.wsdl oseo/1.0/oseo.xsd ows/2.0/owsAll.xsd ows/2.0/ows19115subset.xsd ows/2.0/owsAdditionalParameters.xsd ows/2.0/owsCommon.xsd ows/2.0/owsContents.xsd ows/2.0/owsDataIdentification.xsd ows/2.0/owsExceptionReport.xsd ows/2.0/owsGetCapabilities.xsd ows/2.0/owsGetResourceByID.xsd ows/2.0/owsInputOutputData.xsd ows/2.0/owsManifest.xsd ows/2.0/owsOperationsMetadata.xsd ows/2.0/owsServiceIdentification.xsd ows/2.0/owsServiceProvider.xsd ows/2.0/owsDomainType.xsd http://www.w3.org/2006/03/addressing/ws-addr.xsd sweCommon/2.0/block_components.xsd sweCommon/2.0/advanced_encodings.xsd sweCommon/2.0/basic_types.xsd sweCommon/2.0/choice_components.xsd sweCommon/2.0/record_components.xsd sweCommon/2.0/simple_components.xsd sweCommon/2.0/simple_encodings.xsd sweCommon/2.0/swe.xsd xlink/1.0.0/xlinks.xsd swes/2.0/swes.xsd swes/2.0/swesCommon.xsd swes/2.0/swesContents.xsd swes/2.0/swesDeleteSensor.xsd swes/2.0/swesDescribeSensor.xsd swes/2.0/swesInsertSensor.xsd swes/2.0/swesNotification.xsd swes/2.0/swesUpdateSensorDescription.xsd gml/3.2.1/basicTypes.xsd gml/3.2.1/coordinateOperations.xsd gml/3.2.1/coordinateReferenceSystems.xsd gml/3.2.1/coordinateSystems.xsd gml/3.2.1/coverage.xsd gml/3.2.1/datums.xsd gml/3.2.1/defaultStyle.xsd gml/3.2.1/deprecatedTypes.xsd gml/3.2.1/dictionary.xsd gml/3.2.1/direction.xsd gml/3.2.1/dynamicFeature.xsd gml/3.2.1/feature.xsd gml/3.2.1/geometryAggregates.xsd gml/3.2.1/geometryBasic0d1d.xsd gml/3.2.1/geometryBasic2d.xsd gml/3.2.1/geometryComplexes.xsd gml/3.2.1/geometryPrimitives.xsd gml/3.2.1/gml.xsd gml/3.2.1/gmlBase.xsd gml/3.2.1/grids.xsd gml/3.2.1/measures.xsd gml/3.2.1/observation.xsd gml/3.2.1/referenceSystems.xsd gml/3.2.1/temporal.xsd gml/3.2.1/temporalReferenceSystems.xsd gml/3.2.1/temporalTopology.xsd gml/3.2.1/topology.xsd gml/3.2.1/units.xsd gml/3.2.1/valueObjects.xsd gmd/applicationSchema.xsd gmd/citation.xsd gmd/constraints.xsd gmd/content.xsd gmd/dataQuality.xsd gmd/distribution.xsd gmd/extent.xsd gmd/freeText.xsd …
Run Code Online (Sandbox Code Playgroud)

xml xsd svcutil.exe

2
推荐指数
1
解决办法
4874
查看次数

当Groovy中的XSD在某些URL可用时,可以针对XSD验证XML文档

当某些URL可用时,任何人都可以帮我使用XSD验证带有XSD的XML模式吗?

validation url schema groovy xsd

2
推荐指数
1
解决办法
6114
查看次数

xsd中的元素可以有任意名称吗?

我是xsd验证的新手,我正在尝试验证一个选择标签是否有一组特定的元素,但也有一个任意命名的元素.类似于以下内容:

...
<xs:choice>
  <xs:element name="test1" type="xs:string" />
  <xs:element name="test2" type="xs:string" />
  <xs:element name="-some regex or something to specify arbitrary name here" type="xs:string" />
</xs:choice>
...
Run Code Online (Sandbox Code Playgroud)

XML:

...
<test1>example text</test1>
<test2>example text again</test2>
<exampleNode>example text</exampleNode>
...
Run Code Online (Sandbox Code Playgroud)

这可能在xsd中吗?验证新的任意命名节点?

xml xsd

2
推荐指数
1
解决办法
1813
查看次数

complexType中的XJC javaType适配器

我想让XJC在生成bean时在complexType中使用javaType标记.这是不允许的?我真的错过了很好的文档和一些可以理解的错误信息.

这是我正在尝试失败的错误:

  • 编译器无法兑现此转换自定义.它附加到错误的位置,或与其他绑定不一致.
  • (以上自定义附加到架构中的以下位置)

这是XSD:

<xs:complexType name="MyMap">
  <xs:annotation>
    <xs:appinfo>
      <xjc:javaType name="my.company.HashMapHidingGenerics" adapter="my.company.adapter.MyMapAdapter" />
    </xs:appinfo>
  </xs:annotation>
  <xs:sequence>
    <xs:element minOccurs="0" maxOccurs="unbounded" name="entry" type="MyEntry"/>
  </xs:sequence>
</xs:complexType>
<xs:complexType name="MyEntry">
  <xs:attribute name="someAttribute" use="optional"/>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)

java xml xsd jaxb xjc

2
推荐指数
1
解决办法
6035
查看次数

用于<xs:choice>元素的XJC Java类生成,它不是无限制的

在昨天这个类似的问题之后,我有另一个关于XML模式和XJC绑定中的继承的问题.

给出以下选择元素,使Book和Journal具有共同的父类型(Publication).

<xsd:choice >
    <xsd:element name="Book" type="Book" />
    <xsd:element name="Journal" type="Journal" />
</xsd:choice>
Run Code Online (Sandbox Code Playgroud)

生成的Java类属性如下:

private Book book;
private Journal journal;
Run Code Online (Sandbox Code Playgroud)

因为<xsd:choice>意味着可能有一个Book或一个Journal我更喜欢

private Publication bookOrJournal;
Run Code Online (Sandbox Code Playgroud)

如果我通过maxOccurs="unbounded"在choice元素中设置了一个Publications列表,它会以这种方式工作,我会得到

private List<Publication> bookOrJournal;
Run Code Online (Sandbox Code Playgroud)

如何使用非集合属性实现此目的?

inheritance xsd jaxb xjc

2
推荐指数
1
解决办法
2386
查看次数

是否可以在匿名类型上指定列表长度?

我正在将旧数据集转换为schema/xml.它包含一些具有默认值的数组元素.我接近xs:list的解决方案;

    <xs:element name="pressure"
            default="0.22 0.33 0.44 0.55 0.66 0.77 0.88 0.88 0.88 0.88">
  <xs:simpleType>
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:float">
           <xs:minInclusive value="0.0" />
           <xs:maxInclusive value="2.0" />
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

如何将列表的长度限制为10?也就是说,我会把它放在哪里

    <xs:length value="10">?
Run Code Online (Sandbox Code Playgroud)

xsd

2
推荐指数
1
解决办法
1621
查看次数

如何使用xsom\dom\jaxb获取xsd的最大深度?

如何使用xsom获取xsd的最大深度.

例如:xsd的每个复杂类型下的元素总数?

此外,如果复杂类型下复杂类型下的元素+属性的数量......使用dom\xsom\jaxb

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:element name="root" type="root">
    <xs:annotation>
        <xs:documentation>
            Comment describing your root element
        </xs:documentation>
    </xs:annotation>
 </xs:element>

 <xs:complexType name="root">
    <xs:sequence>
        <xs:element name="element_count" type="xs:string"></xs:element>
        <xs:element name="employee" type="employee" maxOccurs="unbounded" minOccurs="0"></xs:element>
    </xs:sequence>
 </xs:complexType>

 <xs:complexType name="employee">
    <xs:sequence>
        <xs:element name="name" type="xs:string"></xs:element>
        <xs:element name="ID" type="xs:string"></xs:element>
        <xs:element name="Addresses" type="addresses" maxOccurs="1" minOccurs="0"></xs:element>
    </xs:sequence>
 </xs:complexType>

 <xs:complexType name="addresses">
    <xs:sequence>
        <xs:element name="address" type="address" maxOccurs="unbounded" minOccurs="0"></xs:element>
    </xs:sequence>
 </xs:complexType>

 <xs:complexType name="address">
    <xs:sequence>
        <xs:element name="line1" type="xs:string"></xs:element>
        <xs:element name="line2" type="xs:string"></xs:element>
        <xs:element name="city" type="xs:string"></xs:element>
        <xs:element name="type" type="xs:string"></xs:element>
    </xs:sequence>
 </xs:complexType>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)

java xml xsd xsom

2
推荐指数
1
解决办法
2041
查看次数

使用XSD进行XML验证会导致无效的子元素错误,我不明白为什么?

使用以下内容我总是得到一个无效的子元素错误.我是XML的新手,我一直在寻找网络,试图弄清楚这一点,但没有运气.我有另一个XSD验证XML提交给我的应用程序,它工作得很好,但它使用属性而不是元素.无法使用XSD中的元素来验证通过我无法控制的第三方应用程序提交的XML.

XSD

<?xml version="1.0" encoding="Windows-1252"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"     xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="SCCAParticipationList">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="Entry">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Address" type="xs:string" minOccurs="0" />
              <xs:element name="CarModel" type="xs:string" minOccurs="0" />
              <xs:element name="CarNo" type="xs:string" minOccurs="0" />
              <xs:element name="TotalTm" type="xs:string" minOccurs="0" />
              <xs:element name="BestTm" type="xs:string" minOccurs="0" />
              <xs:element name="Region" type="xs:string" minOccurs="0" />
              <xs:element name="MemberNo" type="xs:string" minOccurs="1" />
              <xs:element name="FirstName" type="xs:string" minOccurs="1" />
              <xs:element name="LastName" type="xs:string" minOccurs="1" />
              <xs:element name="Class" type="xs:string" minOccurs="1" />
              <xs:element name="Pos" type="xs:string" minOccurs="1" />
              <xs:element name="UniqueID" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType> …
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)

c# xml xsd

2
推荐指数
1
解决办法
4110
查看次数

标签 统计

xsd ×10

xml ×6

java ×3

jaxb ×2

validation ×2

xjc ×2

c# ×1

groovy ×1

inheritance ×1

lxml ×1

mathml ×1

python ×1

schema ×1

svcutil.exe ×1

url ×1

xsom ×1