Netbeans自动完成XSLT / HTML

时间:2014-10-06 09:24:04

标签: html xslt netbeans autocomplete

我下载了Netbeans 8.0.1来创建一些XSLT文件。这是一个小例子:

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

<xsl:template match="/">
  <html>
  <body>
  <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th style="text-align:left">Title</th>
        <th style="text-align:left">Artist</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
        <td><xsl:value-of select="title"/></td>
        <td><xsl:value-of select="artist"/></td>
      </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

如果您有一个简单的Netbeans文件或一个简单的XSLT文件,HTML的自动完成功能就可以顺利完成。但是如果你混淆这两个文件,自动完成功能只适用于XSLT<html>代码开始,我不再拥有自动填充功能,即使不是文件末尾的XSLT代码也是如此。 有谁知道这是一个错误,还是只是为HTMLXSLT使用自动填充的一些设置?

1 个答案:

答案 0 :(得分:1)

神圣GNU,在整整一个下午之后,我设法让XSL和HTML自动完成同一个XSL文件。

下载HTML5的XSD版本

HTML不是XML,所以我们必须看看XHTML5(HTML序列化为XML)。我从there

获取了XSD

告诉netbeans使用它

xhtml命名空间http://www.w3.org/1999/xhtml必须使用我们已下载的XSD。因此,在工具→DTD&amp; XML Schema→用户目录,在System IDhttp://www.w3.org/1999/xhtmlURIthe xhtml5.xsd you've downloaded的位置添加本地架构。

您可能需要重新启动netbeans(我实际上重复了很多次,我无法判断它是否需要)。

在XSL中使用xhtml命名空间

现在,在XSL中,告诉您在根节点上使用带有属性xmlns="http://www.w3.org/1999/xhtml"的xhtml命名空间。

<xsl:stylesheet version="1.0"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    >

您还可以将此xmlns属性添加到每个最顶级的html节点(也就是每个在其祖先中没有html节点的html节点)。您还可以在根节点上使用xmlns:html,并使用<html:*>而不是<*>个节点。如果您有多个名称空间,例如HTML+SVG+MathML+XSL

,它会很有用

享受html自动完成

然后您应该自动完成html。它要求您明确键入第一个html标记,但一旦在html标记内,自动完成就会生效(因此,如果您在{{table内进行xsl:template 1}},您仍然需要输入<table>,但一旦进入内部,自动完成会提示<caption><thead>等内容。

如何在HTML中自动完成XSL?

需要在xhtml的XSD中进行编辑。我们必须在XSD的根节点上使用xmlns:xsl="http://www.w3.org/1999/XSL/Transform"在XSD中声明XSL名称空间。然后,我们必须在XSD中告诉每个 HTML节点都可以包含一个XSL节点。这是通过在所有元素组<xs:any namespace="http://www.w3.org/1999/XSL/Transform" processContents="skip"/>中使用<xs:group>来完成的。

完成这些编辑后,XSD会说&#34;每个HTML节点都可以包含来自XSL命名空间&#34; 的元素,因此Netbeans会自动完成也会建议XSL节点。

您可以使用此处下载已编辑过的XSD:http://xenos.reinom.com/stackoverflow/xhtml5.xsd

如果你想知道,我做了很长的详细回复,如果你想混合使用XSL和SVG或XSL以及任何其他XML-XSDed格式,你也可以这样做。