У меня есть XML файл, подобный этому:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Data>
<D1_01>23</D1_01>
<D1_03>2</D01_03>
<D1_04>9</D01_04>
<Record>
<R9>
<R9_01>-5</R9_01>
<R9_02>-5</R9_02>
<R9_05>XSLT Document Function1</R9_05>
<R9_11>-5</R9_11>
</R9>
<S>
<S_01>CC= </S_01>
</S>
</Record>
<Record>
<R9>
<R9_01>-5</R9_01>
<R9_02>-5</R9_02>
<R9_05>XSLT Document Function2</R9_05>
<R9_11>-5</R9_11>
</R9>
<S>
<S_01>CC= </S_01>
</S>
</Record>
.
.
.
</Data>
</Root>"
Для каждой проверки Записи (длина строки (R9_05)> 10), если это правда, тогда измените текст R9_05 на «Ссылка» и добавьте текст R9_05 к следующему брату S_01.
Желаемый результат:
<?xml version="1.0" encoding="UTF-8"?>
<Root>
<Data>
<D1_01>23</D1_01>
<D1_03>2</D01_03>
<D1_08>8</D1_08>
<Record>
<R9>
<R9_01>-5</R9_01>
<R9_02>-5</R9_02>
<R9_05>Reference</R9_05>
<R9_11>-5</R9_11>
</R9>
<S>
<S_01>CC=XSLT Document Function1 </S_01>
</S>
</Record>
<Record>
<R9>
<R9_01>-5</R9_01>
<R9_02>-5</R9_02>
<R9_05>Reference</R9_05>
<R9_11>-5</R9_11>
</R9>
<S>
<S_01>CC=XSLT Document Function2 </S_01>
</S>
</Record>
.
.
.
</Data>
</Root>
Ниже мой XSLT-код:
<xsl:template match="Root/Data">
<xsl:for-each select="Record">
<xsl:variable name="var_R9_05">
<xsl:choose>
<xsl:when test="string-length(R9/R9_05) > 10">
<xsl:value-of select="concat(following-sibling::S/S_01, ' ', R9_05)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="//S_01"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:element name="R9_05"> "See narrative for complaint" </xsl:element>
<xsl:element name="S_01">
<xsl:call-template name="value-to-replace">
<xsl:with-param name="param.str" select="following-sibling::S"/>
<xsl:with-param name="param.target" select="following-sibling::S/S_01"/>
<xsl:with-param name="param.replacement" select="$var_R9_05)"/>
</xsl:call-template>
</xsl:element>
</xsl:for-each>
</xsl:template>
Не получается вывод, я новичок в XSLT и XML, может кто-нибудь, пожалуйста, помогите мне?