AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XSLT 1.0 Datumsvergleiche

Ein Thema von creehawk · begonnen am 31. Mai 2017 · letzter Beitrag vom 1. Jun 2017
 
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
243 Beiträge
 
Delphi 10.4 Sydney
 
#1

XSLT 1.0 Datumsvergleiche

  Alt 31. Mai 2017, 16:29
Moin Moin.

Delphi 10.1 Starter, MSXML 6.0, Windows 7, Kaffee, Pizza.

Ich habe hier eine XML Datei mit 3401 Einträgen, die so aussehen:

Code:
<?xml version="1.0" encoding="UTF-8"?>
<VTL xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="VTL.XSD">
 <Vertrag>
  <BPANR>280126979</BPANR>
  <Vertragsnummer>660258</Vertragsnummer>
  <Vertragsdatum>2011-04-19</Vertragsdatum>
  <Vertragsleitzahl>360 490 488</Vertragsleitzahl>
  <Geräteleitzahl>788 465 420</Geräteleitzahl>
  <Laufzeit>24</Laufzeit>
 </Vertrag>
Das Schema dazu:
Code:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="VTL">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Vertrag" maxOccurs="unbounded" minOccurs="0">
          <xs:complexType>
            <xs:sequence>
              <xs:element type="xs:int" name="BPANR"/>
              <xs:element type="xs:int" name="Vertragsnummer"/>
              <xs:element type="xs:date" name="Vertragsdatum"/>
              <xs:element type="xs:string" name="Vertragsleitzahl"/>
              <xs:element type="xs:string" name="Geräteleitzahl"/>
              <xs:element type="xs:int" name="Laufzeit"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
Ich würde jetzt gerne alle Verträge eines bestimmten Zeitraumes per XSLT 1.0 (2.0 geht nicht) herausfischen.

Die XSL Datei
Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
   <VTL>
    <xsl:for-each select="VTL/Vertrag">
    <xsl:if test="Vertragsdatum &gt; 2011-04-19 and Vertragsdatum &lt; 2011-04-23">   
     <Vertrag>
      <BPANR><xsl:value-of select="BPANR"/></BPANR>
     </Vertrag>
    </xsl:if>
    </xsl:for-each>
   </VTL>
</xsl:template>
</xsl:stylesheet>

Die XSLT rufe ich so auf

Code:
function Transform(XMLContent : string; XSLContent : string) : WideString;
var
  xmlSource, xslQuery, xmlResult : IXMLDOMDocument;
begin
  xmlSource := CoDOMDocument.Create;
  xslQuery := CoDOMDocument.Create;
  xmlResult := CoDOMDocument.Create;
  xmlSource.load(XMLContent);
  xslQuery.load(XSLContent);
  xmlResult.loadXML(xmlSource.transformNode(xslQuery));
  XMLResult.save(PrgPath + 'XML\Result.xml');
end;
Das bringt mal überhaupt nichts. Irgendwo ist da wohl wieder ein Date Problem. Oder nicht? Oder was?

creehawk
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz