Заменить фрагменты XML с помощью XSLT? - PullRequest
0 голосов
/ 15 августа 2011

У меня есть этот бит XML:

<?xml version="1.0" encoding="UTF-8"?>
<photo-caption>
    <p>
        <?EM-dummyText caption?>
        <ld pattern=" "/>
        <s2>Photo </s2>
        <source>
            <?EM-dummyText photographer?>
        </source>
    </p>
</photo-caption>

Я хочу этот вывод:

<?xml version="1.0" encoding="UTF-8"?>
<photo-caption>
      <p>
        <s2><?EM-dummyText heading?></s2>
        <?EM-dummyText caption?>
      </p>
</photo-caption>

Это XSLT, который я сейчас использую:

<xsl:stylesheet version="1.0" 
    exclude-result-prefixes="subst" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:subst="http://tempuri.org">
    <xsl:strip-space elements="*"/>
    <xsl:output method="xml" encoding="utf-8" indent="yes"/>
    <subst:photo-caption>
        <p>
            <s2>
                <?EM-dummyText heading?>
            </s2>
            <?EM-dummyText caption?>
        </p>
    </subst:photo-caption>
    <xsl:variable name="subst" select="document('')/*/subst:photo-caption"/>
    <xsl:template match="photo-caption">
        <xsl:copy-of select="$subst"/>
    </xsl:template>
</xsl:stylesheet>

... что приводит к выводу:

<?xml version="1.0" encoding="utf-8"?>
<subst:photo-caption xmlns:subst="http://tempuri.org" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <p>
      <s2><?EM-dummyText heading?></s2><?EM-dummyText caption?>
   </p>
</subst:photo-caption>

Как удалить префиксы и атрибуты пространства имен из вывода? Или есть лучший способ сделать это?

1 Ответ

2 голосов
/ 15 августа 2011

Если вы просто хотите вывести этот фрагмент, используйте

<xsl:template match="photo-caption">
<photo-caption>
      <p>
        <s2>
          <xsl:processing-instruction name="EM-dummyText">heading</xsl:processing-instruction>
        </s2>
        <xsl:processing-instruction name="EM-dummyText">caption</xsl:processing-instruction>
      </p>
</photo-caption>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...