gpt4 book ai didi

xslt - 如果镜像输入数据,XSL 文档会是什么样子?

转载 作者:行者123 更新时间:2023-12-02 11:41:33 24 4
gpt4 key购买 nike

XSL 的典型用法是:

XML1.xml -> *transformed using xsl* -> XML2.xml

如果我想简单地镜像输入数据,XSL 文档是什么样子的?

例如:

XML1.xml -> *transformed using xsl* -> XML1.xml

最佳答案

How does an XSL document look like, if I want to simply mirror the input data?

这个问题有多个答案,但所有这些都可以命名为“身份转换”:

  1. <xsl:copy-of select="/"/> 这是最短、最简单、最高效、最不灵活、不可扩展且无用的身份转换。

  2. 经典身份规则,每个人都知道(或应该知道):

_

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

这仍然是一个非常短的单模板转换,它是一种更具可扩展性和有用的身份转换,也称为“身份规则”。使用和覆盖身份转换是最基本、最强大的 XSLT 设计模式,只需几行即可解决常见的复制和替换/重命名/删除/添加问题。也许 xslt 中所有答案的 90% 以上标签使用这种形式的身份转换。

.3。 细粒度控制身份规则,每个人都应该知道(而且很少有人知道):

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="@*|node()[1]"/>
</xsl:copy>
<xsl:apply-templates select="following-sibling::node()[1]"/>
</xsl:template>
</xsl:stylesheet>

这与上面 2 中定义的众所周知的身份规则类似,但它提供了对 XSLT 处理的更精细的控制。

通常使用 2. <xsl:apply-templates select="@*|node()">触发许多转换(对于所有属性和子节点),可以按任何顺序甚至并行完成。在某些任务中,我们不希望在其他节点之后处理某些类型的节点,因此我们必须通过使用与不需要的节点匹配的空模板覆盖它并在特定模式下添加其他模板来调查身份规则的泄漏“当时机成熟时”处理这些节点...

.3。更适合我们需要更多控制和真正顺序类型处理的任务。有些任务用 2. 很难解决,但用 3. 就很容易解决。

关于xslt - 如果镜像输入数据,XSL 文档会是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com