【问题标题】:how to remove xmlns="" from xml using xslt如何使用 xslt 从 xml 中删除 xmlns=""
【发布时间】:2015-12-31 12:39:22
【问题描述】:

我必须生成以下格式的 xml -

    <?xml version="1.0" encoding="utf-8"?>
<ns0:ZINVS xmlns:ns0="http://STATOIL_BarcodeScanning_Schema">
  <CommonFields>
    <CompanyCode>02605</CompanyCode>
    <ScannerID>DST10739:Sess 2</ScannerID>
    <ScanningDate>2015-08-05</ScanningDate>
    <ScanningDocumentDescription>SPLITS0508</ScanningDocumentDescription>
    <ScanningDocumentID>299876_ILOLEJ</ScanningDocumentID>
    <ScanningOperatorID>ILOLEJ</ScanningOperatorID>
    <ScanningTime>15:16:09</ScanningTime>
  </CommonFields>
  <SpecificFields>
<DocumentNumber>15000560</DocumentNumber>
<DocumentType>JL</DocumentType>
<FiscalYear>15</FiscalYear>
<LineNo>1.000</LineNo>
<UserID>ILOLEJ</UserID>
<BarcodeNumber>7882</BarcodeNumber>
<DocumentID>7882</DocumentID>

但是当 xml 生成时,它就像 -

<?xml version="1.0" encoding="utf-8"?>
<ns0:ZINVS xmlns:ns0="http://STATOIL_BarcodeScanning_Schema" xmlns="http://www.w3.org/2001/XMLSchema" >
  <CommonFields>
    <CompanyCode>02605</CompanyCode>
    <ScannerID>DST10739:Sess 2</ScannerID>
    <ScanningDate>2015-08-05</ScanningDate>
    <ScanningDocumentDescription>SPLITS0508</ScanningDocumentDescription>
    <ScanningDocumentID>299876_ILOLEJ</ScanningDocumentID>
    <ScanningOperatorID>ILOLEJ</ScanningOperatorID>
    <ScanningTime>15:16:09</ScanningTime>
  </CommonFields> 
  <SpecificFields>
    <DocumentNumber>15000560</DocumentNumber>
    <DocumentType>JL</DocumentType>
    <FiscalYear>15</FiscalYear>
    <LineNo>1.000</LineNo>
    <UserID>ILOLEJ</UserID>
    <BarcodeNumber>7882</BarcodeNumber>
    <DocumentID>7882</DocumentID>
 </SpecificFields>
</ns0:ZINVS>

另外,找到 XSD 为 -

<?xml version="1.0" encoding="windows-1252" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://STATOIL_BarcodeScanning_Schema"
            targetNamespace="http://STATOIL_BarcodeScanning_Schema" elementFormDefault="qualified">
  <xsd:element name="ZINVS">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="CommonFields">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="CompanyCode" type="xsd:integer"/>
              <xsd:element name="ScannerID" type="xsd:string"/>
              <xsd:element name="ScanningDate" type="xsd:string"/>
              <xsd:element name="ScanningDocumentDescription" type="xsd:string"/>
              <xsd:element name="ScanningDocumentID" type="xsd:string"/>
              <xsd:element name="ScanningOperatorID" type="xsd:string"/>
              <xsd:element name="ScanningTime" type="xsd:string"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="SpecificFields">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="DocumentNumber" type="xsd:integer"/>
              <xsd:element name="DocumentType" type="xsd:string"/>
              <xsd:element name="FiscalYear" type="xsd:integer"/>
              <xsd:element name="LineNo" type="xsd:float"/>
              <xsd:element name="UserID" type="xsd:string"/>
              <xsd:element name="BarcodeNumber" type="xsd:integer"/>
              <xsd:element name="DocumentID" type="xsd:integer"/>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

XSLT 映射为 -

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0"
                xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
                xmlns:oraxsl="http://www.oracle.com/XSL/Transform/java"
                xmlns:mhdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.mediator.service.common.functions.MediatorExtnFunction"
                xmlns:oraext="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
                xmlns:tns="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbService" xmlns:xsi="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbService"
                xmlns:oracle-xsl-mapper="http://www.oracle.com/xsl/mapper/schemas"
                xmlns:dvm="http://www.oracle.com/XSL/Transform/java/oracle.tip.dvm.LookupValue"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:ns0="http://STATOIL_BarcodeScanning_Schema"
                xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:socket="http://www.oracle.com/XSL/Transform/java/oracle.tip.adapter.socket.ProtocolTranslator"
                exclude-result-prefixes="xsi oracle-xsl-mapper xsl xsd ns0 tns xp20 oraxsl mhdr oraext dvm xref socket"
                >
  <oracle-xsl-mapper:schema>
    <!--SPECIFICATION OF MAP SOURCES AND TARGETS, DO NOT MODIFY.-->
    <oracle-xsl-mapper:mapSources>
      <oracle-xsl-mapper:source type="WSDL">
        <oracle-xsl-mapper:schema location="../WSDLs/dbService.wsdl"/>
        <oracle-xsl-mapper:rootElement name="XmldemoCollection"
                                       namespace="http://xmlns.oracle.com/pcbpel/adapter/db/top/dbService"/>
      </oracle-xsl-mapper:source>
    </oracle-xsl-mapper:mapSources>
    <oracle-xsl-mapper:mapTargets>
      <oracle-xsl-mapper:target type="WSDL">
        <oracle-xsl-mapper:schema location="../WSDLs/fileReference.wsdl"/>
        <oracle-xsl-mapper:rootElement name="ZINVS" namespace="http://STATOIL_BarcodeScanning_Schema"/>
      </oracle-xsl-mapper:target>
    </oracle-xsl-mapper:mapTargets>
    <!--GENERATED BY ORACLE XSL MAPPER 12.1.3.0.0(XSLT Build 140529.0700.0211) AT [SAT OCT 03 16:01:58 IST 2015].-->
  </oracle-xsl-mapper:schema>
  <!--User Editing allowed BELOW this line - DO NOT DELETE THIS LINE-->
  <xsl:template match="/">
    <ns0:ZINVS xmlns="http://www.w3.org/2001/XMLSchema">
      <CommonFields>
        <CompanyCode>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data"/>
        </CompanyCode>
        <ScannerID>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data1"/>
        </ScannerID>
        <ScanningDate>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data2"/>
        </ScanningDate>
        <ScanningDocumentDescription>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data3"/>
        </ScanningDocumentDescription>
        <ScanningDocumentID>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data4"/>
        </ScanningDocumentID>
        <ScanningOperatorID>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data5"/>
        </ScanningOperatorID>
        <ScanningTime>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </ScanningTime>
      </CommonFields>
      <SpecificFields>
        <DocumentNumber>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </DocumentNumber>
        <DocumentType>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </DocumentType>
        <FiscalYear>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </FiscalYear>
        <LineNo>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </LineNo>
        <UserID>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </UserID>
        <BarcodeNumber>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </BarcodeNumber>
        <DocumentID>
          <xsl:value-of select="/tns:XmldemoCollection/tns:Xmldemo/tns:data6"/>
        </DocumentID>
      </SpecificFields>
    </ns0:ZINVS>
  </xsl:template>
</xsl:stylesheet>

我想使用 XSLT 从 ZINVS 元素中删除 xmlns="http://www.w3.org/2001/XMLSchema",因为映射是使用 XSLT 完成的。我不确定我在哪里犯了错误,因为我是新手这。你们能请我解决这个问题吗?

【问题讨论】:

  • 您使用什么软件来生成 XML?它不应该将两个不同的 xmlns 属性放入同一个元素中。
  • 您好,我正在使用 Jdeveloper 从正确的 XML 生成 XSD。在创建 XSD 时,我将目标名称空间设置为 -STATOIL_BarcodeScanning_Schema。这是问题吗?我是否只生成了错误的 XSD?

标签: xml xslt namespaces


【解决方案1】:

在您的 XSLT 更改中

<ns0:ZINVS xmlns="http://www.w3.org/2001/XMLSchema">

<ns0:ZINVS>

【讨论】:

  • 你好,如果我不这样写 w3.org/2001/XMLSchema"> 那么子元素将命名空间作为 xmlns="" 我仍然可以看到 xmlns="@987654322 @" 在我的根元素中。我不希望 xmlns 出现在我的根元素和子元素中。
  • @kushalkaria 你能发布原始 XML 吗?
【解决方案2】:

您需要从 xml 中删除默认命名空间,正确的语法是空的默认命名空间,如下所示:

<ns0:ZINVS xmlns="">

【讨论】:

    猜你喜欢
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多