2014-10-06 4 views
2

Я загрузил Netbeans 8.0.1, чтобы создать некоторые файлы XSLT. Вот небольшой пример:Netbeans autocomplete 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 в конце файла.
Кто-нибудь знает, если это ошибка или несколько настроек для использования автозаполнения для HTML и XSLT?

+0

Вы узнали, как работать с автозаполнением? – Xenos

ответ

1

Святой GNU, после целого дня на этом, мне удалось получить как XSL, так и HTML автозаполнения, работающие над одним и тем же XSL-файлом.

Скачать версия XSD из HTML5

HTML не XML, так что мы должны взглянуть на XHTML5 (HTML сериализованную в XML). Я взял XSD из there

Скажите NetBeans использовать его

пространство имен XHTML http://www.w3.org/1999/xhtml должны использовать XSD мы загрузили. Итак, в Инструменты → DTD & XML-схема → Каталог пользователей, добавьте локальную схему, где System ID - http://www.w3.org/1999/xhtml, а URI - the xhtml5.xsd you've downloaded.

Возможно, вам потребуется перезапустить netbeans (я на самом деле много раз пересказывал его, я не могу сказать, требуется ли это или нет).

Используйте пространство имен XHTML в XSL

Теперь в 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 автоматически завершаете работу (поэтому, если вы делаете table внутри xsl:template, вам все равно придется вводить <table>, но один раз внутри, автоматически полный предложит такие вещи, как <caption>, <thead> и т. д.).


насчет автозаполнения XSL внутри HTML?

Это требует редактирования в XSD xhtml. Мы должны объявить пространство имен XSL в XSD, используя xmlns:xsl="http://www.w3.org/1999/XSL/Transform" на корневом узле XSD. Затем в XSD мы должны указать, что каждый HTML-узел может содержать узел XSL. Это делается с помощью <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-XSDed.