从我与XML和Schema验证的逗留,似乎当为XMLReader实例启用了片段级一致性时,XML源将停止针对任何包含的Schema进行验证.
但是,我无法从MSDN文档中验证这一点,因为它似乎没有根据一致性级别描述XSD架构行为.此外,如果我认为这个问题是真的,我找不到它的解决方法.
我想知道如何针对XSD架构验证XML 片段.
在我的情况下,我正在验证XHTML 1 Strict Schema.由于像<center>这样弃用的HTML标签没有被标记为无效,这也是我认为片段一致性忽略模式的部分原因.此外,当我在同一场景中使用文档级一致性时,成功标记了有效性错误.
Python依旧
lxml.etree.XMLSchema(tree)
当我在apache server + mod_wsgi上使用它时(Windows)
当我使用Django dev服务器 - 一切正常
如果您了解针对XSD的其他不错的XML验证解决方案,请告诉我
更新:
我正在使用soaplib,它使用lxml
logger.debug("building schema...")
self.schema = etree.XMLSchema(etree.parse(f))
logger.debug("schema %r built, cleaning up..." % self.schema)
我在apache日志中看到"构建模式...",但我没有看到"架构%r已构建,清理......"
更新2: 我使用MSVS 2010 visual C++构建了lxml 2.3; 之后它在这条线上崩溃了
self.schema = etree.XMLSchema(etree.parse(f))在httpd.exe中0x7c919af2处的未处理异常:0xC0000005:访问冲突写入位置0x00000010.
如何使用Java中的XSD验证XML文件?我们事先不知道架构.我希望能够获得schemaLocation,下载XSD,缓存它,然后执行实际验证.
问题是,使用javax.xml.parsers.DocumentBuilder/ DocumentBuilderFactoryclasses我似乎无法schemaLocation提前获得.这是什么诀窍?我应该研究哪些课程?
也许我可以使用更合适的API?整个问题是我们需要动态验证,而不必(必须)在本地使用XSD.
如何获得schemaLocationXSD文件中定义的URL ?
我知道你可以设置功能/属性,但这是另一回事.我需要schemaLocation先从XSD 获得.
请指教!
我正在开发一个跨平台的应用程序(适用于Windows,Mac等)以及32位和64位计算机.我有很多XML文件需要针对他们的XSD进行验证.
在Delphi XE3中有没有办法做到这一点?
我尝试过DTD验证,但我总是遇到"DTD禁止"错误.我也尝试过很多网站上提到的解决方案来解决这个错误,但我没有成功.
提前致谢.
以下是我用过的代码......
function TForm2.ValidateXML(const xmlFile : TFileName) : boolean;
var
xmlDoc: TXMLDocument;
begin
result := false;
xmlDoc := TXMLDocument.Create(nil) ;
try
xmlDoc.ParseOptions := [poResolveExternals, poValidateOnParse];
try
xmlDoc.LoadFromFile(xmlFile) ;
xmlDoc.Active := true; //this will validate
result := true;
except
on EX : EDOMParseError do
begin
ShowMessage('Invalid XML: ' + Ex.Message) ;
end;
end;
finally
xmlDoc := nil;
end;
end;
Run Code Online (Sandbox Code Playgroud) 当我在这个项目上工作时,我不断收到错误说:
元素'Customer'必须没有字符或元素信息项[children],因为类型的内容类型为空.
我不确定为什么这不起作用看到我按照笔记看起来像这样:
<xs:element name="Customer" type="xs:string">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
Run Code Online (Sandbox Code Playgroud)
我知道它说我不能type="xs:string"在那里,但那我怎么做它必须有一个字符串?
我想使用XSD文件进行模式验证.当我将XSD文件导入Eclipse而不运行验证类时,我有以下错误:
src-resolve:无法将名称'ds:Signature'解析为'element declaration'组件
我是XML和XSD验证过程的新手.虽然我在谷歌上寻找类似的问题,但我无法弄清楚这里有什么问题.
XSD文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xerces="http://xerces.apache.org"
xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:abc="http://abc.123.com" targetNamespace="http://abc.123.com"
xmlns:xades141="http://uri.etsi.org/01903/v1.4.1#" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://uri.etsi.org/01903/v1.3.2#" schemaLocation="XAdES.xsd"/>
<xs:import namespace="http://uri.etsi.org/01903/v1.4.1#" schemaLocation="XAdESv141.xsd"/>
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig-core-schema.xsd"/>
<xs:complexType name="headerType">
<xs:sequence>
<xs:element name="doorNumber" type="xs:int"/>
<xs:element ref="ds:Signature"/>
</xs:sequence>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud)
我该如何修改XSD来修复此错误?
我在针对XSD验证XML时遇到问题.验证器抛出
与元素类型"mpreader"相关联的属性"xsi:schemaLocation"的前缀"xsi"未绑定.
这是一个XML剪辑
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<mpreader xmlns="C:\Users\Dallan\Desktop\Mpreader\" xmlns:xs="http://www.w3.org/20one/XMLSchema-instance"
xsi:schemaLocation="C:\Users\Dallan\Desktop\Mpreader\mpreaderschemafinal.xsd">
<firmware>"3.4.16"</firmware>
<hardware>"2.3.53"</hardware>
<sn>"234-1three5"</sn>
<devices>
</devices>
</mpreader>
Run Code Online (Sandbox Code Playgroud)
这是XSD剪辑
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="C:Users/Dallan/Desktop/Mpreader/" elementFormDefault="qualified" targetNamespace="C:\Users\Dallan\Desktop\Mpreader\">
<xs:element name="mpreader">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:element name="firmware" type="xs:string"/>
<xs:element name="hardware" type="xs:string"/>
<xs:element name="sn" type="xs:string"/>
<xs:element name="devices">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个验证场景,我想从列表中选择至少一个非重复元素.
在某些地方:
<xs:choice minOccurs="1" maxOccurs="7">
<xs:element name="Sunday"/>
<xs:element name="Monday"/>
<xs:element name="Tuesday"/>
<xs:element name="Wednesday"/>
<xs:element name="Thursday"/>
<xs:element name="Friday"/>
<xs:element name="Saturday"/>
</xs:choice>
Run Code Online (Sandbox Code Playgroud)
但是,上述解决方案允许重复元素出现在列表中,这是我不想要的.
有效 XML的示例:
<Monday/>
<Tuesday/>
<Friday/>
Run Code Online (Sandbox Code Playgroud)
无效 XML的示例:
<Monday/>
<Monday/>
Run Code Online (Sandbox Code Playgroud)
这可以通过XSD实现,而无需对所有可能的序列进行硬编码吗?如果是这样的话?
XML验证失败,错误:
元素'CategoryPageUrl':' http://www.example.com/products?my_query_parameter [] = 45'不是原子类型'xs:anyURI'的有效值.,第29行
Feed看起来像这样:
<Category>
<ExternalId>1234</ExternalId>
<Name>Name</Name>
<CategoryPageUrl>http://www.example.com/products?my_query_parameter[]=45</CategoryPageUrl>
</Category>
Run Code Online (Sandbox Code Playgroud)
适当的架构看起来像这样:
<xs:complexType name="CategoryType">
<xs:all>
<xs:element name="ExternalId" type="ExternalIdType" minOccurs="0"/>
<xs:element name="Name" type="xs:string" minOccurs="0"/>
<xs:element name="CategoryPageUrl" type="xs:anyURI" minOccurs="0"/>
</xs:all>
</xs:complexType>
Run Code Online (Sandbox Code Playgroud) 我把我的代码放在XML验证网站上,它给了我这个错误:
第8行:4根元素后面的文档中的标记必须格式正确.
有问题的<xsl:output method = "html" doctype-system = "about:legacy-compat"/>行是,行.
<?xml version="1.0"?>
<!-- Fig. 15.21: sorting.xsl -->
<xsl:stylesheet version = "1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"/>
<!-- write XML declaration and DOCTYPE DTD information -->
*<xsl:output method = "html" doctype-system = "about:legacy-compat" />*
<!-- match document root -->
<xsl:template match="/"> -<html> <xsl:apply-templates/> </html>
</xsl:template>
Run Code Online (Sandbox Code Playgroud) xml-validation ×10
xml ×7
xsd ×7
python ×2
xml-parsing ×2
.net ×1
apache ×1
c# ×1
delphi ×1
firemonkey ×1
java ×1
lxml ×1
mod-wsgi ×1
xslt ×1