-2

我需要帮助解决 XSLT 中的一个小问题

我有一个 XML:a.xsm

<?xml version="1.0" encoding="UTF-8"?>
<ExtData>
  <table bName="B SERs" id="BSER">
    <Col bName="Bus" id="BUS">
      <CoreCol coreEName="SER" coreHref="../_a2.xml" corebName="Bus" coreId="BUS"/>
    </Col>
    <Col bName="Bus" id="BUS">
      <CoreCol coreEName="MOR" coreHref="../_a5.xml" corebName="Busw" coreId="BUSW"/>
    </Col>
    <Col bName="Ser" id="NAME">
      <CoreCol coreEName="SER" coreHref="../_a2.xml" corebName="Ser" coreId="NAME"/>
    </Col>
    <Col bName="ID" id="ID">
      <CoreCol coreEName="SER" coreHref="../_a2.xml" corebName="SerId" coreId="UCMDB_ID"/>
    </Col>
  </table>
</ExtData>

我需要编写一个函数,通过 coreName 返回 coreHref 这意味着 :: my_variable = same_func("SER") ==>> 变量将是 "../_a2.xml"

感谢您的帮助!

4

2 回答 2

1

这是选择 coreHref 的 XPath 表达式:

//Col/CoreCol[@coreEName='YorName']/data(@coreHref)
于 2013-03-03T16:30:46.240 回答
0

定义一个键

<xsl:key name="by-name" match="Col/CoreCol" use="@coreEName"/>

然后将它与例如一起使用key('by-name', 'SER')/@coreHref

但请注意,xsl:function您内部没有上下文节点来应用带有两个参数的键函数,因此如果您想在内部使用方法,xsl:function请确保您有

<xsl:variable name="main-root" select="/"/>

作为全局变量,然后使用key('by-name', 'SER', $main-root)/@coreHref.

于 2013-03-03T16:54:28.790 回答