javascript direkt in xml-datei einbinden?
jobo
- javascript
Hallo,
css kann man einbinden:
<?xml-stylesheet type="text/css" href="dokumentation.css"?>
kann ich so aber auch javascript einbinden, und dann aus tags anker zaubern für eine html-ausgabe?
alternativen wie xslt-prozessoren oder simplexml sind mir bekannt. auch, dass javascript (ajax) xml "versteht" (ist ja auch baumstruktur, getElementByTagName() funktioniert etc.pp.).
Gruß
jobo
@@jobo:
nuqneH
aus tags anker zaubern
?? Was genau willst du?
Ist die Antwort vielleich XLink?
Qapla'
Hallo Gunnar,
aus tags anker zaubern
?? Was genau willst du?
Wissen oder kapieren, ob ich mit einem xml-Tag eine Javascriptquelle einbinden kann, zum einen.
Ist die Antwort vielleich XLink?
Ja, XLink ist auch gut. Ich könnte ja dann mittels Javascript den fraglichen Elementen mit setAttribute() ein "xmlns:xlink" zuweisen.
aus
<entry>
<address>http://example.com</address>
<description>ExampleName</description>
</entry>
mach mit javascript und ggf. css:
<a href="http://example.com">ExampleName</a>
Es geht in der Schul-AG unter anderem auch darum zu zeigen, was man mit den verschiedenen Sprachen machen kann/könnte. xslt, simplexml, perl kommen auch vor.
Die Umwandlung mit Javascript ist ja nicht das Problem. Das Problem ist, Javascript direkt aus dem xml-Dokument zu starten. <script src="bla.js"> wäre das HTML-Pendant.
Gruß
jobo
Hallo,
also sowas in der Art:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="javascript_css.css"?>
<!DOCTYPE html [
<!ENTITY inject "<script>alert(1)</script>">
]>
<bla xmlns="http://www.w3.org/1999/xhtml">
<script language="JavaScript" >
<![CDATA[
alert("hallo");
window.onload = function() {
alert("onload");
}
]]>
</script>
<head>
<title>Test</title>
</head>
<xody>
&inject;
</xody>
<du>
dieda
</du>
</bla>
quellen u.a.:
http://www.businessinfo.co.uk/labs/xml_injection/inject.xml (aus: http://www.thespanner.co.uk/2007/10/09/injecting-the-script-tag-into-xml/,
http://www.html-world.de/program/xml_5.php, u.a. http://forum.de.selfhtml.org/archiv/2009/6/t188181/#m1252203, wobei mir das von "suit" irgendwie nicht weitergeholfen hat, da
<!ELEMENT script (#PCDATA)>
<!ATTLIST script
type %ContentType; #REQUIRED
src %URI; #REQUIRED
>
so nicht geschluckt werdeen (fragt er sich, was %ContentType sein soll).
Entscheidend wohl "xmlns="http://www.w3.org/1999/xhtml" im Wurzelelement.
Komisch eigentlich, dass die Injection funktioniert, obwohl der Doctype für "html" definiert ist.
Gruß
jobo
@@jobo:
nuqneH
<script language="JavaScript" >
--8<--
<!ELEMENT script (#PCDATA)>
<!ATTLIST script
type %ContentType; #REQUIRED
src %URI; #REQUIREDso nicht geschluckt werdeen (fragt er sich, was %ContentType sein soll).
Für JavaScript bspw. "text/javascript". Und was #REQUIRED heißt, weißt du?
Und findest du "language" in der ATTLIST?
Und wo hast du her, dass 'src' #REQUIRED sein soll?
Qapla'
Hallo,
<script language="JavaScript" >
--8<--
<!ELEMENT script (#PCDATA)>
<!ATTLIST script
type %ContentType; #REQUIRED
src %URI; #REQUIREDso nicht geschluckt werdeen (fragt er sich, was %ContentType sein soll).
Für JavaScript bspw. "text/javascript". Und was #REQUIRED heißt, weißt du?
Und findest du "language" in der ATTLIST?
Und wo hast du her, dass 'src' #REQUIRED sein soll?
von suit. Ich weiß nicht, wie ich %ContentType setze. Das ist eine DTD-intern Var? src ist natürlich nicht required. Sonst müsste man es ja laut DTD angeben. Aber ich hätte ja auch inline-Code anzubieten (;-). Musst jetzt erstmal los.
cuib
Gruß
jobo
Hallo,
Für JavaScript bspw. "text/javascript". Und was #REQUIRED heißt, weißt du?
<!ATTLIST script
type CDATA #REQUIRED
src CDATA #IMPLIED
geht durch den Browser.
<!ATTLIST script
type text/javascript #REQUIRED
src CDATA #IMPLIED
nicht.
So aber gehts, auch ohne "xmlns":
<!DOCTYPE linklist[
<!ELEMENT script (#PCDATA)>
<! ENTITY % ContentType "text/javascript">
<!ATTLIST script
type %ContentType #REQUIRED
src CDATA #IMPLIED
]>
Gruß
jobo
@@jobo:
nuqneH
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="javascript_css.css"?>
<!DOCTYPE html [
<!ENTITY inject "<script>alert(1)</script>">
]>
<bla xmlns="http://www.w3.org/1999/xhtml">
Das ist kein valides XML.
„Gültigkeitsbeschränkung: Wurzel-Elementtyp
Der Name in der Dokumenttyp-Deklaration muss mit dem Elementtyp des Wurzel-Elements übereinstimmen.“ [XML §2.8]
Mir ist übrigens immer noch nicht klar, was du eigentlich bezwecken willst.
Was soll das JavaScript denn tun?
Lieferst du XML aus oder transformierst (XSLT) du das nach (X)HTML?
Qapla'
Hallo,
„Gültigkeitsbeschränkung: Wurzel-Elementtyp
Der Name in der Dokumenttyp-Deklaration muss mit dem Elementtyp des Wurzel-Elements übereinstimmen.“ [XML §2.8]
Ja, deshalb wundert ich mich auch, dass die injection funktioniert.
Mir ist übrigens immer noch nicht klar, was du eigentlich bezwecken willst.
Was soll das JavaScript denn tun?
Nun, Schüler hat das mit Perl verarbeitet. Ich wollte zeigen, dass man es mit FF und css 1. anzeigen kann und 2. gucken, ob man so auch Javascript zum Laufen bekommt. Denn mit Javascript kannst Du dann ja machen was du willst mit dem Dokument. Bisher kannte ich nur, dass Javascript aus einem anderen Dokument heraus das XML abruft und verarbeitet.
Gruß
jobo
Hallo,
das Attribut xmlns="http://www.w3.org/1999/xhtml" im Wurzelelement bewirkt, dass Javascriptcode in einem script-Element ausgeführt wird (FF). Warum? Ein anderer Namespace bringt das nicht. Schreib ich eine 1 hinten an, gehts nimmer.
Gruß
jobo
Hallo,
das Attribut xmlns="http://www.w3.org/1999/xhtml" im Wurzelelement bewirkt, dass Javascriptcode in einem script-Element ausgeführt wird (FF). Warum? Ein anderer Namespace bringt das nicht. Schreib ich eine 1 hinten an, gehts nimmer.
Alternative via DTD:
<!DOCTYPE linklist[
<!ELEMENT script (#PCDATA)>
<! ENTITY % ContentType "text/javascript">
<!ATTLIST script
type %ContentType #REQUIRED
src CDATA #IMPLIED
>
]>
Auch dann wird Javascript ausgeführt. Das andere hat wohl was mit xml-Schema zu tun ...???
Gruß
jobo
Hallo,
das Attribut xmlns="http://www.w3.org/1999/xhtml" im Wurzelelement bewirkt, dass Javascriptcode in einem script-Element ausgeführt wird (FF). Warum? Ein anderer Namespace bringt das nicht. Schreib ich eine 1 hinten an, gehts nimmer.
Alternative via DTD:
<!DOCTYPE linklist[
<!ELEMENT script (#PCDATA)>
<! ENTITY % ContentType "text/javascript">
<!ATTLIST script
type %ContentType #REQUIRED
src CDATA #IMPLIED]>
>
> Auch dann wird Javascript ausgeführt. Das andere hat wohl was mit xml-Schema zu tun ...???
Nein, das stimmt nicht. Da hab ich falsch getestet. Ohne den xmlns krieg ich es zur Zeit nicht hin.
Gruß
jobo