Преобразование XHTML в XML XSLT - PullRequest
       0

Преобразование XHTML в XML XSLT

2 голосов
/ 27 октября 2011

Я делаю очень простой xslt для преобразования html-страницы в xml-файл.

Но мне кажется, что отправная точка для меня не так проста. Моя первая цель - преобразовать *Тег 1003 * в тег <topic>.

Я сделал следующее xslt:

 <xsl:template match="@*|node()">
   <xsl:copy>
    <xsl:apply-templates select="@*|node()"/> 
  </xsl:copy>  
 </xsl:template>

 <xsl:template match="/">
   <xsl:apply-templates/>
 </xsl:template>

 <xsl:template match="html">
  <topic>
    <xsl:text> Conversion Test</xsl:text>
  </topic>
 </xsl:template>

Однако теперь, после запуска этого xslt, результат xml имеет чисто такое же содержимоеИсходная HTML-страница, кажется, что третье совпадение шаблона, которое я написал (для соответствия тегу <html>), никогда не попадет.

Исходный HTML выглядит так:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>..</head>
   <body>...</body>
 </html>

Можетэксперты мне тут немного помогают?

Ответы [ 3 ]

4 голосов
/ 27 октября 2011

XSLT 1.0:

Попробуйте добавить xmlns:x="http://www.w3.org/1999/xhtml" к вашему xsl:stylesheet и измените соответствие на match="x:html".(Примечание: вам не нужно использовать «x»; вы можете выбрать все, что захотите.)

XSLT 2.0:

Либо используйте вышеуказанный метод, либо заменитепрефикс пространства имен в вашем совпадении (ях) к "*" (match="*:html").Вы также можете добавить xpath-default-namespace="http://www.w3.org/1999/xhtml" к xsl:stylesheet.

0 голосов
/ 27 октября 2011

Цель XSLT - преобразовать XML документы в другие XML документы. HTML не является документом XML. Хотя XHTML - это XML, на самом деле он переформулирован в HTML, так что я просто не уверен, что то, что вы хотите сделать, легко или возможно с XSLT.

0 голосов
/ 27 октября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...