Hallo, bin neue hier und habe schon ein paar Beiträge durchforstet aber immer noch keinen Lösungsansatz für folgendes gefunden:
ich habe ein XML-File: <pulse> und <measurement> widerholen sich und haben teilweise gleiche Inhalte(z.B. <amplitude>, <lag unit>)
<Sequencelist>
<Sequence iterations="50">
<pulse shape="aa">
<lag unit="s">0.02</lag>
<phaseduration unit="s">3e-05</phaseduration>
<amplitude unit="V">0</amplitude>
< /pulse>
<measurement type="nrt">
<lag unit="s">0.00015</lag>
<amplitude unit="V">0</amplitude>
</measurement>
<pulse shape="ab">
<lag unit="s">0.02</lag>
<phaseduration unit="s">3e-05</phaseduration>
<amplitude unit="V">0</amplitude>
</pulse>
<measurement type="nrt">
<lag unit="s">0.00015</lag>
<amplitude unit="V">0</amplitude>
</measurement>
</Sequence>
</Sequencelist>
Ich will mittels xslt nun Inhalte aus <pulse> und <measurement> rausziehen und später per xsltproc in ne Postgres Datenbank schreiben. So sieht meine geschriebene xsl-Datei aus:
<xsl:for-each select="/Sequencelist/Sequence">
<xsl:text>INSERT INTO Sequence (p_lag_unit, p_amplitude, p_phaseduration, m_lag_unit, m_amplitude) VALUES ('</xsl:text>
<xsl:value-of select="pulse/@shape"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/lag"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/phaseduration"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/amplitude"/><xsl:text>','</xsl:text>
<xsl:value-of select="measurement/lag"/><xsl:text>','</xsl:text>
<xsl:value-of select="measurement/amplitude"/>
<xsl:text>');</xsl:text>
</xsl:for-each>
letzendlich sollten nun 2 Zeilen in meine Tabelle geschrieben werden: eine für die erste measurement/pulse-Kombination, eine für die zweite. Ich bekomme aber nur eine Zeile zurückgeliefert. Es scheint, dass nur die ersten beiden <pulse> und <measurement> "gelesen" werden.
Ich denke dass es an dem SELECT bei for-each liegt. Wenn ich den Pfad weiter einschränke, z.B. auf "/Sequencelist/Sequence/pulse" und bei value-of select das pulse (damit aber auch konsequenterweise das measurement) wegnehme gibt er 2 Zeilen zurück. Dann aber entsprechen die letzten beiden Werte von lag und amplitude denen aus <pulse> und nicht wie gefordert aus <measurement>
Weiß jemand Rat ?
ich habe ein XML-File: <pulse> und <measurement> widerholen sich und haben teilweise gleiche Inhalte(z.B. <amplitude>, <lag unit>)
<Sequencelist>
<Sequence iterations="50">
<pulse shape="aa">
<lag unit="s">0.02</lag>
<phaseduration unit="s">3e-05</phaseduration>
<amplitude unit="V">0</amplitude>
< /pulse>
<measurement type="nrt">
<lag unit="s">0.00015</lag>
<amplitude unit="V">0</amplitude>
</measurement>
<pulse shape="ab">
<lag unit="s">0.02</lag>
<phaseduration unit="s">3e-05</phaseduration>
<amplitude unit="V">0</amplitude>
</pulse>
<measurement type="nrt">
<lag unit="s">0.00015</lag>
<amplitude unit="V">0</amplitude>
</measurement>
</Sequence>
</Sequencelist>
Ich will mittels xslt nun Inhalte aus <pulse> und <measurement> rausziehen und später per xsltproc in ne Postgres Datenbank schreiben. So sieht meine geschriebene xsl-Datei aus:
<xsl:for-each select="/Sequencelist/Sequence">
<xsl:text>INSERT INTO Sequence (p_lag_unit, p_amplitude, p_phaseduration, m_lag_unit, m_amplitude) VALUES ('</xsl:text>
<xsl:value-of select="pulse/@shape"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/lag"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/phaseduration"/><xsl:text>','</xsl:text>
<xsl:value-of select="pulse/amplitude"/><xsl:text>','</xsl:text>
<xsl:value-of select="measurement/lag"/><xsl:text>','</xsl:text>
<xsl:value-of select="measurement/amplitude"/>
<xsl:text>');</xsl:text>
</xsl:for-each>
letzendlich sollten nun 2 Zeilen in meine Tabelle geschrieben werden: eine für die erste measurement/pulse-Kombination, eine für die zweite. Ich bekomme aber nur eine Zeile zurückgeliefert. Es scheint, dass nur die ersten beiden <pulse> und <measurement> "gelesen" werden.
Ich denke dass es an dem SELECT bei for-each liegt. Wenn ich den Pfad weiter einschränke, z.B. auf "/Sequencelist/Sequence/pulse" und bei value-of select das pulse (damit aber auch konsequenterweise das measurement) wegnehme gibt er 2 Zeilen zurück. Dann aber entsprechen die letzten beiden Werte von lag und amplitude denen aus <pulse> und nicht wie gefordert aus <measurement>
Weiß jemand Rat ?
Comment