Ich versuche, ein XSLT-Stylesheet zu schreiben, das die Millisekunden von einem beliebigen Zeitstempel in einem XML-Formular entfernt. Meine Beispiel-XML unten ist nur ein Beispiel, es könnte denkbar sein, dass es eine beliebige Anzahl von Zeitstempeln im Umschlag gibt. Ich denke also, ich muss den Zeitstempel anpassen und ihn dann umwandeln.XSLT zum Entfernen von Millisekunden aus Timestamp
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header>
<soap:Body>
<Staging_Submit_Service xmlns="com.xxx">
<u_From_Partner__c>Our Partner</u_From_Partner__c>
<u_To_Partner__c>Us</u_To_Partner__c>
<u_Partner_CI__c/>
<u_Partner_ID__c>10051</u_Partner_ID__c>
<u_Partner_Name__c>ROSEVILLE</u_Partner_Name__c>
<u_Partner_Reported_Date__c>2016-07-26T17:38:28.746134Z</u_Partner_Reported_Date__c>
<u_Partner_Status_Reason__c>Failure in System</u_Partner_Status_Reason__c>
<u_Partner_Submit_Date__c>2016-07-25T18:11:23.5443Z</u_Partner_Submit_Date__c>
<u_Partner_Priority__c>Low</u_Partner_Priority__c>
<u_Partner_Service_Type>Event</u_Partner_Service_Type>
</Staging_Submit_Service>
</soap:Body>
</soap:Envelope>
und meine resultierende xml muss wie folgt aussehen:: Ich kann XSLT 2.0 Die ursprüngliche Nachricht wie folgt aussieht verwenden
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
</soap:Header><soap:Body>
<Staging_Submit_Service xmlns="com.xxx">
<u_From_Partner__c>Our Partner</u_From_Partner__c>
<u_To_Partner__c>Us</u_To_Partner__c>
<u_Partner_CI__c/>
<u_Partner_ID__c>10051</u_Partner_ID__c>
<u_Partner_Name__c>ROSEVILLE</u_Partner_Name__c>
<u_Partner_Reported_Date__c>2016-07-26T17:38:28Z</u_Partner_Reported_Date__c>
<u_Partner_Status_Reason__c>Failure in System</u_Partner_Status_Reason__c>
<u_Partner_Submit_Date__c>2016-07-25T18:11:23Z</u_Partner_Submit_Date__c>
<u_Partner_Priority__c>Low</u_Partner_Priority__c>
<u_Partner_Service_Type>Event</u_Partner_Service_Type>
</Staging_Submit_Service>
</soap:Body>
</soap:Envelope>
Hinweis den Zeitstempel. Ich bin diesen Weg gegangen, aber es scheint mich nicht dahin zu bringen, wo ich sein muss.
Ich bin wirklich nur vage vertraut mit XSLT und dieses spezielle Problem erfordert, dass ich es benutze. Vielen Dank im Voraus
Das hat funktioniert Großartig in meinem Tester, aber es hat sich beim Versuch, es in der Appliance zu verwenden, geirrt. Meine Vermutung ist andere Xml Parser: –
Meine Vermutung ist anders Xml Parser: Ich erhalte den Fehler: Fehler: 'Syntax Fehler in' * [nicht (*) und. umsetzbar als xs: dateTime] '.' FATALER FEHLER: 'com.sun.org.apache.xalan.internal.xsltc.compiler.NotCall kann nicht in com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern' : com.sun umgewandelt werden. org.apache.xalan.internal.xsltc.compiler.NotCall kann nicht in com.sun.org.apache.xalan.internal.xsltc.compiler.Pattern umgewandelt werden. Irgendeine Chance, ein anderes Matchmuster zu versuchen? –
Wenn Sie XSLT 2.0 in der Java-Welt verwenden wollen, dann müssen Sie Saxon 9 von Saxonica verwenden, Xalan ist ein XSLT 1.0-Prozessor und unterstützt weder den 'xs: dateTime'-Datentyp noch den XPath 2.0' castable as' -Ausdruck die 'format-dateTime' noch die' matches' oder 'replace' Funktion, die Sie versucht haben zu verwenden. –