2008-11-11 2 views
1

Я хотел бы проанализировать HTML-документ и заменить атрибут действия всех форм и добавить некоторые скрытые поля с помощью XSL. Может ли кто-нибудь показать некоторые примеры XSL, которые могут это сделать?Преобразование HTML с использованием атрибутов XSL и модификации

ответ

0

Вы можете начать с this tutorial

Но следует помнить, что в целом XSLT требует хорошо сформированным XML в качестве входных данных и HTML не всегда хорошо сформированные

3

Что вам нужно первое хорошо формируется HTML (по крайней мере, переходный), хотя лучше всего рекомендуется XHTML. Некоторые процессоры XSLT могут принимать неверный HTML, но это не правило.

Чтобы попробовать пример ниже, вы можете скачать this small Microsoft command line app.

Быстрый и грязный пример XSLT для того, что вам нужно (например, xslt.xsl):

<xsl:stylesheet version="1.0" 
       xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
     <xsl:template match="*"> 
      <xsl:copy> 
       <xsl:copy-of select="@*"/> 
       <xsl:apply-templates/> 
      </xsl:copy> 
     </xsl:template> 

     <xsl:template match="form[@action='foo']"> 
      <xsl:copy> 
       <xsl:copy-of select="@*"/> 
       <xsl:attribute name="action">non-foo</xsl:attribute> 
       <input type="hidden" name="my-hidden-prop" value="hide-foo-here"/> 
       <xsl:apply-templates select="*"/> 
      </xsl:copy> 
     </xsl:template> 

</xsl:stylesheet> 

И соответствующий пример XML (example.xml).

<?xml version ="1.0"?> 
<?xml-stylesheet type="text/xsl" href="example-xslt.xsl"?> 
<html> 
    <head></head> 
    <body> 
     <form action="foo"> 
     </form> 
     <form action="other"> 
     </form> 
    </body> 
</html> 
0

Думая ответ Гурин в: один возможный XSLT на основе путь для HTML заключается в использовании аккуратным, чтобы преобразовать его в XHTML, применить XSLT к XHTML, но использовать xsl:output[@method="html"], чтобы получить HTML обратно. Атрибуты @doctype-system и @doctype-public позволяют также предоставлять объявление doctype в выходном файле.

У меня нет образцов файлов для shahbhat, но общий подход прост с точки зрения XSLT: начните с преобразования идентичности и добавьте в шаблоны атрибуты действия, чтобы переопределить их так, как вы хотите. Чтобы добавить скрытые поля, я подозреваю, что самым простым способом было бы создать шаблон явно для элемента form в качестве преобразования идентичности, но с дополнительными элементами внутри него, которые также выводятся. Я думаю, что Фернандо Мигелез только что опубликовал пример.

Смежные вопросы