Невозможно изменить значение элемента

Я пытаюсь изменить значение элемента с "false" на "true"

<ItemMaster>
        <ItemMasterHeader>
            <ItemID>
                <ID>ASSET1</ID>
            </ItemID>
            <DisplayID>ASSET1</DisplayID>
            <GTIN/>
            <ServiceIndicator xmlns="">false</ServiceIndicator>
            <Description>AC SPLIT WALL 1.5 PKPANASONICS</Description>
            <Note/>
            <Classification>
                <Codes>
                    <Code listID="Item Types" sequence="1" xmlns:my="http://schema.com/OAGIS/2">Purchased</Code>
                    <Code listID="Item Groups" sequence="2">4ET</Code>
                    <Code listID="MRO Classes" sequence="3">*</Code>
                </Codes>
            </Classification>
            <HazardousMaterialIndicator>false</HazardousMaterialIndicator>
            <TrackingIndicator>false</TrackingIndicator>

Я использую следующий XSL:

<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
</xsl:template>
    <xsl:template
        match="//my:SyncItemMaster/my:DataArea/my:ItemMaster/my:ItemMasterHeader/my:TrackingIndicator">
            <xsl:value-of select="true" />
    </xsl:template>

Но я получаю следующее:

    <ItemMaster>
        <ItemMasterHeader>
            <ItemID>
                <ID>ASSET1</ID>
            </ItemID>
            <DisplayID>ASSET1</DisplayID>
            <GTIN/>
            <ServiceIndicator xmlns="">false</ServiceIndicator>
            <Description>AC SPLIT WALL 1.5 PKPANASONICS</Description>
            <Note/>
            <Classification>
                <Codes>
                    <Code listID="Item Types" sequence="1" xmlns:my="http://schema.com/OAGIS/2">Purchased</Code>
                    <Code listID="Item Groups" sequence="2">4ET</Code>
                    <Code listID="MRO Classes" sequence="3">*</Code>
                </Codes>
            </Classification>
            <HazardousMaterialIndicator>false</HazardousMaterialIndicator>

Вместо этого элемент полностью отсутствует.

Что, возможно, пошло не так здесь? это кажется очень простой функцией, но я не знаю, почему она отсутствует.

ОБНОВИТЬ :

Я попытался добавить код в XSLT:

<xsl:template match="@* | node()">
    <xsl:copy>
        <xsl:apply-templates select="@* | node()" />
    </xsl:copy>
</xsl:template>
    <xsl:template
        match="//my:SyncItemMaster/my:DataArea/my:ItemMaster/my:ItemMasterHeader/my:TrackingIndicator">
            <xsl:element name="TrackingIndicator">
            <xsl:value-of select="true" />
            </xsl:element>
    </xsl:template>

Но теперь результат становится таким:

    <ItemMaster>
        <ItemMasterHeader>
            <ItemID>
                <ID>ASSET1</ID>
            </ItemID>
            <DisplayID>ASSET1</DisplayID>
            <GTIN/>
            <ServiceIndicator xmlns="">false</ServiceIndicator>
            <Description>AC SPLIT WALL 1.5 PKPANASONICS</Description>
            <Note/>
            <Classification>
                <Codes>
                    <Code listID="Item Types" sequence="1" xmlns:my="http://schema.com/OAGIS/2">Purchased</Code>
                    <Code listID="Item Groups" sequence="2">4ET</Code>
                    <Code listID="MRO Classes" sequence="3">*</Code>
                </Codes>
            </Classification>
            <HazardousMaterialIndicator>false</HazardousMaterialIndicator>
            <TrackingIndicator xmlns=""/>

Это все еще не то, на что я надеюсь (TrackingIndicator) true (TrackingIndicator)

Большое спасибо за помощь :)


person Arnoldy Moniaga    schedule 14.02.2018    source источник


Ответы (1)


Измените шаблон, как показано ниже (возможно, вам придется позаботиться о любом применимом пространстве имен).

<xsl:template match="TrackingIndicator">
    <xsl:copy>
        <xsl:value-of select="'true'" />
    </xsl:copy>
</xsl:template>

Вместо того, чтобы указывать весь XPath, вы можете указать только имя элемента в соответствии с шаблоном. Для установки значения true необходимо указать в single quotes в виде строки.

Вывод

<TrackingIndicator>true</TrackingIndicator>
person Aniket V    schedule 14.02.2018