Удаление запятой из xml - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь заменить запятую одним пробелом в моем XML, используя xslt 1.0 / xslt 2.0.Пожалуйста, помогите, спасибо заранее.

Использование XML

<Root>
    <Master>
        <Worker_group>
            <Emp_ID>1001</Emp_ID>
            <E_Name>Worker1 , Jr </E_Name>
            <Line1>2001 Mark ST,</LINE1>
            <Line2>Building 2, Apt 101</LINE1> 
            <City> XYZ </City>
            <state>NC</State>
         </Worker_group>
    </Master>
    <Master>
        <Worker_group>
            <Emp_ID>1002</Emp_ID>
            <E_Name>Worker2 , Sr</E_Name>
            <Line1>1001 STACY ST,</LINE1>
            <Line2>Building 11, Apt 112</LINE1> 
            <City> ABC </City>
            <state>FL</State>
        </Worker_group>
        <Dependents_group>
            <Dep_Emp_ID>1001</Dep_Emp_ID>
            <D_Name>Dependent1, </D_Name>
            <D_Line1>1001 STACY ST,</D_LINE1>
            <D_Line2>Building 11, Apt 112</D_LINE2> 
            <D_City> ABC </D_City>
            <D_state>FL</D_State>
        </Dependents_group>
        <Dependents_group>
            <Dep_Emp_ID>1001</Dep_Emp_ID>
            <D_Name>Dependent2 </D_Name>
            <D_Line1>1001 STACY ST,</LINE1>
            <D_Line2>Building 11, Apt 112</D_LINE2> 
            <D_City> ABC </D_City>
            <D_state>FL</D_State>
        </Dependents_group>
        <Dependents_group>
            <Dep_Emp_ID>1001</Dep_Emp_ID>
            <D_Name>Dependent3 , Mr </D_Name>
            <D_Line1>1001 STACY ST,</D_LINE1>
            <D_Line2>Building 11, Apt 112</D_LINE2> 
            <D_City> ABC </D_City>
            <D_state>FL</D_State>
        </Dependents_group>
    </Master>
    <Master>
        <Worker_group>
            <Emp_ID>1003</Emp_ID>
            <E_Name>Worker3, </E_Name>
            <Line1>11 Hide ST</LINE1>
            <Line2>Apt 234,</LINE1> 
            <City> ABC, </City>
            <state>SC</State>
        </Worker_group>
    </Master>
</Root>

с использованием XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>

<xsl:template match="/Root">
    <!-- header -->
    <xsl:text>id,relationship,Name&#10;</xsl:text>
    <!-- data -->
    <xsl:for-each select="Master/*">
        <xsl:value-of select="Emp_ID | Dep_Emp_ID"/>
        <xsl:text>,</xsl:text>
        <xsl:number count="*"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="E_Name | D_Name"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="Line1 | D_Line1"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="Line2 | D_Line2"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="City | D_City"/>
        <xsl:text>,</xsl:text>
        <xsl:value-of select="State | D_State"/>
        <xsl:text>&#10;</xsl:text>
    </xsl:for-each>
</xsl:template>

</xsl:stylesheet>
id,relationship,Name,Line1,Line2,City,State
1001,1,Worker1 Jr,2001 Mark ST,Building 2 Apt 101,XYZ,NC
1002,1,Worker2 Sr,1001 STACY ST,Building 11 Apt 112,ABC,FL
1001,2,Dependent1,1001 STACY ST,Building 11 Apt 112,ABC,FL
1001,3,Dependent2,1001 STACY ST,Building 11 Apt 112,ABC,FL
1001,4,Dependent3 Mr,1001 STACY ST,Building 11 Apt 112,ABC,FL
1003,1,Worker3,11 Hide St,Apt 234,ABC,Sc

Ответы [ 2 ]

1 голос
/ 16 мая 2019

Используйте функцию translate.
Замените , любым символом. Кроме того, вы можете заменить «.» с любым узлом.

translate(.,',', ' ')
0 голосов
/ 17 мая 2019

Заменить:

<xsl:value-of select="E_Name | D_Name"/>

на:

<xsl:value-of select="normalize-space(translate(E_Name | D_Name, ',', ' '))"/>

и т. Д. Для других ячеек данных.

...