小编C. *_*een的帖子

<xs:any>和匹配的通配符错误

目标:创建一个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'的声明"

xml eclipse xsd xml-validation

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

合金平等

我有一个Alloy模型,其中包含以下内容:

abstract sig person{}

one sig john,Steve extends person  {Gender: man} 

sig man{}

fact {
  all name: person, Gender: man | 
      name.Gender = name.Gender => person =person}
Run Code Online (Sandbox Code Playgroud)

如何在两个签名之间取得平等?

alloy

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

使用具有导入的 xsd 验证 XML 文档

我已经在互联网上搜索了 24 小时,但找不到有效的解决方案。

我有一个包含导入行的架构文件:

<xsd:import namespace="http://www.w3.org/2000/09/xmldsig#" 
            schemaLocation=
              "http://www.w3.org/TR/2001/PR-xmldsig-core-20010820/xmldsig-core-schema.xsd"/>
Run Code Online (Sandbox Code Playgroud)

这是我验证 Xml 的代码:

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add(null, @"C:\TEMP\myschema.xsd");

XmlReader xmlReader = XmlReader.Create(new StringReader(document.InnerXml), settings);
while (xmlReader.Read()) { }
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我得到:The 'http://www.w3.org/2000/09/xmldsig#:Signature' element is not declared.

如果我将代码(根据搜索建议)更改为:

settings.ValidationType = ValidationType.DTD;
settings.DtdProcessing = DtdProcessing.Parse;
Run Code Online (Sandbox Code Playgroud)

然后我没有收到错误,但验证不起作用,因为我故意插入了一个无效值来测试验证是否正常工作。

我尝试添加直接导入的架构:

settings.Schemas.Add(null, @"C:\TEMP\xmldsig-core-schema.xsd");
Run Code Online (Sandbox Code Playgroud)

但收到错误:For security reasons DTD is prohibited in this XML document. To enable DTD processing...

我已经尝试了我能想到的以及搜索建议的 XmlReaderSettings 设置的所有组合。

我现在真的很困惑。

c# xml xsd xsd-validation

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

我该如何解决“文档中没有引用语法限制(DTD或XML模式)”。警告

我有一个eclipse动态的Web项目,此警告出现在所有XML文件中;

在文档中没有引用语法约束(DTD或XML模式)。

在此处输入图片说明

我该如何解决?

xml eclipse dtd xml-parsing

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

Alloy参数声明中的子集签名 - 它们是否未被检查?

我在Alloy模型中得到意想不到的结果.请考虑以下模型,该模型描述了对HTTP请求的响应的几个方面:

// Code:  an HTTP return code
abstract sig Code {}
one sig rc200, rc301, rc302 extends Code {}

// State:  the current state of a resource
sig State {}

// subsets of State: some resources are green, some red
// (also:  some neither, some both)
sig Green in State {}
sig Red in State {}

// Response:  a return code + state pair
sig Response {
  rc : one Code,
  entity_body : lone State
}

// some subclasses of …
Run Code Online (Sandbox Code Playgroud)

alloy

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

为什么省略可选子元素时 DTD 验证失败?

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 dtd xml-validation

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

WSDL肥皂响应验证

我有一个wsdl定义了一个模式:

<xsd:schema elementFormDefault="unqualified" 
            targetNamespace="http://www.xpto.com/xpto">
Run Code Online (Sandbox Code Playgroud)

和元素:

<xsd:element name="insertResponse">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element maxOccurs="1" minOccurs="1" name="sys_id" 
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="table" 
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="display_name"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="display_value"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="status"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="status_message"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="error_message" 
                    type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

但是当我执行操作并获得响应时,SoapUI说它无效:

<SOAP-ENV:Envelope 
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <insertResponse xmlns="http://www.xpto.com/xpto">
         <sys_id>something</sys_id>
         <table>something</table>
         <display_name>number</display_name>
         <display_value>something</display_value>
         <status>something</status>
      </insertResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

SoapUI消息(包含易读性的行):

line 4: Expected element 'sys_id' instead of
'sys_id@http://www.xpto.com/xpto' here in element 
insertResponse@http://www.xpto.com/xpto
Run Code Online (Sandbox Code Playgroud)

如果我将WSDL更改为包含elementFormDefault="qualified",则在模式中,相同的响应是有效的.

为什么没有这个响应无效 …

xsd wsdl

0
推荐指数
1
解决办法
5624
查看次数

如何使用 XSD 允许任意数量的任何属性?

如何<table>用XSD实现简单的标签匹配?

以下不起作用:

<xs:element name="table">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="tr" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="td" 
                        minOccurs="0" 
                        maxOccurs="unbounded" 
                        type="MixedTemplateContentContainer"/>  
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:anyAttribute/>
  </xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)

如果我在 table 标签中使用任何属性,它会失败:

<table ccc="table" bgcolor="#ffffff">
<tr align="center"><td>
Run Code Online (Sandbox Code Playgroud)

属性 'ccc' 不允许出现在元素 'table' 中。

xml xsd

0
推荐指数
1
解决办法
2206
查看次数

元素'foo':不期望这个元素".期望是({url} foo,{url} bar)之一

使用方案验证XML DOMDocument时:

$ result = $ Document - > schemaValidate('../../ DTE/document/scheme.xsd');

我收到一条警告信息:

警告:DOMDocument :: schemaValidate():元素'foo':不期望此元素.预期是({url} foo,{url} bar)之一.

'foo'和'{url} foo'有什么区别以及如何修复此警告?

php xml xsd

0
推荐指数
1
解决办法
616
查看次数

标签 统计

xml ×6

xsd ×5

alloy ×2

dtd ×2

eclipse ×2

xml-validation ×2

c# ×1

php ×1

wsdl ×1

xml-parsing ×1

xsd-validation ×1