XSLT внедряет HTML - PullRequest
       1

XSLT внедряет HTML

0 голосов
/ 09 сентября 2011

У меня есть следующий XML:

<person>
      <name>John</name>
      <htmlDescription>A <strong>very</strong> <b><i>nice</i></b> person </htmlDescription>
</person>

Я бы как-то хотел использовать этот XML в XSLT-преобразовании для создания HTML, такого как

A очень приятно человек

возможно ли это с помощью XSLT?

Ответы [ 4 ]

3 голосов
/ 09 сентября 2011

Если вы преобразуете его в HTML:

<xsl:stylesheet version='1.0'
                xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:output method='html'/>

<xsl:template match='person'>
    <td>
        <xsl:copy-of select='htmlDescription/node()'/>
    </td>
</xsl:template>

</xsl:stylesheet>

Если вы преобразуете его в XHTML:

<xsl:stylesheet version='1.0'
                xmlns='http://www.w3.org/1999/xhtml'
                xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:output method='xml'/>

<xsl:template match='htmlDescription//text()'>
    <xsl:value-of select='.'/>
</xsl:template>

<xsl:template match='htmlDescription//*'>
    <xsl:element name='{local-name()}'>
        <xsl:copy-of select='@*'/>
        <xsl:apply-templates select='node()'/>
    </xsl:element>
</xsl:template>

<xsl:template match='person'>
    <td>
        <xsl:apply-templates select='htmlDescription/node()'/>
    </td>
</xsl:template>

</xsl:stylesheet>
1 голос
/ 09 сентября 2011

Да, это возможно.Этот пример работает для меня:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="html" version="1.0" encoding="UTF-8" indent="yes"/>

<xsl:template match="person" >
    <xsl:element name="td">
        <xsl:copy-of select="htmlDescription/*"  />
    </xsl:element>
</xsl:template>

</xsl:stylesheet>
0 голосов
/ 09 сентября 2011
<xsl:template match="person">
    <tr>
        <td>
            <xsl:value-of select="name"/>
        </td>
         <td>
            <xsl:value-of select="htmlDescription"/>
        </td> 
    </tr>  
</xsl:template>
0 голосов
/ 09 сентября 2011
<xsl:template match="person">
    <xsl:element name="td">
        <xsl:value-of select="htmlDescription"/>
    </xsl:element>   
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...