xsd 相关问题

XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。

Java:使用断言对 XML 进行 XSD 1.1 模式验证

我想针对包含断言的 xsd 1.1 文件测试生成的 xml 文件,并且我想在 Java 中执行此操作。 我的xml内容是 我想针对包含断言的 xsd 1.1 文件测试生成的 xml 文件,并且我想在 Java 中执行此操作。 我的xml内容是 <?xml version="1.0" encoding="UTF-8"?> <Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="person.xsd"> <Name>John Doe</Name> <Age>17</Age> </Person> xsd内容如下,包含两个断言 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1"> <xs:element name="Person"> <xs:complexType> <xs:sequence> <xs:element name="Name" type="xs:string"/> <xs:element name="Age" type="xs:integer"/> </xs:sequence> <xs:assert test="Age &gt;= 18"/> <xs:assert test="(string-length(Name) > 15)"/> </xs:complexType> </xs:element> </xs:schema> 我用 implementation("org.opengis.cite.xerces:xercesImpl-xsd11:2.12-beta-r1667115") 作为我的 build.gradle.kts 文件中的依赖项。以下 Java 代码有效: // That's the important String which instantiates a xsd 1.1 aware schema factory + validator SchemaFactory sf = SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1"); Schema s = sf.newSchema(new StreamSource(getClass().getResourceAsStream(xsdFilePath))); Validator v = s.newValidator(); v.validate(new StreamSource(getClass().getResourceAsStream(xmlFilePath))); 万岁,现在我收到验证异常: Exception in thread "main" org.xml.sax.SAXParseException; lineNumber: 6; columnNumber: 10; cvc-assertion: Assertion evaluation ('Age >= 18') for element 'Person' on schema type '#AnonType_Person' did not succeed. 问题 当我将年龄修正为 18 岁时,我不会收到有关名称的验证错误(长度 > 15),但我得到 Exception in thread "main" java.lang.NoClassDefFoundError: com/ibm/icu/text/UTF16 at org.eclipse.wst.xml.xpath2.processor.internal.function.FnStringLength.string_length(FnStringLength.java:105) at org.eclipse.wst.xml.xpath2.processor.internal.function.FnStringLength.evaluate(FnStringLength.java:74) at org.eclipse.wst.xml.xpath2.processor.DefaultDynamicContext.evaluate_function(DefaultDynamicContext.java:194) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1611) at org.eclipse.wst.xml.xpath2.processor.internal.ast.FunctionCall.accept(FunctionCall.java:46) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:2139) at org.eclipse.wst.xml.xpath2.processor.internal.ast.FilterExpr.accept(FilterExpr.java:52) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1258) at org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathExpr.accept(XPathExpr.java:43) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.do_bin_args(DefaultEvaluator.java:803) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:614) at org.eclipse.wst.xml.xpath2.processor.internal.ast.CmpExpr.accept(CmpExpr.java:106) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.do_expr(DefaultEvaluator.java:315) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1573) at org.eclipse.wst.xml.xpath2.processor.internal.ast.ParExpr.accept(ParExpr.java:40) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:2139) at org.eclipse.wst.xml.xpath2.processor.internal.ast.FilterExpr.accept(FilterExpr.java:52) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1258) at org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathExpr.accept(XPathExpr.java:43) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1607) at org.eclipse.wst.xml.xpath2.processor.internal.ast.FunctionCall.accept(FunctionCall.java:46) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:2139) at org.eclipse.wst.xml.xpath2.processor.internal.ast.FilterExpr.accept(FilterExpr.java:52) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:1258) at org.eclipse.wst.xml.xpath2.processor.internal.ast.XPathExpr.accept(XPathExpr.java:43) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.do_expr(DefaultEvaluator.java:315) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.visit(DefaultEvaluator.java:336) at org.eclipse.wst.xml.xpath2.processor.ast.XPath.accept(XPath.java:43) at org.eclipse.wst.xml.xpath2.processor.DefaultEvaluator.evaluate(DefaultEvaluator.java:290) at org.apache.xerces.impl.xs.AbstractPsychoPathXPath2Impl.evaluateXPathExpr(Unknown Source) at org.apache.xerces.impl.xs.XMLAssertPsychopathXPath2Impl.evaluateOneAssertion(Unknown Source) at org.apache.xerces.impl.xs.XMLAssertPsychopathXPath2Impl.evaluateAssertionsFromAComplexType(Unknown Source) at org.apache.xerces.impl.xs.XMLAssertPsychopathXPath2Impl.processAllAssertionsOnElement(Unknown Source) at org.apache.xerces.impl.xs.XMLAssertPsychopathXPath2Impl.endElement(Unknown Source) at org.apache.xerces.impl.xs.XSDAssertionValidator.handleEndElement(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.assertionValidatorEndElementDelegate(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.handleEndElement(Unknown Source) at org.apache.xerces.impl.xs.XMLSchemaValidator.endElement(Unknown Source) at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.jaxp.validation.StreamValidatorHelper.validate(Unknown Source) at org.apache.xerces.jaxp.validation.ValidatorImpl.validate(Unknown Source) at java.xml/javax.xml.validation.Validator.validate(Validator.java:124) at org.example.HelloWorld.validateXMLSchemaXerxes(HelloWorld.java:50) at org.example.HelloWorld.main(HelloWorld.java:31) Caused by: java.lang.ClassNotFoundException: com.ibm.icu.text.UTF16 at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526) ... 48 more 问题: 如何解决这个问题 到了 2024 年,仍然没有其他可用的开源库可以验证 xsd 1.1 断言吗? 它显然失败了,因为它期望 ICU4J 位于类路径上,但找不到它。 不,没有其他可用的开源实现。 (我花了大约一年的时间在 Saxon-EE 中编写(商业)模式处理器,所以这并不奇怪。)

回答 1 投票 0

在Python中解析xsd文件时出现奇怪的现象(特别是行号/引用)

我正在解析一个XSD文件,解析时发生了一个奇怪的现象。例如我有这个元素: 我正在解析 XSD 文件,解析时发生了一个奇怪的现象。例如,我有这个元素: <xsd:element name="Example" type="ExampleType" minOccurs="0"> <xsd:annotation> <xsd:documentation> <Description>This is the description</Description> <LineNumber>4</LineNumber> </xsd:documentation> </xsd:annotation> </xsd:element> 我正在使用此代码: #xml.etree.ElementTree annotation = element.find(".//xsd:annotation", namespace) if annotation is not None: documentation = annotation.find(".//xsd:documentation", namespace) if documentation is not None: for doc_child in documentation: tag = doc_child.tag.split('}')[-1] element_dict[element_name][tag] = doc_child.text.strip() 现在这是奇怪的部分。一旦我将 element_dict 转换为数据框并将数据框转换为 Excel,行号就会发生变化。我正在获取描述和行号,如果我在示例中打印出来,那就是: Description: This is the description LineNumber: 4 但是在excel文件中却是这样的 Description: This is the description LineNumber: Part A Line 12 我已经确认该元素是从 A 部分第 12 行(xsd 中的后续元素)中提取的,但我很困惑代码中的原因是什么?另外,我将如何解析它,以便我可以获得 和此参考行号? 好吧,我明白了。事实证明,当我提取数据时,有两个元素具有完全相同的名称(ExampleName)。 由于我将此数据添加到字典中,其中元素名称是键,所以我有两个元素更新同一记录。 { "Name" : "ExampleName", "LineNumber" : "4" } { "Name" : "ExampleName", "LineNumber" : "Part A Line 12" } 首先将行号“4”设置为“Part A Line 12”

回答 1 投票 0

Jaxb2Marshaller:使用 0/1 来编组 xsd:boolean 值与生成的 java 模型

我正在使用 Jaxb2Marshaller 来编组和解组肥皂请求和响应。 我的java模型类是使用xjc基于wsdl生成的。 我有一个奇怪的要求,类型的字段...

回答 1 投票 0

XSD 格式问题

我正在使用 Azure 逻辑应用从 MS Dynamics Business Central 检索数据。该数据使用 XSD 格式转换为 XML。然后 XML 被发送到外部系统。 我设法得到...

回答 1 投票 0

Jaxb 获取根据多个根元素 XSD 验证 XML 的根元素

我们有一个包含多个可能的根元素的 xsd。 要验证的 xml 可以采用其中任何一个,但显然每个 xml 一次。 我无法透露实际的 xsd,但让我们想象一下类似的东西: &l...

回答 1 投票 0

使用资源在 JAR 中加载 XSD 架构失败

在我的 jar 中,我提供了我的 xsd 架构文件,即以下结构: 米贾尔 - myschema.xsd 当我解压缩该文件时,我可以验证该文件是否存在于 JAR 内的根级别。 我正在添加 xsd ...

回答 2 投票 0

根据 XSD 验证 XML 时出现问题 - PHP/schemaValidate

我正在尝试使用 DOMDocument 中的函数 schemaValidate(String file) 根据 XSD 验证 XML 文件。 当我在其他工具(例如在线验证器)上验证它时,它工作正常,但在我的

回答 3 投票 0

存在哪些 XSLT 2.0 工具? [已关闭]

我正在尝试了解 XML 和 XSLT 的内容,在我的研究中我偶然发现了不同的 XSLT 处理器。 Xalan 是第一个,它似乎工作得很好而且是免费的,除了......

回答 5 投票 0

即使使用ErrorHandler,为什么模式验证会在第一个错误后结束?

我正在研究模式验证。 目标是获取 XSD 文件并根据它验证传入文档。 如果有错误,我想捕获所有错误。 我只得到第一个…

回答 2 投票 0

XSD 架构;在元素序列中,是否有任何方法可以指定允许任意数量的未指定的附加元素?

所以,我想编写一个 XSD,检查元素列表是否包含特定的必需元素,但除了它们之外,在列表的任何位置都允许任何数量的其他元素。难道是……

回答 1 投票 0

无法使用 dbxml 找到元素“Root”的声明

我是 XML 新手。我正在尝试导入 XML 文件,但收到错误 - “找不到元素“根”的声明”。我怀疑这是因为名称空间 URI (http://xmlns.oracle.com...

回答 2 投票 0

通过 XSD 删除 XML 的元素/属性

我想删除 .xml 文件中与 .xsd 文件定义不匹配的所有元素和/或属性。 我提供了 XML-XSD 文件对的简化版本,但它们实际上有更多属性......

回答 1 投票 0

如何 xsd 验证带长度限制的格式化文本

我无法创建 xsd 文件来验证评论元素。 元素“comment”可以包含文本和可选子元素 , , 子元素可以嵌套... 我无法创建 xsd 文件来验证评论元素。 元素“comment”可以包含文本和可选子元素<b>, <i>, <ul> 子元素可以嵌套并出现多次 评论内容必须有长度限制(60) 我能够满足 1. 和 2.,但如何添加长度限制? 非常感谢您的帮助! 安德烈亚斯 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="Test"> <xs:complexType> <xs:sequence> <xs:element name="comment" type="FormattedText" minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="FormattedText" mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="b" minOccurs="0" /> <xs:element ref="i" minOccurs="0" /> <xs:element ref="ul" minOccurs="0" /> </xs:choice> </xs:complexType> <xs:complexType name="ULType"> <xs:sequence> <xs:element name="li" minOccurs="1" maxOccurs="unbounded"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="b" minOccurs="0" /> <xs:element ref="i" minOccurs="0" /> <xs:element ref="ul" minOccurs="0" /> </xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="b" type="FormattedText" /> <xs:element name="i" type="FormattedText" /> <xs:element name="ul" type="ULType" /> </xs:schema> 这是 xml 的示例: <?xml version="1.0" encoding="UTF-8"?> <Test> <comment> Abstellorte: <ul> <li>Hinter <b>To<i>r</i></b></li> <li>Am <i>Fenster</i></li> </ul> </comment> </Test> 您可以在 XSD 1.1 中使用断言来执行此操作:test="string-length(.) le 60"。在 XSD 1.0 中无法完成。

回答 1 投票 0

Azure Databricks:PySpark:无法使用 XSD 验证 XML 文件

这就是我所做的。 创建了一个 XML 文件 xmlPath =“dbfs:/mnt/books.xml” xml字符串 = """ 科雷茨,伊娃 ...

回答 1 投票 0

根元素之前的文档中的标记在 .dtd 文件中必须格式正确

我有下一个文件: 我有下一个文件: <!ELEMENT notes (note+)> <!ELEMENT note (to, from, heading, body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> 和 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE notes SYSTEM "validation.dtd"> <notes> <note> <to>Alice</to> <from>Bob</from> <heading>Reminder</heading> <body>Don't forget our meeting!</body> </note> <note> <to>John</to> <from>Jane</from> <heading>Invalid Tag</heading> <body>This should be </body> </note> <note> <to>Tom</to> <from>Sara</from> <heading>Empty Tag</heading> <body>hello</body> </note> </notes> 和我的 Java 验证器 import org.xml.sax.Attributes; import org.xml.sax.SAXParseException; import org.xml.sax.helpers.DefaultHandler; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import java.io.File; public class SAXParserTest { public static void main(String[] args) { parseWithDTDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\validation.dtd"); // parseWithXSDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\index.xml", // "C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\XSDvalidation.xsd"); } private static void parseWithDTDValidation(String filePath) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); // Увімкнути валідацію по DTD SAXParser parser = factory.newSAXParser(); parser.parse(new File(filePath), new CustomHandler()); } catch (Exception e) { e.printStackTrace(); } } private static void parseWithXSDValidation(String filePath, String schemaPath) { try { SAXParserFactory factory = SAXParserFactory.newInstance(); SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); Schema schema = schemaFactory.newSchema(new File(schemaPath)); factory.setSchema(schema); SAXParser parser = factory.newSAXParser(); parser.parse(new File(filePath), new CustomHandler()); } catch (Exception e) { e.printStackTrace(); } } } class CustomHandler extends DefaultHandler { @Override public void startElement(String uri, String localName, String qName, Attributes attributes) { System.out.println("Start Element: " + qName); } @Override public void endElement(String uri, String localName, String qName) { System.out.println("End Element: " + qName); } @Override public void characters(char[] ch, int start, int length) { System.out.println("Characters: " + new String(ch, start, length).trim()); } @Override public void error(SAXParseException e) { System.out.println("Error: " + e.getMessage()); } @Override public void fatalError(SAXParseException e) { System.out.println("Fatal Error: " + e.getMessage()); } @Override public void warning(SAXParseException e) { System.out.println("Warning: " + e.getMessage()); } } 编译器给我下一个错误:`org.xml.sax.SAXParseException;系统ID:文件:src/main/resources/validation.dtd;行号:1;列数:3;文档中根元素之前的标记必须格式正确。 我检查 .dtd 验证和 xml 文件中的每个符号吗?但找不到任何语法错误 如果有人回答我的问题我会很高兴 看起来您正在尝试解析此代码行中的 validation.dtd 文件: parseWithDTDValidation("C:\\Users\\ilapa\\Desktop\\university\\4_course_1_sem\\Проектування Веб сервісів\\lab_5\\lab5\\src\\main\\resources\\validation.dtd"); 您可能应该将路径传递给 xml 文件本身。

回答 1 投票 0

Java 的 SchemaFactory 真的从 w3.org 获取 XML 模式吗?

假设我使用以下代码验证一些 XML: SchemaFactory 工厂 = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 模式模式=factory.newSchema(localXsdFile); 验证器

回答 1 投票 0

如何确定某个值或标签属于 IXBRL/XBRL 文件中的哪个报告部分?

我正在尝试使用英国 CompaniesHouse 网站公开提供的 html/ixbrl 文件为备案的公司帐户构建模型。我遇到的问题是每个分类报告中的标签值(

回答 1 投票 0

“xsd”未被识别为内部或外部命令

我们的巡航控制系统一直存在构建失败的原因: “xsd”未被识别为内部或外部命令 C:\Program Files\Microsoft Visual Studio�2\Professional\MSBuild\Current\Bin...

回答 1 投票 0

complexContent xsd:restriction 中未提及的元素属性是否从父类型复制过来?

如果 xsd:restriction 中的元素没有由派生该限制的复杂类型的匹配元素使用的属性,则该属性的计算值是多少

回答 1 投票 0

如何在 XSD 架构中正确转义正则表达式模式?

我需要满足仅接受 MM/DD/YYYY 形式的值的要求。 根据我读到的内容:https://www.w3.org/TR/xmlschema11-2/#nt-dateRep 使用 ...

回答 2 投票 0

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.