XSLT—如何将节点内的内联/转义XML视为嵌套节点

XSLT—如何将节点内的内联/转义XML视为嵌套节点,xml,xslt,xsl-fo,Xml,Xslt,Xsl Fo,xslt新手-到目前为止还不喜欢它 试图保留转换为PDF的应用程序接收的某些HTML(表格)格式 需要xslt方法将XML节点中转义的HTML/XML数据解释为进一步的子节点吗 已在该节点上尝试v3 parse-xml()。 在XSLT 1.0中,您已尝试使用v1搜索/替换模板将转换为,您必须分两步进行转换:首先,使用嵌套的xml禁用节点4a上的输出转义,并将结果保存到文件中;然后使用另一个XSLT样式表处理生成的文件 这是假设您的处理器支持禁用输出转义,并且转义的字符串包含格式良好的XML。您

xslt新手-到目前为止还不喜欢它

试图保留转换为PDF的应用程序接收的某些HTML(表格)格式

需要xslt方法将XML节点中转义的HTML/XML数据解释为进一步的子节点吗

已在该节点上尝试v3 parse-xml()。

在XSLT 1.0中,您已尝试使用v1搜索/替换模板将
转换为
,您必须分两步进行转换:首先,使用嵌套的xml禁用节点4a上的输出转义,并将结果保存到文件中;然后使用另一个XSLT样式表处理生成的文件


这是假设您的处理器支持
禁用输出转义
,并且转义的字符串包含格式良好的XML。

您的处理器支持哪个版本的XSLT?v1.0
$lt不是转义XML,它应该是
。XPath 3有
解析XML片段
,可以将带有XML标记的字符串解析为节点。在XSLT 3.0中可以这样做:(正如Martin所说,
$lt;
不是转义XML,因此是replace语句)。出于兴趣,是否有v2或v3方法?(对于正在使用的处理器来说,对v2/v3的更新支持即将到来)正如其他人已经指出的,将字符串解析为XML是XSLT 3.0的内置功能。一些XSLT2.0处理器支持将其作为扩展。
<?xml version="1.0" encoding="windows-1252"?>
<Report>
    <node1>node1</node1>
    <node2>node2</node2>
    <node3>node3</node3>
    <node4>
        <node4a_with_nested_xml>Nestedxml text$lt;br/$gt;
            $lt;b$gt;
                $lt;u$gt;blah blah blah$lt;/u$gt;
            $lt;/b$gt;
            $lt;br/$gt;
            $lt;table$gt;
                $lt;tr$gt;
                    $lt;td$gt;
                        $lt;br/$gt;blah blah blah$lt;br/$gt;
                    $lt;/td$gt;
                $lt;/tr$gt;
            $lt;/table$gt;
            $lt;b$gt;
                $lt;u$gt;blah blah blah$lt;/u$gt;
            $lt;/b$gt;
            $lt;br/$gt;
            $lt;table$gt;
                $lt;tr$gt;
                    $lt;td$gt;
                        $lt;br/$gt;blah blah blah$lt;/td$gt;
                    $lt;td$gt;blah blah blah$lt;br/$gt;Other:$lt;/td$gt;
                    $lt;td$gt;blah blah blah$lt;br/$gt;
                    $lt;/td$gt;
                $lt;/tr$gt;
            $lt;/table$gt;
        </node4a_with_nested_xml>
    </node4>
</Report>
<?xml version="1.0" encoding="windows-1252"?>
<Report>
    <node1>node1</node1>
    <node2>node2</node2>
    <node3>node3</node3>
    <node4>
        <node4a_with_nested_xml>
            Nestedxml text
            <br/>
                <b>
                    <u>blah blah blah</u>
                </b>
            <br/>
            <table>
                <tr>
                    <td>
                        <br/>blah blah blah<br/>
                    </td>
                </tr>
            </table>
            <b>
                <u>blah blah blah</u>
            </b>
            <br/>
            <table>
                <tr>
                    <td>
                        <br/>blah blah blah
                    </td>
                    <td>
                    blah blah blah<br/>Other:
                    </td>
                    <td>blah blah blah<br/>
                    </td>
                </tr>
            </table>
        </node4a_with_nested_xml>
    </node4>
</Report>
<xsl:for-each select="Report">
    <xsl:for-each select="node4">
        <xsl:for-each select="node4a_with_nested_xml">
            <xsl:value-of select="."/>
            <xsl:for-each select="table">
                <fo:table>
                    <xsl:for-each select="tr">
                    <fo:table-row>
                        <xsl:for-each select="td">
                        <fo:table-cell>
                            <xsl:value-of select="."/>
                            <xsl:for-each select="br">
                                <fo:block/>
                            </xsl:for-each>
                        </fo:table-cell>
                        </xsl:for-each>
                    </fo:table-row>
                </xsl:for-each>
                </fo:table>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:for-each>
</xsl:for-each>