gpt4 book ai didi

java - Xerces、外部模式和默认命名空间

转载 作者:行者123 更新时间:2023-12-01 05:16:55 28 4
gpt4 key购买 nike

我有一个 XSD 文件:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="someNameSpace"
xmlns="someNameSpace"
elementFormDefault="qualified">
...
</xs:schema>

在 Java 代码中:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setIgnoringElementContentWhitespace(true);
dbf.setIgnoringComments(true);
dbf.setFeature("http://apache.org/xml/features/validation/schema", true);
dbf.setFeature("http://apache.org/xml/features/validation/schema-full-checking", true);
dbf.setAttribute("http://apache.org/xml/properties/schema/external-schemaLocation", "someNameSpace file:///home/.../schema.xsd");

DocumentBuilder builder = dbf.newDocumentBuilder();
builder.setErrorHandler(new SomeHandlerImpl());
Document doc = builder.parse(input);

输入是一个以以下内容开头的文件:

<?xml version="1.0" encoding="UTF-8"?>
<projekt xmlns="someNameSpace">

如果我删除 namsepaces 并使用 http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation 属性代替 http://apache.org/xml/properties/schema/external-schemaLocation,它有效。但对于命名空间,我完全不知道该怎么办。

最佳答案

我已经解决了。架构应该这样开始:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://some/namespace/identifier"
xmlns="http://some/namespace/identifier"
elementFormDefault="qualified">

根开始标记是这样定义的:

<rootElement xmlns="http://some/namespace/identifier"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://some/namespace/identifier whatever.xsd">

最后我更新了我的代码:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
SchemaFactory scf = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
URL schemaUrl = getClass().getResource(SCHEMAFILE);

dbf.setNamespaceAware(true);
dbf.setSchema(schema);

DocumentBuilder builder = dbf.newDocumentBuilder();
builder.setErrorHandler(errHandler);
Document doc = builder.parse(input);

关于java - Xerces、外部模式和默认命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11012085/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com