【问题标题】:When I add xsd file with xml I cannot access xsl file当我用 xml 添加 xsd 文件时,我无法访问 xsl 文件
【发布时间】:2018-02-21 04:18:45
【问题描述】:

我有一个 xml 文件,我可以使用 xsl 文件访问数据。但是当我将 xsd 添加到我的 xml 文件时,我无法使用我的 xsl 文件。请帮帮我

<updateClient 
   xsi:schemaLocation=" file://updateClient.xsd"
   xmlns="http://" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <fileHeader>
    <messageType version="100">
        <recordTp>722</recordTp>
    </messageType>
    <sendingCompany>some</sendingCompany>
    <processDate>2018-02-13</processDate>
    <recordCount>10</recordCount>
     </fileHeader>
    </updateClient>

我的 XSL 文件

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:x="http://localhost" exclude-result-prefixes="x" >
  <xsl:template match="/">
  <html>
      <body>
     <h2>My Collection</h2>
      < table>

          <tr>
            <xsl:for-each select="updateClient/fileHeader/messageType">
           <td> <p>RecordType :<xsl:value-of select="recordTp" /></p> </td>
              </xsl:for-each>
          </tr>


        </table>
     </body>
      </html>
   </xsl:template>
       </xsl:stylesheet>

【问题讨论】:

  • @Dimitre Novatchev 你能帮帮我吗?

标签: html xml xslt xsd


【解决方案1】:

您的输入 XML 位于 http:// 命名空间中。 XSL 文件中的 XPath 表达式没有命名空间前缀,因此它们在默认命名空间中寻找元素。

如果您可以使用 XPath 2.0,则可以使用“xpath-default=namespace”属性,即:

<xsl:stylesheet version="2.0" xpath-default-namespace="http://" ...>

在 XPath 1.0 中,您可以这样做:

<xsl:for-each select="/ns1:updateClient/ns1:fileHeader/ns1:messageType" xmlns:ns1="http://">

或者,您可以删除输入 XML 中的命名空间声明并使用 xsi:noNamespaceSchemaLocation="file://updateClient.xsd" 而不是 xsi:schemaLocation

【讨论】:

    猜你喜欢
    • 2013-04-25
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2014-05-07
    相关资源
    最近更新 更多