Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [xml][php] createDocumentType, DOCTYPE i qualifiedName z dwukropkiem
robis
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2006

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


Otóż robie sobie dokument XML, żeby zintegrować go z pasażem onetu. W ich specyfikacji wygląd DOCTYPE prezentuje się tak:

  1. <!DOCTYPE pasaz:Envelope SYSTEM "loadOffers.dtd">


zatem robie sobie xml w php-owskim DOMDocument i natrafilem na taki blad:

  1. <?php
  2. $dom= new DomImplementation();
  3. $cdata=$dom->createDocumentType('pasaz:Envelope', '', 'loadOffers.dtd');
  4. $xml=$dom->createDocument('', '', $cdata);
  5. ?>


i podczas wypisywania xmla na ekran dostaje DOCTYPE:
  1. <!DOCTYPE Envelope SYSTEM "loadOffers.dtd">


zatem pomija mi to co przed dwukropkiem.

Co mam zrobic zeby mi to poprawnie dzialalo?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
splatch
post
Post #2





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


DTD nie obsługuje przestrzeni nazw.


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
robis
post
Post #3





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2006

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


Zatem co mi radzisz? :-)
Go to the top of the page
+Quote Post
splatch
post
Post #4





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


Jadąc po najmniejszej linii oporu - wywalić doctype.
Druga linia oporu - str_replace.

No i na końcu ...
Warto zwrócić uwagę, że jest to w gruncie rzeczy rozszerzenie SOAP:
Kod
<pasaz:Envelope xmlns:pasaz="http://schemas.xmlsoap.org/soap/envelope/" />

Wystarczy spojrzeć na przestrzeni nazw xmlns:pasaz, by zobaczyć, że jest to rozszerzenie, zatem trzecia opcja - poprosić panów z pasażu o udostępnienie deskryptora usługi (URL pliku WSDL), by móć korzystać z normalnych interfejsów programistycznych. Spójrz na przykład na punkt 13 w podręczniku integracji - jest tam wysyłane najnormalniejsze na świecie zapytanie via SOAP, pytanie tylko - dlaczego okrężną drogą, miast SOAP Clientem? smile.gif


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
robis
post
Post #5





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2006

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


Dzieki :-)

A wiesz moze jak zrobic zeby DOMDocument robil wciecia i przejscia do nowej linii przy tworzeniu XMLA? Wiem ze to tylko kosmetyka ale smile.gif

[EDIT] Wielkie dzieki - jestem Twoim dłużnikiem smile.gif

Ten post edytował robis 27.02.2007, 21:48:22
Go to the top of the page
+Quote Post
splatch
post
Post #6





Grupa: Zarejestrowani
Postów: 487
Pomógł: 7
Dołączył: 7.01.2004
Skąd: Warszawa

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


  1. <?php
  2. $domDocumentObj->formatOutput = true
  3. ?>


--------------------
Łukasz Dywicki
Independent Java and open source software consultant.
Blog - Java, OSGi, integracja oprogramowania..
Go to the top of the page
+Quote Post
robis
post
Post #7





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2006

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


Aaa nie mów hop zanim....

Wystąpił problem przy konwertowaniu znaków do ISO-8859-2 z UTF-8. A mianowicie błąd jaki występuje to :

Kod
output conversion failed due to conv error Bytes: 0xB6 0x74 0x61 0x6D

a wystepuje przy
  1. <?php
  2. $this->xml->saveXML();
  3. ?>


przekodowywanie zatrzymuje sie przy polskich znakach oczywsicie smile.gif

Ma ktoś koncepcję? smile.gif

Ten post edytował robis 28.02.2007, 09:22:40
Go to the top of the page
+Quote Post
mike
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Czy ustawiasz poprawne kodowanie przy tworzeniu obiektu DOM?
  1. <?php
  2. new DOMDocument('1.0', 'UTF-8');
  3. ?>
Go to the top of the page
+Quote Post
robis
post
Post #9





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 15.12.2006

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


ustawiam ISO, bo do ISO mam konwertowac - onet wymaga danych w ISO. Wiec DOMDocument sam dokonuje konwersji :] Z widocznym wyzej skutkiem:] Ja w bazie trzymam dane w UTF.

Tamten problem rozwiazany (dalem najpierw UTF, potem str_replace i normalnie iconv konwertowalem smile.gif )

I mam oto kolejne pytanie - jak za pomocą nuSOAP lub phpowskiego soapclienta wyslac gotowe dane - czyli nie call('nazwafunkcji', $dane) tylko zeby przekazac kod xml <?xml .... ?
Go to the top of the page
+Quote Post
SHARKI
post
Post #10





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 29.04.2007

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


ale dtd to opic xml'a czyli podanie czy dane pole ma liczba albo słowem ile ma miec znaków i takie ten
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 Aktualny czas: 22.08.2025 - 08:05