Verschachtelte For-Schleifen in XQuery

eagle1985

Mitglied
Hallo zusammen,

ich bin ein ziemlicher anfänger in XQuery daher ist dies vieleicht eine doofe Frage.

Ich habe folgendes XML:
Code:
<Person>
   ... (diverse andere Elemente)
   <Produkt>
      <Preis>5</Preis>
   </Produkt>
   <Produkt>
      <Preis>6</Preis>
   </Produkt>
   ... (diverse andere Elemente)
</Person>
<Person>
   ... (diverse andere Elemente)
   <Produkt>
      <Preis>10</Preis>
   </Produkt>
   <Produkt>
      <Preis>11</Preis>
   </Produkt>
   ... (diverse andere Elemente)
</Person>

ich möchte in etwa folgenden Output mit XQuery erhalten:
Code:
<Personen>
   <Person>
      <Preis>5</Preis>
      <Preis>6</Preis>
   </Person>
   <Person>
      <Preis>10</Preis>
      <Preis>11</Preis>
   </Person>

habe bisher folgendes XQuery gebastelt
Code:
<Personen>
{
	for $p in //Person
	return 
	<Person>
	{
		for $preis in $p/*/Preis/text()
		return <Preis>{data($preis)}</Preis> 
	}
	</Person> 
}
</Personen>

leider kommt kein guter Output raus, ich erhalte folgendes:
Code:
<Personen>
  <Person/>
  <Person/>
  <Person/>
</Personen>

Hat jemand eine Idee wie ich dies Lösen kann?
Das zweite for statement wird irgendwie nicht gemacht...

besten Danke für eure Hilfe
 

xml-looser

Mitglied
Hallo unbekannter weise

Habe deine Xml gespeichert
und sie valid gemacht.
Durch hinzufügen root Element
Code:
<?xml version="1.0"?>
<root>
	<Person>

		<Produkt>
			<Preis>5</Preis>
		</Produkt>
		<Produkt>
			<Preis>6</Preis>
		</Produkt>
	</Person>
	<Person>

		<Produkt>
			<Preis>10</Preis>
		</Produkt>
		<Produkt>
			<Preis>11</Preis>
		</Produkt>
	</Person>
</root>
dann habe ich mit Hilfe von Stylus dein xquery ausgeführt

Code:
<Personen>
{
	for $p in //Person
	return 
	<Person>
	{
		for $preis in $p/*/Preis/text()
		return <Preis>{data($preis)}</Preis> 
	}
	</Person> 
}
</Personen>



als Ergebniss erhalte ich
Code:
<Personen>
	<Person>
		<Preis>5</Preis>
		<Preis>6</Preis>
	</Person>
	<Person>
		<Preis>10</Preis>
		<Preis>11</Preis>
	</Person>
</Personen>