科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件小建议:扩展XMLType以访问XPath标量函数

小建议:扩展XMLType以访问XPath标量函数

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

我经常需要使用name()和local-name()。许多时候,Count()是另一个很好用的函数。我决定编写我自己的析出函数。

作者:builder.com.cn 2007年6月5日

关键字: XSLT XML

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共19页)

由于某种原因,XMLType XPath应用不允许输出标题结果。根据以下文档:

EXTRACT(XML)与EXISTSNODE函数类似。它应用一个VARCHAR2 XPath字符串,并返回一个包含XML片断的XMLType实例。

Extract仅返回一个XMLType。一个标量值是一个返回varchar2、数字或日期的函数。这意味着在XPath语句中,你可以使用node()之类的函数并返回一个XML片断。但如果你使用name(),它将返回指定元素的VARCHAR2名称,你会得到错误消息。

我经常需要使用name()和local-name()。许多时候,Count()是另一个很好用的函数。我决定编写我自己的析出函数。我希望对XMLType进行扩张,使其允许我增加自己的超载Extract。但我无法做到这一点。据信,XMLType是一个内置应用,而不是一个UDT,因此我不能对其进行扩张。

要达到相同的目的,还有别的方法。于是我建立自己的类型,它拥有一个XMLType属性;我建立自己的Extract,它叫做XSLT转换。现在如果在标准的XMLType和我自己建立的XMLType间来回移动会很麻烦,因此我加入骨架代码来调用Oracle XMLType。这样,我就能在正常使用XMLType的地方使用我的类型,只是它返回的是标量值。

这样做的好处是,我可以增加任何我认为需要的扩张。

在下面的代码中,我没有使用XMLType的每一个方法。我使用了一个超载Extract(),说明如何增加existsNode()和getStringVal()。如果你想对它进一步扩张,可以使用那个例子。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章