2014-10-06 123 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格式。