XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。
我有下一个文件: 我有下一个文件: <!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 文件本身。
Java 的 SchemaFactory 真的从 w3.org 获取 XML 模式吗?
假设我使用以下代码验证一些 XML: SchemaFactory 工厂 = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 模式模式=factory.newSchema(localXsdFile); 验证器
如何确定某个值或标签属于 IXBRL/XBRL 文件中的哪个报告部分?
我正在尝试使用英国 CompaniesHouse 网站公开提供的 html/ixbrl 文件为备案的公司帐户构建模型。我遇到的问题是每个分类报告中的标签值(
我们的巡航控制系统一直存在构建失败的原因: “xsd”未被识别为内部或外部命令 C:\Program Files\Microsoft Visual Studio�2\Professional\MSBuild\Current\Bin...
complexContent xsd:restriction 中未提及的元素属性是否从父类型复制过来?
如果 xsd:restriction 中的元素没有由派生该限制的复杂类型的匹配元素使用的属性,则该属性的计算值是多少
我需要满足仅接受 MM/DD/YYYY 形式的值的要求。 根据我读到的内容:https://www.w3.org/TR/xmlschema11-2/#nt-dateRep 使用 ...
XBRL 验证错误:xbrldie:PrimaryItemDimensionallyInvalidError
根据分类法,我尝试在下表结构中给出答案: 根据我目前的理解(这可能是错误的,因为我对 xbrl 比较陌生)我构建了 XBRL 实例: <...
我目前正在开发一个项目,该项目正在从使用存储在 postgresql 中的 XML 数据迁移到存储在 mongodb 中的 json。 问题是:需要保持一定程度的向后兼容性......
jsonix-schema-compiler Maven 使用
我尝试根据https://github.com/highsource/jsonix-schema-compiler/wiki/Maven-Usage使用jsonix-schema-compiler,但它不起作用 我什至尝试指定其他参数作为......
与元素类型“beans”关联的属性“xsi:schemaLocation”的前缀“xsi”未绑定
为什么我会出现这个错误 [致命错误]:与元素类型“beans”关联的属性“xsi:schemaLocation”的前缀“xsi”未绑定。 在我的 XML 文件的标题处: 为什么我会出现这个错误 [致命错误]:与元素类型“beans”关联的属性“xsi:schemaLocation”的前缀“xsi”未绑定。 在我的 XML 文件的标题处: <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> 错误出现在我的 XML 声明的最后一行。 请问我该怎么做才能消除这个错误? 只需添加 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 到您的 bean 元素以消除该错误。 我的xml文件已经有 xmlns:xsi =“http://www.w3.org/2001/XMLSchema-instance” 但我仍然收到错误。 请让我知道如何消除该错误。 谢谢
Java 中的 XML XSD 到 AVRO avsc 映射
我有一个 XML 文件和 XSD 文件作为输入。理想的目标是基于 avro 架构 (avsc) 将 XML 数据序列化为 AVRO,然后反序列化回来。 XSD文件转换成POJO...
SAXParseException; src-resolve:无法将名称“...”解析为(n)“类型定义”组件
我正在尝试进行架构验证,当前使用 javax.xml.validation.SchemaFactory。不幸的是,当我调用 newSchema(Source schema) 函数时,出现以下错误: 引起者:组织...
有没有更简洁的方式来编写 XSD 文档。我发现当有很多属性和扩展元素时,代码很难阅读。 这是我的 XSD 示例: 我添加了一些限制...
使用 XDocument 创建 XML,或使用 xsd.exe 和 XmlSerializer 从 XSD 架构创建 XML?
当您可以使用 XDocument 时,为什么要使用 xsd.exe 工具为 XSD 模式创建类,然后使用序列化器创建 XML 文件。 我是否应该始终使用 XDocument 并通过
我有一个复杂的 XSD 架构和数百个符合该架构的 XML 文件。 如何自动创建相关的 SQL Server 表来存储 XML 数据? 我考虑过创建 C# 类...
我正在尝试使用 jaxb2:xjc 从多个 .xsd 文件生成域 java 文件。 以下是我的 pom.xml 文件的构建部分: 我正在尝试使用 jaxb2:xjc 从多个 .xsd 文件生成域 java 文件。 以下是我的 pom.xml 文件的构建部分: <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>jaxb2-maven-plugin</artifactId> <version>3.2.0</version> <executions> <execution> <id>xjc-atom-schema</id> <goals> <goal>xjc</goal> </goals> <configuration> <clearOutputDir>true</clearOutputDir> <outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/atom</outputDirectory> <packageName>org.greenbuttonalliance.gba_sandbox.common.model.atom</packageName> <sources> <source>${project.basedir}/src/main/resources/atom.xsd</source> </sources> </configuration> </execution> <execution> <id>xjc-energy-schema</id> <goals> <goal>xjc</goal> </goals> <configuration> <clearOutputDir>true</clearOutputDir> <outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/energy</outputDirectory> <sources> <source>${project.basedir}/src/main/resources/usage.xsd</source> </sources> <packageName>org.greenbuttonalliance.gba_sandbox.common.model.energy</packageName> </configuration> </execution> <execution> <id>xjc-retailcustomer-schema</id> <goals> <goal>xjc</goal> </goals> <configuration> <clearOutputDir>true</clearOutputDir> <outputDirectory>${project.basedir}/src/main/java/org.greenbuttonalliance.gba_sandbox/common/model/retailcustomer</outputDirectory> <sources> <source>${project.basedir}/src/main/resources/retailcustomer.xsd</source> </sources> <packageName>org.greenbuttonalliance.gba_sandbox.common.model.retailcustomer</packageName> </configuration> </execution> </executions> </plugin> </plugins> </build> 我能够成功执行 mvn clean install,但是当我尝试执行 mvn jaxb2:xjc 时,我收到以下错误消息: Failed to execute goal org.codehaus.mojo:jaxb2-maven-plugin:3.2.0:xjc (default-cli) on project common: : MojoExecutionException: NoSchemasException 上面的 pom 构建部分位于公共子目录中,旨在用作我的项目目录结构中显示的其他子目录的库 jar: 正在common子目录中执行mvn jaxb:xjc命令。 如有任何帮助,我们将不胜感激。 我尝试了几个项目组织,并最终通过将 .xsd 文件移动到公共子目录的资源文件夹而不是将它们放在资源目录中的模式文件夹中来使 mvn 安装正常工作。 我已使用 -X 诊断选项执行 mvn jaxb2:xjc 命令。根据输出,Jaxb2 使用默认输出目录,尽管 outputDirectory 被 org.codehaus.mojo 插件配置内容覆盖。 这是否意味着真正的问题是 xjc 没有正确处理公共子目录中的 pom.xml 文件,而是真正在查看另一个 pom.xml 文件? 短期目标 jaxb2:xjc 只能由具有单一配置的用户使用,因为它是使用 default-cli id 执行的(请参阅使用正常 clean install 和仅使用 jaxb2:xjc 运行时的 mvn 输出和插件执行) 查看另一个类似插件的相关问题:https://github.com/highsource/jaxb-tools/issues/520#issuecomment-1987970784 最初问题的另一个提示:您应该在 src/main/java 目录之外生成源,但更多地在 target/generate-sources/xjc-XXX 之类的目录中生成源,其中 XXX 对于每个不同的执行都是不同的。
XSD 的官方规范是否允许使用 重新定义派生类型中的属性值(默认/固定)? MSXML 和 Xerces-C 都允许这样做,但 libxml2 不允许(不允许
简而言之,我的疑问是:在 W3C XML Schema 中扩展混合元素类型,我们是否必须显式声明 mix="true 扩展元素?或者这是否隐含地源自以下事实:
我有以下 Employee 类。我需要从此类生成一个 xml,这样只允许使用 One 属性。要么是salary1,要么是salary2。 如果从数据库获取的salary1大于
XPath:如何访问 XML 架构上的 xs:appinfo 元素内的信息
我正在努力使用 XPath 访问 xs:appinfo 元素内的信息 我在 xs:appinfo 元素内有另一个结构良好的 XML。有没有办法直接访问