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
 
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>
 
Zurück