针对两个用于Google图像站点地图的XSD验证XML

|| 我有一个XML文件(使用Google的
<image:image>
扩展名的站点地图),需要针对两个本地XSD文件进行验证,但是验证失败,因为
<url>
不允许
<image:image>
作为子级。完整的错误消息是
org.xml.sax.SAXParseException: 
cvc-complex-type.2.4.a: Invalid content was found starting with element \'image:image\'.
One of \'{\"http://www.sitemaps.org/schemas/sitemap/0.9\":lastmod, 
         \"http://www.sitemaps.org/schemas/sitemap/0.9\":changefreq, 
         \"http://www.sitemaps.org/schemas/sitemap/0.9\":priority}\' 
is expected.
这是我正在尝试验证的站点地图XML:
<?xml version=\"1.0\"?>
<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"
        xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\">
  <url>
    <loc>http://example.com/index.html</loc>
    <image:image>
      <image:loc>http://example.com/images/mysite.jpg</image:loc>
      <image:title>My Site\'s Logo</image:title>
      <image:caption>Logo for My Site by Andy Warhol (not really)</image:caption>
    </image:image>
  </url>
  ...
</urlset>
我将标准XSD用于站点地图和Google图片,但由于两者均未相互引用,因此我看不到如何使“ 0”成为“ 1”的有效子代。 如果有帮助,这里是执行验证的代码。
Source document = ...
StreamSource[] source = new StreamSource[] {
        new StreamSource(this.getClass().getResourceAsStream(\"sitemap.xsd\"), \"http://www.sitemaps.org/schemas/sitemap/0.9\"),
        new StreamSource(this.getClass().getResourceAsStream(\"sitemap-image.xsd\"), \"http://www.google.com/schemas/sitemap-image/1.1\")
    };
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(source)
             .newValidator().validate(document);
我能找到的最接近的SO问题需要预先解析和拆分XML文件,因为要应用的架构根据数据值而有所不同。我的要求要简单得多,希望可以更轻松地解决。 更新:我有一个旧的架构,不允许该元素有任何其他子代。 sitemaps.org已更新其XSD以添加
<xsd:any namespace=\"##other\" minOccurs=\"0\" maxOccurs=\"unbounded\" processContents=\"strict\"/>
已邀请:
实际上,站点地图架构允许该位置的任何元素,只要它来自另一个名称空间,并提供周围的架构(因为\“ processContent \”是严格的。但是,您的数据无效,< caption>必须出现在之前。 当我在Java 1.6上对其进行测试时,它会验证确定。 </div> <!-- end 评论内容 --> </div> <div class="mod-footer"> <!-- 社交操作 --> <div class="meta clearfix"> <span class="text-color-999 pull-right">2020-06-12</span> <!-- 投票栏 --> <span class="operate"> <a class="agree disabled" ><i data-placement="right" title="" data-toggle="tooltip" class="icon icon-agree" data-original-title="赞同回复"></i> <b class="count">0</b></a> </span> <!-- end 投票栏 --> <span class="operate"> <a class="aw-add-comment" data-id="4007181" data-type="answer" data-comment-count="0" data-first-click="collapse" href="javascript:;"><i class="icon icon-comment"></i> 0</a> </span> <!-- 可显示/隐藏的操作box --> <div class="more-operate"> <div class="btn-group pull-left"> <a class="text-color-999 dropdown-toggle" data-toggle="dropdown" answer_id="4007181" onclick="question_comment_share(this)"> <i class="icon icon-share"></i> 分享 </a> <div class="aw-dropdown shareout pull-right bdsharebuttonbox" style="width: 0;"> <ul class="aw-dropdown-list"> <li><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"> 微信</a></li> <li><a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ"> QQ</a></li> <li><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"> 微博</a></li> <li><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"> 空间</a></li> </ul> </div> </div> </div> <!-- end 可显示/隐藏的操作box --> </div> <!-- end 社交操作 --> </div> </div> <div class="aw-item" uninterested_count="0" force_fold="0" id="answer_list_4007182"> <div class="mod-head"> <a class="anchor" name="answer_4007182"></a> <!-- 用户头像 --> <a class="aw-user-img aw-border-radius-5" href="https://www.orcode.com/people/%E6%BC%82%E6%B1%80%E6%8B%A6" data-id="475"><img src="/uploads/avatar/userimg/475.jpg" alt="" /></a> <!-- end 用户头像 --> <div class="title"> <p> <a class="aw-user-name" href="https://www.orcode.com/people/%E6%BC%82%E6%B1%80%E6%8B%A6" data-id="475">漂汀拦</a> </p> <p class="text-color-999 aw-agree-by"> </p> </div> </div> <div class="mod-body clearfix"> <!-- 评论内容 --> <div class="markitup-box"> 花了我一段时间找出进行模式验证的语法(Google自己的示例实际上并未针对XSD文件进行验证): <code><pre><urlset xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation= \"http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd http://www.google.com/schemas/sitemap-image/1.1 http://www.google.com/schemas/sitemap-image/1.1/sitemap-image.xsd\" xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\" xmlns:image=\"http://www.google.com/schemas/sitemap-image/1.1\"> </pre></code> </div> <!-- end 评论内容 --> </div> <div class="mod-footer"> <!-- 社交操作 --> <div class="meta clearfix"> <span class="text-color-999 pull-right">2020-06-12</span> <!-- 投票栏 --> <span class="operate"> <a class="agree disabled" ><i data-placement="right" title="" data-toggle="tooltip" class="icon icon-agree" data-original-title="赞同回复"></i> <b class="count">0</b></a> </span> <!-- end 投票栏 --> <span class="operate"> <a class="aw-add-comment" data-id="4007182" data-type="answer" data-comment-count="0" data-first-click="collapse" href="javascript:;"><i class="icon icon-comment"></i> 0</a> </span> <!-- 可显示/隐藏的操作box --> <div class="more-operate"> <div class="btn-group pull-left"> <a class="text-color-999 dropdown-toggle" data-toggle="dropdown" answer_id="4007182" onclick="question_comment_share(this)"> <i class="icon icon-share"></i> 分享 </a> <div class="aw-dropdown shareout pull-right bdsharebuttonbox" style="width: 0;"> <ul class="aw-dropdown-list"> <li><a href="#" class="bds_weixin" data-cmd="weixin" title="分享到微信"> 微信</a></li> <li><a href="#" class="bds_sqq" data-cmd="sqq" title="分享到QQ"> QQ</a></li> <li><a href="#" class="bds_tsina" data-cmd="tsina" title="分享到新浪微博"> 微博</a></li> <li><a href="#" class="bds_qzone" data-cmd="qzone" title="分享到QQ空间"> 空间</a></li> </ul> </div> </div> </div> <!-- end 可显示/隐藏的操作box --> </div> <!-- end 社交操作 --> </div> </div> </div> <div class="mod-footer"> <div class="aw-load-more-content collapse" id="load_uninterested_answers"> <span class="text-color-999 aw-alert-box text-color-999" href="javascript:;" tabindex="-1" onclick="AWS.alert('被折叠的回复是被你或者被大多数用户认为没有帮助的回复');">为什么被折叠?</span> <a href="javascript:;" class="aw-load-more-content"><span class="hide_answers_count">0</span> 个回复被折叠</a> </div> <div class="collapse aw-feed-list" id="uninterested_answers_list"></div> </div> </div> <!-- end 问题详细模块 --> <!-- 回复编辑器 --> <div class="aw-mod aw-replay-box question"> <a name="answer_form"></a> <p align="center">要回复问题请先<a href="https://www.orcode.com/login/">登录</a>或<a href="https://www.orcode.com/account/register/">注册</a></p> </div> <!-- end 回复编辑器 --> </div> <!-- 侧边栏 --> <div class="col-md-3 aw-side-bar hidden-xs hidden-sm"> <!-- 发起人 --> <div class="aw-mod"> <div class="mod-head"> <h3>发起人</h3> </div> <div class="mod-body"> <dl> <dt class="pull-left aw-border-radius-5"> <a href="https://www.orcode.com/people/"><img alt="" src="/uploads/avatar/userimg/480.jpg" /></a> </dt> <dd class="pull-left"> <a class="aw-user-name" href="https://www.orcode.com/people/" data-id=""></a> <p></p> </dd> </dl> </div> </div> <!-- end 发起人 --> <!-- 相关--> <div class="aw-mod question-status"> <div class="mod-head"> <h3><a href="/topic/xsd" class="btn btn-info">xsd</a></h3> </div> <div class="mod-body"> <ul> <li><a href="https://www.orcode.com/question/1487726_kfe4d3.html">xsd2code-反序列化xml文件的问题</a></li> <li><a href="https://www.orcode.com/question/1488113_kf7be5.html">如何从Perl中的示例XML文档创建模式? </a></li> <li><a href="https://www.orcode.com/question/1488217_k31710.html">(Java,EMF)从XSD创建有效的XML文件</a></li> <li><a href="https://www.orcode.com/question/1488336_k88088.html">“字段节点内的XPath选择无效。将模式加载到数据集中时找不到错误。.|||||||| 我想将XML模式(Main.xsd)添加到数据集,该数据集包括另一个模式(base.xsd),该模式定义前一个模式中使用的复杂类型。 Main.xsd具有一个定义xs:unique的块,该块具有选择器和字段,以唯一地将特定元素定义为主键。 这是Main.xsd: <code><xs:schema id=\\\"NewDataSet\\\" xmlns:xs=\\\"http://www.w3.org/2</a></li> <li><a href="https://www.orcode.com/question/1488399_k7fe50.html">Web Service Schema给定了一个Java类</a></li> <li class="aw-border-radius-5" id="focus_users"></li> </ul> </div> </div> <div class="aw-mod question-status"> <div class="mod-head"> <h3><a href="/topic/validation" class="btn btn-info">validation</a></h3> </div> <div class="mod-body"> <ul> <li><a href="https://www.orcode.com/question/1488075_k0dab0.html">如何禁止h:inputText的分组分隔符? </a></li> <li><a href="https://www.orcode.com/question/1488314_ka0fb0.html">xml,用于以信息路径形式访问转发器控制行值</a></li> <li><a href="https://www.orcode.com/question/1488523_k9ac8a.html">与黑莓应用程序开发有关</a></li> <li><a href="https://www.orcode.com/question/1488628_ke264d.html">jQuery验证取决于</a></li> <li><a href="https://www.orcode.com/question/1488813_k0daca.html">调用另一个函数内的函数时遇到麻烦</a></li> <li class="aw-border-radius-5" id="focus_users"></li> </ul> </div> </div> <div class="aw-mod question-status"> <div class="mod-head"> <h3><a href="/topic/xml" class="btn btn-info">xml</a></h3> </div> <div class="mod-body"> <ul> <li><a href="https://www.orcode.com/question/1488590_k7bc7b.html">如何在XSLT输出中摆脱xmlns =“”(无命名空间)属性</a></li> <li><a href="https://www.orcode.com/question/1488725_k9ff9f.html">需要帮助说明XML解析的基础</a></li> <li><a href="https://www.orcode.com/question/1488744_k5a112.html">iPhone-编写委托和重载方法</a></li> <li><a href="https://www.orcode.com/question/1488810_k0f5d1.html">string.xml和arrays.xml的用途是什么? </a></li> <li><a href="https://www.orcode.com/question/1488824_k8ed4d.html">从Sql Server Express 2005中检索结构化Xml</a></li> <li class="aw-border-radius-5" id="focus_users"></li> </ul> </div> </div> <!--end 相关--> <!-- 问题状态 --> <div class="aw-mod question-status"> <div class="mod-head"> <h3>问题状态</h3> </div> <div class="mod-body"> <ul> <li>最新活动: <span class="aw-text-color-blue">2020-06-12 12:22</span></li> <li>浏览: <span class="aw-text-color-blue">34</span></li> <li>关注: <span class="aw-text-color-blue">49</span> 人</li> <li class="aw-border-radius-5" id="focus_users"></li> </ul> </div> </div> <!-- end 问题状态 --> </div> <!-- end 侧边栏 --> </div> </div> </div> </div> <script type="text/javascript"> var ATTACH_ACCESS_KEY = ''; var ITEM_IDS = ''; var COMMENT_UNFOLD = ''; var QUESTION_ID = 1487193; var UNINTERESTED_COUNT = 5; var ANSWER_EDIT_TIME = 30; var USER_ANSWERED = ''; var UPLOAD_ENABLE = 'N'; var ANSWER_TYPE = 'answer'; // alert($.cookie("refresh")); function timer(intDiff){ window.setInterval(function(){ var day=0, hour=0, minute=0, second=0;//时间默认值 if(intDiff > 0){ day = Math.floor(intDiff / (60 * 60 * 24)); hour = Math.floor(intDiff / (60 * 60)) - (day * 24); minute = Math.floor(intDiff / 60) - (day * 24 * 60) - (hour * 60); second = Math.floor(intDiff) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60); }else{ // if(location.href.indexOf('#reloaded')==-1){ // location.href=location.href+"#reloaded" // } location.reload() } if (minute <= 9) minute = '0' + minute; if (second <= 9) second = '0' + second; $('#day_show').html('剩余:'+day+"天"); $('#hour_show').html('<s id="h"></s>'+hour+'时'); $('#minute_show').html('<s></s>'+minute+'分'); $('#second_show').html('<s></s>'+second+'秒'); intDiff--; }, 1000); } var intDiff = parseInt(-1715684562);//倒计时总秒数量 // alert(intDiff); $(function(){ if(intDiff>0){ timer(intDiff); } }); var pay_data={ 'url':G_BASE_URL+'/pay/add/', // 'passive_uid':"480", 'cate':1, 'notify_url':G_BASE_URL+'/pay/notify/' }; function gopay(id,name,uid){ pay_data.both_id=id; pay_data.passive_uid=uid; pay_data.remarks="打赏-"+name, showpay(); } </script> <script type="text/javascript"> $("#question_share").click(function(){ $('#share_content').val('针对两个用于Google图像站点地图的XSD验证XML'); $('#share_title').val('针对两个用于Google图像站点地图的XSD验证XML'); $('#share_url').val(G_BASE_URL + '/question/1487193'); }); function question_comment_share(obj){ var content=$(obj).parents(".aw-item").find('div.markitup-box').text().replace(/(^\s*)|(\s*$)/g, "").substr(0,140); var answer_id=$(obj).attr('answer_id'); $('#share_content').val(content); $('#share_title').val(content); $('#share_url').val(G_BASE_URL + '/question/1487193?answer_id='+answer_id+'&single=TRUE#!answer_'+answer_id); } window._bd_share_config={ "common":{ bdText : '针对两个用于Google图像站点地图的XSD验证XML', bdDesc : '针对两个用于Google图像站点地图的XSD验证XML', bdUrl : G_BASE_URL + '/question/1487193', onBeforeClick:function(cmd,config){ return {bdText:$('#share_content').val(), bdDesc:$('#share_title').val(), bdUrl:$('#share_url').val() } } }, "share" : [{ bdCustomStyle :"/static/api/css/share.css", }] }; with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)]; </script> <div class="aw-footer-wrap"> <div class="aw-footer"> <div class="text-center"> <a href="https://www.orcode.com/">或代码 OrCode.com</a> <a href="http://beian.miit.gov.cn/" target="_blank" rel="nofollow">备案号:粤ICP备15020848号-1</a> <br> Escape time: 0.060784101486206 </div> </div> </div> <a class="aw-back-top hidden-xs" href="javascript:;" onclick="$.scrollTo(1, 600, {queue:true});"><i class="icon icon-up"></i></a> <!-- DO NOT REMOVE --> <div id="aw-ajax-box" class="aw-ajax-box"></div> <!-- / DO NOT REMOVE --> <script type="text/javascript" src="https://js.users.51.la/19724365.js"></script> </body> </html> <!-- Escape time: 0.06099009513855 -->