2014-10-06 115 views
2

我下载了Netbeans 8.0.1以创建一些XSLT文件。这里是一个小例子:Netbeans自动完成XSLT/HTML

<?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

+0

你发现如何让自动完成工作? – Xenos 2015-08-08 17:08:14

回答

1

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

下载HTML5

HTML的XSD版本不是XML,所以我们必须采取XHTML5看看(HTML作为XML序列化)。我从there

采取的XSD告知NetBeans使用它

XHTML命名空间http://www.w3.org/1999/xhtml必须使用我们已经下载了XSD。因此,在工具→DTD & XML架构→用户目录中,添加本地架构,其中System IDhttp://www.w3.org/1999/xhtml,而URIthe xhtml5.xsd you've downloaded

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

在XSL

使用XHTML命名空间现在,在XSL,告诉您使用XHTML命名空间与根节点的属性xmlns="http://www.w3.org/1999/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完成后会提示<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"/>来完成的。

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

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


在你想知道的情况下,我做了一个很长详细的答复,所以你可以,如果你想混XSL做同样的SVG或XSL以及任何其他XML-XSD格式。