XSD错误:元素是一个简单类型,因此它必须没有元素信息项[children]

时间:2016-09-25 17:19:52

标签: xml xsd xsd-validation xml-validation

我正在研究一个非常基本的XML架构,我正在接收

  

cvc-type.3.1.2:元素'creator'是一个简单类型,所以它必须没有   元素信息项[儿童]。 [8]

当我尝试验证XML时,在NetBeans中

。我正在关注W3学校的教程,似乎我的代码与他们的代码非常相似。我很困惑,当我将其声明为复杂时,错误状态创建者是一个简单类型。我是否错误地将creator元素声明为复杂类型?

XML doc:

<?xml version="1.0" encoding="UTF-8" ?>
<gallery
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="Proj1Schema.xsd">
    <creator>
        <name>John Doe</name>
    </creator>
</gallery>

架构:

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://xml.netbeans.org/schema/gallery"
    elementFormDefault="qualified">

    <xs:element name="creator">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="name" type="xs:string"/>
                </xs:sequence>
            </xs:complexType>
    </xs:element>

    <xs:element name="gallery">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="creator" type="xs:string"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>

</xs:schema>

1 个答案:

答案 0 :(得分:0)

替换

<?php
  // set up or arguments for our custom query
  $paged = ( get_query_var('page') ) ? get_query_var('page') : 1;
  $query_args = array(
    'post_type' => 'post',
    'paged' => $paged
  );
  // create a new instance of WP_Query
  $the_query = new WP_Query( $query_args );
?>

<?php if ( $the_query->have_posts() ) : while ( $the_query->have_posts() ) : $the_query->the_post(); // run the loop ?>
  <article>
    <h1><?php echo the_title(); ?></h1>
    <div class="excerpt">
      <?php the_excerpt(); ?>
    </div>
  </article>
<?php endwhile; ?>

<?php if ($the_query->max_num_pages > 1) { // check if the max number of pages is greater than 1  ?>
  <nav class="prev-next-posts">
    <div class="prev-posts-link">
      <?php echo get_next_posts_link( 'Older Entries', $the_query->max_num_pages ); // display older posts link ?>
    </div>
    <div class="next-posts-link">
      <?php echo get_previous_posts_link( 'Newer Entries' ); // display newer posts link ?>
    </div>
  </nav>
<?php } ?>

<?php else: ?>
  <article>
    <h1>Sorry...</h1>
    <p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
  </article>
<?php endif; ?>

            <xs:element name="creator" type="xs:string"/>

<xs:element ref="creator"/> 的内容模型中重用element的全局声明。正如您拥有XSD一样,gallery中的creator只允许简单的gallery内容,这与包含xs:string子元素的复杂内容的XML相反。