12

私はこの単純な xml ドキュメントを持っています:

<?xml version='1.0' encoding='UTF-8'?>
<registry xmlns="http://www.iana.org/assignments" id="character-sets">
     <registry id="character-sets-1">
       <record>
         <name>ANSI_X3.4-1968</name>
      </record>
     </registry>
</registry>

この xsl を使用すると、名前を抽出できます。

<?xml version="1.0" encoding="UTF-8"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" version="1.0">
  <xsl:template match="/my:registry">
      <xsl:copy-of select="//my:record/my:name"/>
  </xsl:template>
</xsl:stylesheet>

ただし、xsl xpath-selectors で名前空間を省略すると、出力が得られません。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://www.iana.org/assignments" xpath-default-namespace="http://www.iana.org/assignments" version="1.0">
  <xsl:template match="/registry">
       <xsl:copy-of select="//record/name"/>
  </xsl:template>
</xsl:stylesheet>

xpath-default-namespace はそのトリックを行うためのものだと思いました。私は何が欠けていますか?

ライブラリのバージョンが重要な場合に備えて

libexpat1 (>= 1.95.8)

libxerces-c3.1

libxml2 (>= 2.7.4)

libxslt1.1 (>= 1.1.25)

4

1 に答える 1

15

残念ながらxpath-default-namespace、これは XSLT 2.0 の機能です。xpath名前空間を繰り返すか、名前空間でエイリアスする必要がありますxslt 1.0

参照 : Jenni TennisonIBM

于 2013-01-11T08:30:07.520 に答える