2017-06-12 3 views
-1

Ich bin neu in XSL-Dateien, und ich habe einige Schwierigkeiten zu entschlüsseln, was das folgende Stück Code tut. Ich habe das Internet durchsucht und kann nichts finden, was mir genau "nsl" ​​bedeutet. Könnte jemand bitte etwas Licht für mich darauf werfen? Dies ist Teil eines SOA-Systems."NSL" bedeutet in XSL-Datei

   <xsl:when test='ns1:Payment/ns1:PaymentHeader/ns1:ConsolidationType = "STANDARD"'> 
        <xsl:for-each select="ns1:Payment/ns1:PaymentModeDetail/ns1:GenericDetail/ns1:GenericLineItem"> 
         <ns0:ApInvoiceLinesInterface> 
          <ns0:invoiceLineId> 
          <xsl:value-of select="oraext:sequence-next-val('AP_INVOICE_LINES_INTERFACE_S',$CONN)"/> 
          </ns0:invoiceLineId> 
          <xsl:choose> 
          <xsl:when test="ns1:CommonInvoiceLineElements/ns1:AdjustmentReasonGid/ns1:Gid/ns1:Xid!=''">         
           <ns0:lineTypeLookupCode> 
            <xsl:text disable-output-escaping="no">MISCELLANEOUS</xsl:text> 
           </ns0:lineTypeLookupCode> 
          </xsl:when> 
          <xsl:otherwise> 
           <ns0:lineTypeLookupCode> 
            <xsl:text disable-output-escaping="no">FREIGHT</xsl:text> 
           </ns0:lineTypeLookupCode> 
          </xsl:otherwise> 
          </xsl:choose> 
          <ns0:amount> 
          <xsl:value-of select="ns1:CommonInvoiceLineElements/ns1:FreightRate/ns1:FreightCharge/ns1:FinancialAmount/ns1:MonetaryAmount"/> 
          </ns0:amount> 
          <ns0:description> 
          <xsl:value-of select='concat(substring-after(../../../ns1:PaymentHeader/ns1:InvoiceRefnum[ns1:InvoiceRefnumQualifierGid/ns1:Gid/ns1:Xid="INVOICE_DESCRIPTION"]/ns1:InvoiceRefnumValue,"BNM."),ns1:CostTypeGid/ns1:Gid/ns1:Xid)'/> 
          </ns0:description> 
          <ns0:taxClassificationCode> 
          <xsl:value-of select='concat(../../../ns1:PaymentHeader/ns1:VatAnalysis/ns1:VatCodeGid/ns1:Gid/ns1:Xid,"%")'/> 
          </ns0:taxClassificationCode> 
          <ns0:distCodeConcatenated> 
          <xsl:value-of select="ns1:CommonInvoiceLineElements/ns1:GeneralLedgerGid/ns1:Gid/ns1:Xid"/> 
          </ns0:distCodeConcatenated> 
         </ns0:ApInvoiceLinesInterface> 
        </xsl:for-each> 
       </xsl:when> 

Das sind die, in denen würde Ich mag die meisten verstehen ist:

<ns0:amount> 
    <xsl:value-of select="ns1:CommonInvoiceLineElements/ns1:FreightRate/ns1:FreightCharge/ns1:FinancialAmount/ns1:MonetaryAmount"/> 
</ns0:amount> 

Mein Grund, ein Verständnis dafür zu wollen, ist, weil ich das folgende Codesegment mit diesem Block glauben zurückkehrt ein positiver Wert für die Zahl, wenn eine negative Zahl an sie übergeben wird.

Vielen Dank im Voraus!

+1

Es ist nicht 'nsl', aber' ns1' mit einer Eins als letztes Zeichen. Ich habe leider keine Zeit für eine vollständige Antwort, aber suche nach "XML Namespaces". Diese Namespaces können auch in XPath-Abfragen verwendet werden (das Zeug in 'select =" "'). – Boldewyn

+1

"Ich habe das Internet durchsucht ..." Sie müssen eine effektivere Lernstrategie finden. Wenn Sie nicht wissen, dass ns1 ein Namespace-Präfix ist, wird das Internet Ihnen nicht sagen. Das Lesen eines Buches über XPath (oder sogar das Lesen der W3C-Spezifikation) würde Ihnen die Antwort viel schneller geben. –

Antwort

2

ns1 ist ein Präfix, das zum Auswählen von Elementen in einem Namespace verwendet wird. Irgendwo in Ihrem Stylesheet gibt es eine Namensraum-Deklaration Bindung dieses Präfix zu einem Namespace-URI, in Form von:

xmlns:ns1="some/string" 

irgendwo in Ihrer XML-Quell es eine ähnliche Namensraum-Deklaration wird einige oder alle Elemente in diesem Namensraum platzieren . Sie müssen ein Präfix verwenden, das an denselben Namespace-URI gebunden ist, um die Elemente in diesem Namespace auszuwählen.

Ich glaube, das folgende Codesegment mit diesem Block einen positiven Wert für die Anzahl zurückkehrt, wenn es eine negative Zahl an sie übergeben wird.

Ich sehe keine Grundlage für eine solche Überzeugung. Warum postest du kein (minimiertes) Beispiel, das das Problem zeigt?