XSLT函数以及如何访问函数中的逻辑

问题描述 投票:0回答:1

我是XSLT的新手,并试图理解功能。我从另一个开发人员那里得到了一个XSLT,并试图理解转换

  <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:CMQueryHelper="urn:CMQueryHelper" xmlns:ExternalReference="urn:ExternalReference" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" exclude-result-prefixes="xsl xsi msxsl CMQueryHelper ExternalReference">
   <xsl:output omit-xml-declaration="yes" />
   <xsl:output method="xml" />
   <xsl:template match="/">
      <xsl:variable name="IncidentLocationOrgUnitID" select="CMQueryHelper:GetOrgChartInheritedNodeAttribute($CNode/Incident/Location, 'OrgUnitID')" />
   </xsl:template>
</xsl:stylesheet>

任何人都可以解释这里正在做什么以及如何访问urn:CMQueryHelper&GetOrgChartInheritedNodeAttribute函数里面写的是什么逻辑?

xmlns:CMQueryHelper="urn:CMQueryHelper" ??xmlns:ExternalReference="urn:ExternalReference" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0" exclude-result-prefixes="xsl xsi msxsl CMQueryHelper ExternalReference"
function xslt
1个回答
0
投票

这是一个非常奇特的XSLT样式表。它的唯一作用是调用外部函数CMQueryHelper:GetOrgChartInheritedNodeAttribute(),我们不知道从提供的源查看该函数可能是什么。允许XSLT样式表调用外部函数,但这样做的机制完全取决于您使用的XSLT处理器。通常,函数名称的名称空间URI给出了线索​​,但在这种情况下不是。样式表声明Microsoft msxsl命名空间的事实也可能是一个线索,但由于它不使用该命名空间,因此这可能只是冗余样板。

请注意,给定此样式表的某些XSLT处理器将不执行任何操作。 stylesheeet所做的就是声明和初始化一个变量,并且由于从不使用变量的值,优化器完全有能力决定评估变量没有意义。

© www.soinside.com 2019 - 2024. All rights reserved.