2010-07-22 4 views
1

Возьмите ниже XMLНаписать HTML из XSLT

<?xml version="1.0"?> 
<?xml-stylesheet href="desktop.xsl" type="text/xsl"?> 
<desktop> 
    <tag name="h1" caption="hello"/> 
</desktop> 

У меня есть XSLT, который будет принимать имя атрибута элемента тега и создать соответствующий HTML элемент

Snippet из XSL

<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="html" encoding="UTF-8" omit-xml-declaration="yes"/> 

    <xsl:template match="tag"> 
    <{@name}>{@caption}</{@name}> 
    </xsl:template> 
</xsl:stylesheet> 

который, разумеется, не работает, из-за символов <> (я полагаю)

Как я могу обойти это?

Благодаря

ответ

3

Вам нужно будет использовать <xsl:element>. См. here.

Например:

<xsl:element name="@name"><xsl:value-of select="@caption"></xsl:element> 
+0

Большое спасибо. Я новичок в XSL и никогда не видел этот тег – Thomas

+0

Не беспокойтесь, рад, что я мог бы помочь! – Jake

0

Используйте <xsl:element> вместо которой будет создан новый узел. Например, я однажды использовал следующий код для создания автоматически вложенных заголовков в HTML:

<xsl:variable name="extlevel" select="count(ancestor::External[not(@link)])"/> 
<xsl:element name="h{$extlevel + 2}"><xsl:value-of select="@name"/></xsl:element> 
Смежные вопросы