Merci beaucoup stackoverflow pour vos suggestions et réponses.Besoin d'aide pour aligner la valeur de l'attribut dans rootnode en utilisant xslt
ci-dessous est mon code source
<?xml version="1.0" encoding="UTF-8"?>
<PurchaseOrderDocument creationDate="2017-09-26T18:37:48.837Z"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dssuid="urn:autoid:specification:universal:Identifier:xml:schema:1"
xmlns:dsscore="urn:autoid:specification:interchange:PMLCore:xml:schema:1">
<PurchaseQuery>
<EventDate>20170926</EventDate>
<bizLocation>
<id>urn:ddd:id:sgln:0315563.00000.0</id>
</bizLocation>
<Serialization>
<BATCH_ID>3091145AB</BATCH_ID>
<EXPIRATION_DATE>20190504</EXPIRATION_DATE>
<PRODUCTION_DATE>20170505</PRODUCTION_DATE>
<GTIN>04028691544401</GTIN>
<Count>8088</Count>
</Serialization>
</PurchaseQuery>
</PurchaseOrderDocument>
Ce xml source a a namespaces indésirables Ma cible réelle devrait ressembler à ceci
<?xml version="1.0" encoding="UTF-8"?>
<ns0:PurchaseOrderDocument xmlns:ns0="urn:global:mns:PurchaseOrder"
creationDate="2017-09-26T18:37:48.837Z">
<PurchaseQuery>
<EventDate>20170926</EventDate>
<bizLocation>
<id>urn:ddd:id:sgln:0315563.00000.0</id>
</bizLocation>
<Serialization>
<BATCH_ID>3091145AB</BATCH_ID>
<EXPIRATION_DATE>20190504</EXPIRATION_DATE>
<PRODUCTION_DATE>20170505</PRODUCTION_DATE>
<GTIN>04028691544401</GTIN>
<Count>8088</Count>
</Serialization>
</PurchaseQuery>
</ns0:PurchaseOrderDocument>
J'ai essayé d'appliquer le XSLT ci-dessous, mais l'attribut est pas l'ordre attendu par la cible
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="2.0" encoding="UTF-8" />
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*" priority="1">
<xsl:element name="{local-name()}" >
<xsl:namespace name="ns0"
select="'urn:global:mns:PurchaseOrder'"/>
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
T il sortie après application XSLT est comme ci-dessous
<?xml version='1.0' encoding='UTF-8' ?>
<PurchaseOrderDocument xmlns:ns0="urn:global:mns:PurchaseOrder"
creationDate="2017-09-26T18:37:48.837Z">
<PurchaseQuery>
<EventDate>20170926</EventDate>
<bizLocation>
<id>urn:ddd:id:sgln:0315563.00000.0</id>
</bizLocation>
<Serialization>
<BATCH_ID>3091145AB</BATCH_ID>
<EXPIRATION_DATE>20190504</EXPIRATION_DATE>
<PRODUCTION_DATE>20170505</PRODUCTION_DATE>
<GTIN>04028691544401</GTIN>
<Count>8088</Count>
</Serialization>
</PurchaseQuery>
</PurchaseOrderDocument>
J'ai essayé plusieurs façons d'obtenir attribuer Date de création avant l'espace de nom mais est allé en vain .Je ne suis pas en mesure de comprendre où je suis missing.I ont vu beaucoup de blogs, mais malheureusement, je suis incapable de trouver comment conserver l'attribut (qui est la valeur dynamique) dans le nœud racine pour venir dans la position correcte comme dans la structure cible.Cette logique est un peu important pour moi.S'il vous plaît suggérer ce que je devrais inclure dans le code XSLT pour obtenir la structure cible réelle. Toute aide serait grandement appréciée.
Y at-il un code XSLT pour le cas ci-dessus. S'il vous plaît faites le moi savoir. Toute aide est la bienvenue. – piuser
Ajouter un attribut d'espace de noms à l'instruction xsl: element (défini sur l'URI de l'espace de noms); supprime l'instruction xsl: namespace. –