【问题标题】:XML XSL XSD Validation:XML XSL XSD 验证:
【发布时间】:2012-03-31 14:53:27
【问题描述】:

我很难引用所有 3 个。 我已经编写了我的 XML、XSD 和 XSL,但它似乎不适用于引用。 这是一个使用相同引用的简单示例。

XSD:

 <?xml version="1.0"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="http://www.w3schools.com"
   xmlns="http://www.w3schools.com"
   elementFormDefault="qualified">

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

 </xs:schema> 

XML:

 <?xml version="1.0"?>
 <?xml-stylesheet type="text/xsl" href="email.xsl"?>

 <email
   xmlns="http://www.w3schools.com"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.w3schools.com email.xsd">

   <to>John</to>
 </email>

XSL:

 <?xml version="1.0" encoding="UTF-8"?>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:template match="/">
    <html>
      <body>
        <xsl:for-each select="email">
          <h2>To</h2>
          <td><xsl:value-of select="John"/></td>
        </xsl:for-each>
      </body>
    </html>
  </xsl:template>

 </xsl:stylesheet>

【问题讨论】:

  • 那么问题是什么?我没有看到一个。问题是什么?没有任何东西被描述为有问题。

标签: xml xslt xsd


【解决方案1】:

XSLT 不起作用,因为您的 email 元素具有命名空间,并且要使用 XPath 将元素与命名空间匹配,您始终必须显式声明并使用前缀。

您需要像这样编写 XSL:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:ws="http://www.w3schools.com"
  version="1.0"> 

  <xsl:template match="/"> 
    <html> 
      <body> 
        <xsl:for-each select="ws:email"> 
          <h2>To</h2> 
          <td><xsl:value-of select="ws:to"/></td> 
        </xsl:for-each> 
      </body> 
    </html> 

  </xsl:template> 

我不确定您对 XSD 的期望:它似乎是正确的,但不会以任何方式影响 XSLT 的应用程序。

email 是 XML 中的根元素,因此每个 XML 文件只能有一个 email 元素 - 可能你应该在它上面有一个不同的根元素。

另请注意,您正在生成可疑的 HTML:&lt;td&gt; 不在表格内。

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多