Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [xslt] transformata komunikatu SOAP na XML, Problem z usunięciem profixów i namespace
damianooo
post 14.03.2018, 12:04:19
Post #1





Grupa: Zarejestrowani
Postów: 456
Pomógł: 2
Dołączył: 15.07.2011
Skąd: Katowice

Ostrzeżenie: (0%)
-----


Potrzebuję następujący dokument SOAPowy:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  3. <S:Body>
  4. <a1:mojkomunikat xmlns:a1="http://costam">
  5. <a1:message>
  6. <a1:msgHeader>
  7. </a1:msgHeader>
  8. <a1:msgData>
  9. <a1:some>duzo danych</a1:some>
  10. </a1:msgData>
  11. </a1:message>
  12. </a1:mojkomunikat>
  13. </S:Body>
  14. </S:Envelope>


Przerobić na :

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <msg>
  3. <parameters>
  4. <parameter>
  5. <key>content</key>
  6. <value><![CDATA[<some>duzo danych</some>]]></value>
  7. </parameter>
  8. </parameters>
  9. </msg>



Próbowałem tak jak poniżej:


  1. <xsl:stylesheet
  2. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
  4. xmlns:a1="http://costam"
  5. version="1.0">
  6.  
  7. <xsl:template match="/">
  8. <msg>
  9. <parameters>
  10. <parameter>
  11. <key>content</key>
  12. <value><xsl:text disable-output-escaping="yes">&lt;![CDATA[</xsl:text>
  13. <xsl:apply-templates select="//a1:msgData/*"/>
  14. <xsl:text disable-output-escaping="yes">]]&gt;</xsl:text></value>
  15. </parameter>
  16. </parameters>
  17. </msg>
  18. </xsl:template>
  19.  
  20. <xsl:template match="*">
  21. <xsl:element name="{local-name()}">
  22. <xsl:apply-templates select="node()|@*" />
  23. </xsl:element>
  24. </xsl:template>
  25.  
  26. </xsl:stylesheet>



ale dokleja mi jak widać poniżej ciągle namespace i prefix do elementu/noda roota.


  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <msg xmlns:a1="http://costam" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  3. <parameters>
  4. <parameter>
  5. <key>content</key>
  6. <value>
  7. <![CDATA[<some>duzo danych</some>]]>
  8. </value>
  9. </parameter>
  10. </parameters>
  11. </msg>



co robię źle ?
Będę wdzięczny za pomoc.
Pozdrawiam





ok pomogli już na innym forum .

Należy dodać taką opcję exclude-result-prefixes :

  1. <xsl:stylesheet xmlns..... exclude-result-prefixes="S a1">


Ten post edytował damianooo 14.03.2018, 10:36:57
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.12.2019 - 06:58