首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xsl:apply-templates with params -如何保存格式?

xsl:apply-templates with params -如何保存格式?
EN

Stack Overflow用户
提问于 2013-04-17 07:45:26
回答 1查看 375关注 0票数 0

XSLT用作模板引擎。我有一些模板的结构,它用params从另一个模板转移数据:

代码语言:javascript
复制
<xsl:template match="/" mode="common-page">
    <xsl:param name="page-content"/>
    …
    <xsl:copy-of select="$page-content"/>
    …
</xsl:template>

并将该模板命名为:

代码语言:javascript
复制
<xsl:template match="/">
    <xsl:apply-templates select="." mode="common-page">
        <xsl:with-param name="page-content">
        <!--some html content with formatting-->
        <html>
            <body>
                <h1>Header</h1>
                <div>
                    <p>Text</p>
                </div>
            </body>
        </html>
        </xsl:with-param>
    </xsl:apply-templates>
</xsl:template>

在这种情况下,html内容中的格式保持不变,输出为:

代码语言:javascript
复制
<html>
    <body>
        <h1>Header</h1>
        <div>
            <p>Text</p>
        </div>
    </body>
</html>

但是,如果我试图在<xsl:apply-templates> (/result/page而不是/)中指定matchselect,格式化就会被清除。参数page-content相同:

代码语言:javascript
复制
<html><body><h1>Header</h1><div><p>Text</p></div></body></html>

XML示例:

代码语言:javascript
复制
<result xmlns:xlink="http://www.w3.org/TR/xlink" module="content" method="content" system-build="21199" lang="ru" header="Main page" title="Main page" request-uri="/.xml" pageId="2">
    <meta>
        <keywords/>
        <description/>
    </meta>
    <user id="42" status="auth" login="admin" xlink:href="uobject://42" type="sv"/>
    <parents/>
    <page id="2" parentId="0" link="/" is-default="1" is-active="1" object-id="313" type-id="50" type-guid="content-page" update-time="1364964725" alt-name="index">
        <basetype id="27" module="content">Content page</basetype>
        <name>Main page</name>
        <properties>
            <group id="65" name="common">
                <title>Params</title>
                <property id="117" name="h1" type="string">
                    <title>H1</title>
                    <value>Main page</value>
                </property>
            </group>
        </properties>
    </page>
</result>
EN

回答 1

Stack Overflow用户

发布于 2013-04-18 03:15:24

如果您使用的是XSLT2.0,并且您正在尝试获取一个缩进的结果文档(XML的每个内部级别都有一个制表符缩进),那么您应该能够向您的xsl:stylesheet元素添加一个xsl:output元素,并指定应该启用缩进。

例如,在xsl:stylesheet元素的开头,可以添加以下内容:

代码语言:javascript
复制
<xsl:stylesheet>
    <xsl:output indent="yes" />
    <!-- rest of document -->
</xsl:stylesheet>

另请参阅xsl:output元素的method属性,该属性设置"xml“、"html”和"xhtml“等常见输出类型的默认值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16049082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档