Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: DOMDocument + DTD
Forum PHP.pl > Forum > PHP
koodlaty
Tworzę dokument przy pomocy DOMDocument.

Chcę by xml zawierał definicję dokumentu.

Jak "po bożemu" umieścić <!DOCTYPE> z poziomu DOMDocument?
TrevorGryffits
Hmm... A dodać DOMDocumentType" title="Zobacz w manualu PHP" target="_manual?
wrzasq
nie wiem, czy sa jakies inne, szybsze sposoby, ale po moich probach, nie udalo mi sie nic innego niz to co tutaj wklejak (fragment kodu jednej z moich klas):

  1. <?php
  2. // for DTD
  3. $dom = new DOMImplementation();
  4.  
  5. // creates DTD with path that will be used in packages directories
  6. $dtd = $dom->createDocumentType('repository', '', '../../wrzasqcmf.dtd');
  7.  
  8. // XML prolog
  9. $document = $dom->createDocument('', 'package', $dtd);
  10. $document->encoding = 'utf-8';
  11. $document->version = '1.0';
  12. $root = $document->documentElement;
  13. ?>
koodlaty
Tak wrzasq, tak jest elegancko, ale w ten sposób wskazujesz zewnętrznych plik, a jak umieścic całą definicję wewnątrz XML-a?
wrzasq
z tego co sie orientuje, to takiej mozliwosci nie ma, zreszta na forum znalazlem duzo starszy temat: http://forum.php.pl/Generacja_DTD_na_podst...ntu_t78706.html ktory pozosal bez odpowiedzi, czyli odpowiedzi nikt nie znal. dlatego sadze, ze nie ma takiej mozliwosci (na pewno nie istnieje do tego jakis ludzki interfejs, moze da sie ten cel osiagnac jakos preparujac dane do innych funkcji nie przeznaczonych do tego celu).
dr_bonzo
koodlaty: konktatenacja?

$xml = $dtd . $xmlWithoutDTD;

?
z tym ze oczywiscie nie robisz tego DOMem


edit: lol, teraz dopiero przeczytalem linka od wrzasq

koodlaty, chcesz wygenerowac DTD, czy do znasz i chcesz tylko dodac?
kwiateusz
wg pierwszego postu ma juz dtd i chce wstawic doctype do xmla
wrzasq
nie chce sie wypowiadac za koodlaty'ego, natomiast tak:

jesli DTD jest zewnetrzne, no to moj kod powinien pomoc (tak jak napisalem przedtem, nie specjalnie szukalem bardziej eleganckich metod).

natomiast po odpowiedzi na moj post mozna sadzic, ze koodlaty chce zrobic cos w ten desen:

Kod
<?xml version="1.0"?>
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend</body>
</note>

(przyklad przeklejony z http://stencel.mimuw.edu.pl/sem/msui/04.10.21.xml/)

do tego tyczy sie moja druga odpowiedz. takze tutaj pewnie wchodzi w gre juz operaowanie na surowym stringu (a wiec juz po eskporcie drzewa DOM). zastanawiam sie natomiast, czy nie da sie jakos "wstrzyknac" calej tej definicji Dodtype'a w metode DOMImplementation::createDocumentType().

ale jestem zbyt pijany, zeby probowac... rano moze wyedytuje... jesli bede pamietal... jak ktos wyprubuje, to niech da znac winksmiley.jpg.

P.S.: sorry za ewentualne blędy w poście, ale o 3:03 we wspomnianym już stanie ciężko się pisze, rano (może) zredaguje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.