【问题标题】:XSL not rendering the XML when loaded directly into the browser直接加载到浏览器中时 XSL 不呈现 XML
【发布时间】:2015-11-01 08:04:42
【问题描述】:

我正在尝试将我的 XSL 链接到我的 XML,但是当我在 Chrome 或其他网络浏览器中加载 XML 页面时,我得到一个空白页面。

我不确定它到底出了什么问题。

下面是我的 XML

<?xml-stylesheet type="text/xsl" href="vaults.xsl"?>

<vaults xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vaults.xsd">

  <vault>
    <vaultname>Los Angeles Vault </vaultname>  
    <state>California</state>
    <location>Los Angeles (Cathedral)</location>
    <description>The Vault-Tec demonstration vault. It was not part of the experiment, and was the Master's vault under the Cathedral. </description>
    <fate> </fate>
    <appearance>Fallout</appearance>
   </vault> 
</vaults>

以下是XSL

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

<xsl:template match="/">
  <html>
  <body>
  <h2>Vaults</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th style="text-align:left">vault</th>
    </tr>
    <xsl:for-each select="vaults/vault">
    <tr>
      <td><xsl:value-of select="vaultname" /></td>
      <td><xsl:value-of select="state" /></td>
      <td><xsl:value-of select="location" /></td>
      <td><xsl:value-of select="description" /></td>
      <td><xsl:value-of select="fate" /></td>
      <td><xsl:value-of select="appearance" /></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

【问题讨论】:

    标签: xml xslt


    【解决方案1】:

    但是,当我在 Chrome 或其他网络浏览器中加载 XML 页面时,我得到一个空白页面。

    如果您在 Chrome 中从本地磁盘加载它,you will get a blank page,在 Internet Explorer 中也是如此。这是出于安全原因。

    我测试了您的 XML 和 XSLT,将这两个文件存储在本地并在 Firefox 中打开,它“正常工作”:

    注意,我建议让您的样式表更易于阅读和维护。即,类似的东西(通常,使用带有匹配模板的xsl:apply-templates 更容易维护,并且可以更好地防止输入发生变化):

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
      <xsl:template match="/">
        <html>
          <body>
            <h2>Vaults</h2>
            <table border="1">
              <tr bgcolor="#9acd32">
                <th style="text-align:left">vault</th>
              </tr>
              <xsl:apply-templates select="vaults/vault" />
            </table>
          </body>
        </html>
      </xsl:template>
    
      <xsl:template match="vault">
        <tr>
          <xsl:apply-templates select="*" />
        </tr>
      </xsl:template>
    
      <xsl:template match="*[parent::vault]">
        <td><xsl:value-of select="." /></td>
      </xsl:template>
    
    </xsl:stylesheet>
    

    【讨论】:

    • 谢谢,我测试了IE和chrome,没想到firefox。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多