繁体   English   中英

XML到XSL的转换

[英]XML to XSL transformation

我是XML的新手。 我正在尝试转换以下XMl文件

 <?xml version="1.0"?>
    <parent original_id="OI123" id="I123">
        <custompanel panel="cp"></custompanel>
    </parent>

进入以下HTML

<html>
    <body><div xmlAttribute="{"original-id":"OI123","id":"I123"}">
               <p xmlAttribute={"panel":"cp"}/>
          </div>
    </body>
</html>

XML标记<parent>应该转换为<div><custompanel>应该转换为<p>标记。

我已经阅读了W3CSchool的XSTL文档,但仍然不确定如何解决该问题,有人可以帮助我吗? 自定义属性需要作为JSONObject存储在xmlAttribute中。

快速研究了正确的语法后,我想到了这一点。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output
    method="xml"
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
    indent="yes"
    encoding="utf-8" />
    <xsl:template match="parent">
        <html>
            <body>
                <div xmlAttribute="{{'original-id':'{@original_id}','id':'{@id}'}}">
                    <xsl:apply-templates />
                </div>
            </body>
        </html>
    </xsl:template>
    <xsl:template match="custompanel">
        <p xmlAttribute="{{'panel':'{@panel}'}}" />
    </xsl:template>
</xsl:stylesheet>

棘手的部分是为我们自己构建的JSON扩展{} 您需要两个大括号{{才能有一个字面的括号。 此外,您还需要在属性内使用单引号' ,因为双引号会转义为&quot; 您可以使用@foo选择器访问属性,但是现在您需要使用实际的{}来使处理器识别它应该执行的操作。

我猜您的实际文件有多个<parent> 在这种情况下,您需要在其周围有一个根元素,并且需要调整XSLT。 添加另一个<xsl:template match="/">并将HTML框架移到此处。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM