У меня есть XML с узлом с именем «Значение», который входит в несколько мест в XML. Однако мне нужно выбрать узел «Значение», который находится под узлом «Имя = werkweeknummer». Я пробовал несколько вещей, но это не работает.
<xsl:template match="/">
<xsl:for-each select="/x:Invoice">
<xsl:if test="cbc:IssueDate"><xsl:value-of select="concat(substring(cbc:IssueDate,1,4),'W',cac:InvoiceLine/cac:Item/cac:AdditionalItemProperty/cbc:Value)"/></xsl:if>
</xsl:for-each>
</xsl:template>
Я пробовал это с substring-lenghts (имя узла) - 1), но он не получает последние 2 символа -> что в моем случае будет желаемым результатом, но вместо этого он дает 12 как результат.
<cac:InvoiceLine>
<cbc:ID>121</cbc:ID>
<cbc:InvoicedQuantity unitCode="C62">+1.00</cbc:InvoicedQuantity>
<cbc:LineExtensionAmount currencyID="EUR">+64.30</cbc:LineExtensionAmount>
<cac:DespatchLineReference>
<cbc:LineID/>
<cac:DocumentReference>
<cbc:ID>101992936-0</cbc:ID>
</cac:DocumentReference>
</cac:DespatchLineReference>
<cac:TaxTotal>
<cbc:TaxAmount currencyID="EUR">+13.50</cbc:TaxAmount>
</cac:TaxTotal>
<cac:Item>
<cbc:Name>Toeslag ADV percentage</cbc:Name>
<cac:ClassifiedTaxCategory>
<cbc:ID schemeID="UN/ECE 5305" schemeAgencyID="6">S</cbc:ID>
<cbc:Percent>+21.00</cbc:Percent>
<cac:TaxScheme>
<cbc:ID schemeID="UN/ECE 5153" schemeAgencyID="6">VAT</cbc:ID>
</cac:TaxScheme>
</cac:ClassifiedTaxCategory>
<cac:AdditionalItemProperty>
<cbc:Name>geboortedatum</cbc:Name>
<cbc:Value>1984-10-12</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>Postcode Plaats</cbc:Name>
<cbc:Value>1234 AA BLABLA</cbc:Value>
</cac:AdditionalItemProperty>
<cac:AdditionalItemProperty>
<cbc:Name>werkweeknummer</cbc:Name>
<cbc:Value>16</cbc:Value>
</cac:AdditionalItemProperty>
</cac:Item>
Это XML с упомянутым узлом с тем же именем (выше, имя узла = значение)
<xsl:template match="/">
<xsl:for-each select="/x:Invoice">
<xsl:if test="cbc:IssueDate"><xsl:value-of select="concat(substring(cbc:IssueDate,1,4),'W',cac:AdditionalItemProperty/cbc:Value)"/></xsl:if>
</xsl:for-each>
</xsl:template>
Теперь у меня есть этот код, но результат 2019W1980-02-12. Я хочу иметь 2019W16 (16 - это значение из последнего узла с тем же именем, которое находится под "werkweeknummer"). Я попытался использовать формулу длины подстроки, но затем она дает 12 в результате -> 2019W12 ..