Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formatowanie tekstu XML/XSL i CDATA
Malinaa
post
Post #1





Grupa: Zarejestrowani
Postów: 577
Pomógł: 6
Dołączył: 21.07.2008

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


Witam,
mam prośbę, nie mogę znaleźć metody na wyświetlanie sformatowanego tekstu?

Używam biblioteki DOMDocument

w pliku xml mam taki kod:
  1. <code><![CDATA[
  2. <ul><li><b>lista 1</b></li>
  3. <li><b>lista 2</b></li>
  4. <li><b>lista 3</b></li>
  5. </ul>]]></code>


w pliku xsl kod jest taki:
  1. <ul><xsl:attribute name="class">code</xsl:attribute>
  2. <xsl:for-each select="code/ul/li">
  3. <li><xsl:apply-templates /></li>
  4. </xsl:for-each>
  5. </ul>


a problem nie wczytuje mi znaczników <b>pogrubienia</b>, jak odczytać pogrubienie?

I jeden problem więcej z CDATA, które muszę wyciąć aby wyświetlić kod, w przeciwnym razie nie czyta listy.
Co zrobić, aby wyświetlać całą zawartość z <code> pozostawiając oryginalną pełną zawartość pliku bez konieczności usuwania CDATA?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Może i nie powinienem tego robić, ale bardziej mi się chciało przykład zrobić niż całość opisywać. (IMG:style_emoticons/default/wink.gif)
  1. <?php
  2.  
  3. $doc = new DOMDocument('1.0', 'UTF-8');
  4. $doc->load('./my-code.xml');
  5.  
  6. $codeElements = $doc->getElementsByTagName('code');
  7. foreach ($codeElements as $codeElement) {
  8. $fragment = $doc->createDocumentFragment();
  9. $fragment->appendXML($codeElement->textContent);
  10.  
  11. foreach ($codeElement->childNodes as $child) {
  12. $codeElement->removeChild($child);
  13. }
  14.  
  15. $codeElement->appendChild($fragment);
  16. }
  17.  
  18. echo $doc->saveXML();
Taki dokument (o ile to poprawnie działa) dopiero poddajesz transformacjom.

EDIT: W sumie zamiast usuwania elementów i dodania jednego na końcu, można by po prostu skorzystać z DOMNode::replaceChild().

Ten post edytował Crozin 29.02.2012, 20:48:51
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 14.10.2025 - 22:22