Как добавить узел в структуру XML с помощью XSLT - PullRequest
0 голосов
/ 16 марта 2012

У меня сложная структура, которая содержит список следующей формы

complex tree here
...
<ns3:timestampList xmlns="myNameSpace">
            <timestampInfo>
                    <timestampID>START</timestampID>
                    <timestamp>2012-02-25T00:30:18.705+01:00</timestamp>                        
            </timestampInfo>
            <timestampInfo>
                    <timestampID>END</timestampID>
                    <timestamp>2012-02-25T00:30:23.675+01:00</timestamp>
            </timestampInfo>
            <timestampInfo>
                    <timestampID>RE_START</timestampID>
                    <timestamp>2012-02-25T00:30:18.705+01:00</timestamp>
            </timestampInfo>
</ns3:timestampList>

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

1 Ответ

0 голосов
/ 16 марта 2012
<xsl:param name="new-ts">
  <timestampInfo xmlns="myNameSpace">
    ...
  </timestampInfo>
</xsl:param>

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

<xsl:template match="ns3:timestampList">
  <xsl:copy>
    <xsl:apply-templates select="@* | node()"/>
    <xsl:copy-of select="$new-ts"/>
  </xsl:copy>
</xsl:template>

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

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