XSLT для преобразования CDATA в текст - PullRequest
1 голос
/ 17 октября 2019

Я полный новичок, когда дело доходит до XSLT, поэтому изо всех сил пытаюсь найти решение моей проблемы.

У меня есть следующий XML-код, полученный от PeopleSoft:

<?xml version="1.0"?>
<document>
  <ConnectedQuery>
    <Employee key="3000862">
      <Empl_ID>
        <![CDATA[12345678]]>
      </Empl_ID>
      <Name>
        <![CDATA[John Doe]]>
      </Name>
      <Job key="12345678,0,2018-09-17,0">
        <Empl_ID>
          <![CDATA[12345678]]>
        </Empl_ID>
        <Empl_Record>0</Empl_Record>
        <Effective_Date>2018-09-17</Effective_Date>
        <Effective_Sequence>0</Effective_Sequence>
      </Job>
    </Employee>
  </ConnectedQuery>
</document>

PeopleSoft«услужливо» помещает все текстовые данные в секции CDATA, и я хотел бы удалить CDATA и иметь строки в обычных текстовых узлах:

<?xml version="1.0"?>
<document>
  <ConnectedQuery>
    <Employee key="3000862">
      <Empl_ID>12345678</Empl_ID>
      <Name>John Doe</Name>
      <Job key="12345678,0,2018-09-17,0">
        <Empl_ID>12345678</Empl_ID>
        <Empl_Record>0</Empl_Record>
        <Effective_Date>2018-09-17</Effective_Date>
        <Effective_Sequence>0</Effective_Sequence>
      </Job>
    </Employee>
  </ConnectedQuery>
</document> 

Может кто-нибудь подсказать мне направление в правильном направлении на XSLT? Мне нужно создать желаемый результат? Большое спасибо заранее

1 Ответ

0 голосов
/ 17 октября 2019

просто запустите преобразование личности , оно преобразует CDATA в обычную строку

<xsl:template match="node() | @*">
    <xsl:copy>
        <xsl:apply-templates select="node() | @*"/>
    </xsl:copy>
</xsl:template>

см. Преобразование в https://xsltfiddle.liberty -development.net / bFWR5E1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...