【问题标题】:XSLT Transformation (performance related query)XSLT Transformation(性能相关查询)
【发布时间】:2011-05-17 17:56:43
【问题描述】:

我正在使用以下代码 sn-p 进行 xml 文档的转换:

<xsl:for-each select="document('POC.XML')/a/b/Outputs/*">
  <ns0:xyz xmlns:ns0="http://ratabase.cgi.com/">
    <ns0:na>
      <xsl:value-of select="local-name()" />
    </ns0:na>
    <ns0:Val>
      <xsl:value-of select="." />
    </ns0:Val>
  </ns0:Rat>
</xsl:for-each>

我想知道在大规模应用程序中使用 (&lt;xsl:for-each select="document('POC.XML')/a/b/Outputs/*"&gt;) 将文档函数与 for-each 语句结合使用时是否会影响性能?

我用来转换 xml 的一种方法是使用下面给出的语法:

<xsl:variable name="var:xmldoc" select="document('POC.XML')/a/b/c/d/Outputs"/>
<xsl:copy-of select="$var:xmldoc"/>

我也想知道是否有任何替代方法适用于完成上述转换。

【问题讨论】:

  • 在这里发帖时无需大喊大叫。还。要发布 XSLT 之类的代码,请用鼠标选择它,然后点击编辑器上方的 {} 按钮。
  • 尽可能提供有意义的代码部分,并且在 xml 的情况下,格式正确。
  • 是我自己还是变量名上的命名空间前缀看起来很奇怪?

标签: xslt


【解决方案1】:

性能完全取决于您使用的 XSLT 处理器;如果不说您要问的是什么处理器,就问性能问题是没有意义的。我希望大多数 XSLT 处理器能够非常有效地处理这个结构(它们当然不会重复解析文档)——但可能会有例外。

如果您想知道一种构造是否比另一种更快,请对其进行测量。没有必要推测性能 - 如果您无法衡量差异,则无需担心差异。

您的第二个代码示例非常晦涩。好的,您选择一些节点,然后复制它们。您没有说明为什么要复制它们 - 通常在 XSLT 中您不需要复制内容,因为您可以像使用原始文件一样工作。

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2017-08-07
    相关资源
    最近更新 更多