У меня есть xslt, который должен пройти через три дочерних узла с разными значениями и поместить их в файл.
Пока что он выбирает только первый дочерний элемент и помещает эти значения во все три узла в результирующем файле. Я перепробовал много вещей, но безрезультатно, может кто-нибудь помочь мне?
Я искал весь этот сайт много раз, но безрезультатно.
Это часть источника, который необходимо преобразовать:
<followUpObjects>
<followUpObject length="4">
<followUpObjectNumber>1</followUpObjectNumber>
<followUpObjectTargetNumber>1</followUpObjectTargetNumber>
<followUpObjectName>Kostenplaats</followUpObjectName>
<followUpObjectValue desc="Kwaliteitsdienst">5260</followUpObjectValue>
</followUpObject>
<followUpObject length="13">
<followUpObjectNumber>2</followUpObjectNumber>
<followUpObjectTargetNumber>3</followUpObjectTargetNumber>
<followUpObjectName>kostensoort</followUpObjectName>
<followUpObjectValue desc="kostensoort1">kostensoort1</followUpObjectValue>
</followUpObject>
<followUpObject length="6">
<followUpObjectNumber>3</followUpObjectNumber>
<followUpObjectTargetNumber>2</followUpObjectTargetNumber>
<followUpObjectName>Project</followUpObjectName>
<followUpObjectValue desc="">2412</followUpObjectValue>
</followUpObject>
</followUpObjects>
Я использую этот кусок xslt:
<CodingField>
<xsl:for-each
select="followUpObject[followUpObjectName='Kostenplaats']"></xsl:for-
each>
<Type>
<xsl:text>Costcenter</xsl:text>
</Type>
<Text>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</Text>
<Name>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue/@desc"/>
</Name>
<TextDetail>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</TextDetail>
<ShowAsSubLine>
<xsl:text>false</xsl:text>
</ShowAsSubLine>
</CodingField>
<CodingField>
<xsl:for-each
select="./followUpObject[followUpObjectName='kostensoort']"></xsl:for-
each>
<Type>
<xsl:text>Costunit</xsl:text>
</Type>
<Text>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</Text>
<Name>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue/@desc"/>
</Name>
<TextDetail>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</TextDetail>
<ShowAsSubLine>
<xsl:text>false</xsl:text>
</ShowAsSubLine>
</CodingField>
<CodingField>
<xsl:for-each
select="./followUpObject[followUpObjectName='Project']"></xsl:for-each>
<Type>
<xsl:text>Project</xsl:text>
</Type>
<Text>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</Text>
<Name>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue/@desc"/>
</Name>
<TextDetail>
<xsl:value-of
select="followUpObjects/followUpObject/followUpObjectValue"/>
</TextDetail>
<ShowAsSubLine>
<xsl:text>false</xsl:text>
</ShowAsSubLine>
</CodingField>
Но я получаю это каждый раз:
Type Costcenter
Text 5260
Name Kwaliteitsdienst
TextDetail 5260
Type Costunit
Text 5260
Name Kwaliteitsdienst
TextDetail 5260
Type Project
Text 5260
Name Kwaliteitsdienst
TextDetail 5260
Как видите, первый дочерний элемент используется каждый раз для заполнения любого другого поля кодирования, кроме типа (который я жестко запрограммировал).