Я надеялся получить помощь по XPATH, который я пытаюсь создать.
У меня есть следующая файловая структура в XML:
<Request>
<RequestArea>
<SourceText>**Text 1**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText></TargetText>
</ResponseArea>
</Request>
<Request>
<RequestArea>
<SourceText>**Text 2**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText></TargetText>
</ResponseArea>
</Request>
Мне нужно скопировать значение узла SourceText и вставить его в следующий TargetText узел.
Итак, полученный XML-файл будет таким:
<Request>
<RequestArea>
<SourceText>**Text 1**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText>**Text 1**</TargetText>
</ResponseArea>
</Request>
<Request>
<RequestArea>
<SourceText>**Text 2**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText>**Text 2**</TargetText>
</ResponseArea>
</Request>
У меня есть следующий XSL:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="TargetText">
<ResponseText>
<xsl:value-of select="preceding::SourceText"/>
</ResponseText>
</xsl:template>
</xsl:stylesheet>
Но механизм XSL (MSXSL) копирует Текст 1 значение в оба последующих TargetText вместо использования каждого следующего SourceText значения в качестве источника для копируемого содержимого:
<Request>
<RequestArea>
<SourceText>**Text 1**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText>**Text 1**</TargetText>
</ResponseArea>
</Request>
<Request>
<RequestArea>
<SourceText>**Text 2**</SourceText>
</RequestArea>
<ResponseArea>
<TargetText>**Text 1**</TargetText>
</ResponseArea>
</Request>
Любые предложения о том, что я делаю не так?
Спасибо!