我在网上看到过几个关于如何使用XML架构或DTD for logback.xml文件至少在IDEA或Eclipse等IDE中进行非常基本的验证和自动完成的讨论,但我从未见过任何解决方案
你是否?
所以我得到了这个XML模式:
<?xml version="1.0"?> <xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="request">
<xs:complexType>
<xs:sequence>
<xs:element name="amenity">
<xs:complexType>
<xs:sequence>
<xs:element name="description" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element> </xs:schema>
Run Code Online (Sandbox Code Playgroud)
如何使描述元素可选?因此,带有description元素和不带XML的XML都将针对XSD进行验证.
我在另一个文件中有一个XML文件和一个XML模式,我想验证我的XML文件是否符合模式.我如何在Python中执行此操作?
我更喜欢使用标准库的东西,但如果需要,我可以安装第三方软件包.
我通过模式生成器运行了一个xml文件,生成的所有内容都是预期的,除了一个节点:
<xs:element name="office" type="xs:NCName"/>
Run Code Online (Sandbox Code Playgroud)
到底是xs:NCName什么?为什么人们会使用它xs:string呢?
我知道我以前做过这个,但今天不行,也找不到解释怎么做的地方.这可能是我的睡眠不足,但我怀疑是小鬼.
我有一个XML文档和一个充满XSD的目录来定义它.如何设置Visual IDE以通知我验证失败,然后在给定的上下文中提供有效标签和属性的智能感知列表?
我尝试过的:
Visual Studio仍然没有放弃任何有用的调试或编辑信息.我试过2010年和2008年(我在2008年之前就已经做过了)
更新:我有另一个开发人员尝试这个,它也失败了.他知道他已经使用其他XML文档完成了它并使其工作.然后我下载了Oxygen XML编辑器,它在相同的XML和XSD文件上运行良好,所以文件看起来很好(或者Oxygen更宽容/更灵活......)
由于我们可以从C#(.NET)查询XML文件,为什么我们需要一个XSD文件?我知道它是特定XML文件的元数据文件.我们可以在XSD中指定关系,但它的功能是什么呢?
<?xml version="1.0" encoding="utf-8" ?>
<Root>
<Customers>
<Customer CustomerID="GREAL">
<CompanyName>Great Lakes Food Market</CompanyName>
<ContactName>Howard Snyder</ContactName>
<ContactTitle>Marketing Manager</ContactTitle>
<Phone>(503) 555-7555</Phone>
<FullAddress>
<Address>2732 Baker Blvd.</Address>
<City>Eugene</City>
<Region>OR</Region>
<PostalCode>97403</PostalCode>
<Country>USA</Country>
</FullAddress>
</Customer>
</Customers>
<Orders>
<Order>
<CustomerID>GREAL</CustomerID>
<EmployeeID>6</EmployeeID>
<OrderDate>1997-05-06T00:00:00</OrderDate>
<RequiredDate>1997-05-20T00:00:00</RequiredDate>
<ShipInfo ShippedDate="1997-05-09T00:00:00">
<ShipVia>2</ShipVia>
<Freight>3.35</Freight>
<ShipName>Great Lakes Food Market</ShipName>
<ShipAddress>2732 Baker Blvd.</ShipAddress>
<ShipCity>Eugene</ShipCity>
<ShipRegion>OR</ShipRegion>
<ShipPostalCode>97403</ShipPostalCode>
<ShipCountry>USA</ShipCountry>
</ShipInfo>
</Order>
<Order>
<CustomerID>GREAL</CustomerID>
<EmployeeID>8</EmployeeID>
<OrderDate>1997-07-04T00:00:00</OrderDate>
<RequiredDate>1997-08-01T00:00:00</RequiredDate>
<ShipInfo ShippedDate="1997-07-14T00:00:00">
<ShipVia>2</ShipVia>
<Freight>4.42</Freight>
<ShipName>Great Lakes Food Market</ShipName>
<ShipAddress>2732 Baker Blvd.</ShipAddress>
<ShipCity>Eugene</ShipCity>
<ShipRegion>OR</ShipRegion>
<ShipPostalCode>97403</ShipPostalCode>
<ShipCountry>USA</ShipCountry>
</ShipInfo>
</Order>
</Orders>
</Root>
Run Code Online (Sandbox Code Playgroud)
我想Order …
我有以下XML标记
<price currency="euros">20000.00</price>
Run Code Online (Sandbox Code Playgroud)
如何将currency属性限制为以下之一:
和价格加倍?
当我尝试在两者上输入类型时,我只是得到一个错误,这是我到目前为止所得到的:
<xs:element name="price">
<xs:complexType>
<xs:attribute name="currency" type="xs:string">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="pounds" />
<xs:enumeration value="euros" />
<xs:enumeration value="dollars" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud) 做elementFormDefault什么,什么时候应该使用?
所以我找到了一些elementFormDefault值的定义:
qualified - 元素和属性位于架构的targetNamespace中
不合格 - 元素和属性没有命名空间
因此,根据该定义,我认为如果将模式设置为限定,那么为什么必须在类型前加上命名空间?那些你甚至有一套不合格的场景是什么?我尝试使用谷歌搜索,但我得到的只是一些非常难以理解的W3C页面.
这是我现在正在使用的文件,为什么我需要声明类型,target:TypeAssignments因为我声明它targetNamespace是同一个xmlns:target?
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
xmlns:target="http://www.levijackson.net/web340/ns"
targetNamespace="http://www.levijackson.net/web340/ns"
elementFormDefault="qualified">
<element name="assignments">
<complexType>
<sequence>
<element name="assignments" type="target:TypeAssignments"
minOccurs="1" maxOccurs="unbounded"/>
</sequence>
</complexType>
</element>
<complexType name="TypeAssignments">
<sequence>
<element name="assignment" type="target:assignmentInfo"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="assignmentInfo">
<sequence>
<element name="name" type="string"/>
<element name="page" type="target:TypePage"/>
<element name="file" type="target:TypeFile"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="string" use="required"/>
</complexType>
<simpleType name="TypePage">
<restriction base="integer">
<minInclusive value="50" />
<maxInclusive value="498" /> …Run Code Online (Sandbox Code Playgroud) 我在Delphi XE2中使用XML数据绑定向导.架构需要此类型的标记:
<xs:element name="MyReport" type="MyReportType" />
<xs:complexType name="MyReportType">
<xs:all>
<xs:element name="Header" type="HeaderType" />
<xs:element name="Values" type="ValuesType" />
<xs:element name="Events" type="EventsType" />
</xs:all>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
问题是,如果我没有向Values-group添加任何元素,则不会有<Values>-tag,并且XML文件将无法针对XSD进行验证.如果接口提供"添加"Values-tag的方法,这可能不会成为问题.
有没有一种标准的处理方法,或者我是否正确使用生成的代码?
简而言之,使用数据绑定向导中的代码,有没有办法,解决方法或其他方式产生以下XML(这是在没有子节点时使用上述模式进行验证所需的),给定HeaderType ,ValuesType和EventsType属于complexType:
<MyReport>
<Header />
<Values />
<Events />
</MyReport>
Run Code Online (Sandbox Code Playgroud)
(我知道还有其他类似的问题,比如<xs:sequence>在最终的XML文件中没有强制执行正确的顺序而生成的代码,但至少对于那个问题,只需要按照正确的顺序插入子代就可以解决这个问题.我仍然如果Embarcadero提供一个完整的界面,考虑到更多的这些功能,那将会很好.)
我是jQuery的新手,想要解析一个xml文档.
我能够使用默认名称空间解析常规XML,但使用xml,例如:
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="30">
<s:AttributeType name="ows_ID" rs:name="ID" rs:number="1">
<s:datatype dt:type="i4" dt:maxLength="4" />
</s:AttributeType>
<s:AttributeType name="ows_DocIcon" rs:name="Type" rs:number="2">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_LinkTitle" rs:name="Title" rs:number="3">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
<s:AttributeType name="ows_ServiceCategory" rs:name="Service Category" rs:number="4">
<s:datatype dt:type="string" dt:maxLength="512" />
</s:AttributeType>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row ows_ID="2" ows_LinkTitle="Sample Data 1" />
<z:row ows_ID="3" ows_LinkTitle="Sample Data 2" />
<z:row ows_ID="4" ows_LinkTitle="Sample Data 3" />
</rs:data>
</xml>
Run Code Online (Sandbox Code Playgroud)
我真正想要的只是他们<z:row>的.
到目前为止,我一直在做:
$.get(xmlPath, {}, function(xml) …Run Code Online (Sandbox Code Playgroud) xml ×10
xsd ×10
delphi ×1
delphi-xe2 ×1
dtd ×1
intellisense ×1
java ×1
javascript ×1
jquery ×1
logback ×1
namespaces ×1
python ×1
validation ×1