代码之家  ›  专栏  ›  技术社区  ›  FrustratedWithFormsDesigner

Oracle XSL处理器扩展名称空间

  •  1
  • FrustratedWithFormsDesigner  · 技术社区  · 16 年前

    源文档可能如下所示:

    <pcy>
      <tList>
        <currTrn>
          <TXN_A>1</TXN_A>
          <TXN_B>2</TXN_B>
          ...
    

    转换如下所示:

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sc="http://www.myCompany.com/schemaAlpha" xmlns:pl="http://www.myCompany.com/schemaBeta">
        <xsl:template match="/">
            <pcyItem>
                <pl:mainTList>
                    <pl:currentTrnItem>
                        <sc:primaryTrnID>
                            <xsl:value-of select="/pcy/tList/currTrn/TXN_A"/>
                        </sc:primaryTrnID>
                        <sc:secondaryTrnID>
                            <xsl:value-of select="/pcy/tList/currTrn/TXN_B"/>
                        </sc:secondaryTrnID>
                                            ...
    

    我期望的正确输出(以及当我使用像JEdit这样的程序时得到的输出——它有一个XML转换插件)如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <pcyItem xmlns:pl="http://www.myCompany.com/schemaAlpha" xmlns:sc="http://www.myCompany.com/schemaBeta">
        <pl:mainTList>
            <pl:currentTrnItem>
                <sc:primaryTrnID>1</scom:primaryTrnID>
                <sc:secondaryTrnID>2</scom:secondaryTrnID>
                            ...
    

    <pcyItem>
      <pl:mainTList xmlns:pl="http://www.myCompany.com/schemaAlpha">
        <pl:currentTrnItem>
          <sc:primaryTrnID xmlns:sc="http://www.myCompany.com/schemaBeta">1</sc:primaryTrnID>
          <sc:secondaryTrnID xmlns:sc="http://www.myCompany.com/schemaBeta">2</sc:secondaryTrnID>
          ...
    

    在我看来,Oracle正在“内联”或扩展所有名称空间前缀。它为什么这样做?我怎样才能让它停止?

    3 回复  |  直到 16 年前
        1
  •  0
  •   Filburt kukabuka    16 年前

    只是猜测,但看起来Oracle隐式设置了

    exclude-result-prefixes="pl sc"
    

    我会试着设置

    exclude-result-prefixes="#default"
    

    重写可能的隐式 排除 .

        2
  •  0
  •   Andy    16 年前

    另一种看法是:是否需要停止Oracle处理器执行此操作?

    任何消耗转换输出的东西,除了人以外,都不会关心它读的是哪种形式,所以可能不值得太担心。

        3
  •  0
  •   FrustratedWithFormsDesigner    16 年前

    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:template match="/">
            <pcyItem xmlns:sc="http://www.myCompany.com/schemaBeta" xmlns:pl="http://www.myCompany.com/schemaAlpha">
              ...