Hallo at all,
ich habe ein kleines Problem mit XQuery. Folgende xml-Datei ist gegeben:
*********************
<?xml version="1.0"?>
<text>
<untertest>Blabla</untertest>
<weiteres>
<blub>1234</blub>
<blubber>5542</blubber
</weiteres>
</text>
*********************
Das ganze soll jetzt nach bestimmten Regeln in html konvertiert werden und das ganze mit XQuery.
Z.B. so:
*********************
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Blabla</title>
</head>
<body>
<h1>Email von Alan Mathison Turing</h1>
<hr />
<p>1234 , 5542</p>
</body>
</html>
*********************
Folgendes XQuery habe ich momentan:
*********************
xquery version "1.0" encoding "utf-8";
declare boundary-space preserve;
declare function local:convert-children ($x)
{
for $y in $x/node() return local:convert-node($y)
};
declare function local:convert-node ($x)
{
typeswitch($x)
case element(text) return
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>{data($x/untertest)}</title>
</head>
<body>
<h1>Email von {data($x/absender)}</h1>
{local:convert-children($x)}
</body>
</html>
case element(weiteres) return
<hr />
{local:convert-children($x)}
default return ($x)
};
let $doc := doc("beispiel.xml")
return local:convert-children($doc)
*********************
In Beispiel.xml stehen die xml Angaben von weiter oben drin. Wenn ich das ganze z.B. vom XML Spy überprüfen lasse, dann bekomme ich folgenden Fehler:
XQuery Execution Error!
Unexpected Token - {local:convert-children($
Was genau mache ich falsch, bzw. worauf habe ich nicht geachtet?
Gruß Ben