我有一个图像站点地图xml文件,我正在尝试使用Java代码针对某个架构对其进行验证:
URL schemaFile = new URL("https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd");
Source xmlFile = new StreamSource(new File("web.xml"));
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = schemaFactory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(xmlFile);
和XML:
<?xml version="1.0" encoding="UTF-8" standalone="no"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
<loc>https://company.com/abc/is/images/A/AA/AAA/AAAA/A/product-name</loc>
<image:image>
<image:loc>https://company.com/abc/is/image//images/A/AA/AAA/AAAA</image:loc>
</image:image>
</url>
我收到的Java验证错误是:
line: 2
column: 123
message: Cannot find the declaration of element 'urlset'.
答案 0 :(得分:0)
是的,在XML中,urlset
元素没有前缀,因此被认为在默认命名空间http://www.sitemaps.org/schemas/sitemap/0.9
中。但是,在Java代码中,您使用的是错误的架构(不同的版本/名称空间):https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd
。
是更改urlset
XML元素的名称空间(也许带有前缀image
?)还是在Java代码中加载其他模式(v0.9)。