XSLT для получения значения одного атрибута из нескольких атрибутов в одно и то же значение поля - PullRequest
0 голосов
/ 13 июля 2020

У меня есть xml

<PiecesTransportationQuantity unitCode="EA" text="1.0"/>

Необходимо преобразовать значение атрибута «text» в то же значение поля, и unitCode атрибута должен оставаться в качестве атрибута:

<PiecesTransportationQuantity unitCode="EA"> 1.0 </PiecesTransportationQuantity>

Требуется предоставить xslt для того же.

Я использовал

<xsl:template match="PiecesTransportationQuantity/@unitCode/@text">
    <xsl:element name="{name()}">
        <xsl:value-of select="."/>
    </xsl:element>

Ответы [ 3 ]

0 голосов
/ 13 июля 2020

Если ваша таблица стилей также имеет шаблон identity transform , вы можете сделать просто:

<xsl:template match="PiecesTransportationQuantity/@text">
    <xsl:value-of select="."/>
</xsl:template>

Иначе нужно сделать что-то вроде:

<xsl:template match="PiecesTransportationQuantity">
    <xsl:copy>
        <xsl:copy-of select="@unitCode"/>
        <xsl:value-of select="@text"/>
    </xsl:copy>
</xsl:template>
0 голосов
/ 13 июля 2020

Шаблон, используемый в вашем шаблоне ( с одновременным использованием двух атрибутов ), ничего не совпадет.

Если вы хотите использовать свой шаблон кода, попробуйте:


<xsl:template match="PiecesTransportationQuantity">
    <xsl:element name="{name()}">
        <xsl:copy-of select="@* except @text"/>
        <xsl:value-of select="@text"/>
    </xsl:element>
  </xsl:template>

, иначе вы можете использовать второе предложение из ответа @ michael.hor257k:


0 голосов
/ 13 июля 2020

Вы можете сделать это так:

<xsl:template match="PiecesTransportationQuantity">
    <xsl:copy>
        <xsl:attribute name="unitCode" select="@unitCode"/>
        <xsl:value-of select="@text"/>
    </xsl:copy>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...