Netbeans自动完成XSLT / HTML

我下载了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>

如果您有简单的XSLT文件或简单的HTML文件, Netbeans的自动完成功能可以毫无问题地完成工作。 但是,如果你混淆了这两个文件,自动完成功能仅适用于XSLT
<html>标签开始,我不再有自动完成功能,即使不是在文件末尾的XSLT标签。
有谁知道这是一个错误还是仅仅为了使用HTMLXSLT自动完成的一些设置?


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

下载HTML5的XSD版本

HTML不是XML,所以我们必须看看XHTML5(HTML序列化为XML)。 我已经从那里拿走了XSD

告诉netbeans使用它

xhtml命名空间http://www.w3.org/1999/xhtml必须使用我们下载的XSD。 所以,在工具→DTD和XML模式→用户目录,添加本地模式,其中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标签中,自动完成工作(所以,如果你在xsl:template创建一个table ,你仍然必须键入<table>但一旦进入,auto complete会显示<caption><thead>等等)。


那么HTML中的自动完成XSL呢?

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

完成这些编辑后,XSD会说“每个HTML节点都可以包含来自XSL名称空间的元素”,因此Netbeans的自动完成功能也会提示XSL节点。

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


如果您想知道,我已经做了详细的回复,所以如果您想要混合使用XSL和SVG或XSL以及任何其他XML-XSD格式,您可以做同样的事情。

链接地址: http://www.djcxy.com/p/63645.html

上一篇: Netbeans autocomplete XSLT/HTML

下一篇: autocompletion not working well on NetBeans for Ruby