У меня есть файл XML Sitemap для изображений, и я пытаюсь проверить его по схеме, используя код 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'.
Да, в XML элемент urlset не имеет префикса, поэтому считается, что он находится в пространстве имен по умолчанию: http://www.sitemaps.org/schemas/sitemap/0.9.Однако в коде Java используется неверная схема (другая версия / пространство имен): https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd.
urlset
http://www.sitemaps.org/schemas/sitemap/0.9
https://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd
Так что либо измените пространство имен urlset элемента XML (возможно, с префиксом image?)или загрузите другую схему (v0.9) в свой код Java.
image