-1

私は非常に具体的な DIDL の XML ファイルを持っています。これは、http://en.wikipedia.org/wiki/Digital_Item_Declaration_Language

これを XSLT を使用して HTML に変換したいのですが、これには展開と折りたたみの機能も必要です。私は多くのことを試しましたが、解決策を見つけることができませんでした。

誰でもこれについて私を助けることができますか?

4

1 に答える 1

1

特定の名前空間宣言を除けば、これは実際には通常の XML です。

サンプル XML:

<?xml version="1.0" encoding="utf-8"?>
<did:DIDL xmlns:did="urn:mpeg:mpeg21:2002:02-DIDL-NS" xmlns:didmodel="urn:mpeg:mpeg21:2002:02-DIDMODEL-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <did:Item>
    <did:Descriptor>
      <did:Statement mimeType="text/plain">Image item which two images</did:Statement>
    </did:Descriptor>
    <did:Descriptor>
      <did:Component>
        <did:Resource mimeType="image/png" ref="http://imagearchive.net/path/image.png"/>
      </did:Component>
    </did:Descriptor>
    <did:Choice choice_id="choice1" minSelections="1" maxSelections="1" default="selection1">
      <did:Descriptor>
        <did:Statement mimeType="text/plain">Choice for selection of image 1 or 2. Digital items do not need to have choices.</did:Statement>
      </did:Descriptor>
      <did:Selection select_id="selection1">
        <did:Descriptor>
          <did:Statement mimeType="text/plain">Selection 1</did:Statement>
        </did:Descriptor>
      </did:Selection>
    </did:Choice>
    <did:Component>
      <did:Condition require="selection1" />
      <did:Descriptor>
        <did:Statement mimeType="text/plain">Picture 1 text summary</did:Statement>
      </did:Descriptor>
      <did:Resource mimeType="plain/text">This is a plain text resource which is a text about picture 1</did:Resource>
    </did:Component>
    <did:Component>
      <did:Condition require="selection1" />
      <did:Descriptor>
        <did:Statement mimeType="text/plain">Picture 1 text#1</did:Statement>
      </did:Descriptor>
      <did:Descriptor>
        <!-- the statement also can contain XML -->
        <did:Statement mimeType="text/plain">Picture 1 text#2</did:Statement>
      </did:Descriptor>
      <did:Resource mimeType="image/jpg" ref="http://picturedatabase.com/path/image1.jpg"/>
      <did:Resource mimeType="image/jpg" ref="http://picturedatabasemirror.com/path/image1.jpg"/>
    </did:Component>
    <did:Component>
      <did:Descriptor>
        <did:Statement mimeType="text/plain">Picture 2 text#2</did:Statement>
      </did:Descriptor>
      <did:Resource mimeType="image/jpg" ref="http://picturedatabase.com/path/image1.jpg"/>
      <did:Resource mimeType="image/jpg" ref="http://picturedatabasemirror.com/path/image1.jpg"/>
    </did:Component>
  </did:Item>
</did:DIDL>

以下は、まったく同じテンプレートを使用した XSL コードです。出力は入力と同じになります。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:did="http://www.w3.org/2001/XMLSchema-instance">
    <xsl:output method="xml" indent="yes"/>

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

<did:Descriptor/>以下のコードは、要素を次のように置き換えます<did:CustomElement/>

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:did="urn:mpeg:mpeg21:2002:02-DIDL-NS">
    <xsl:output method="xml" indent="yes"/>

    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
  <xsl:template match="node()[local-name() = 'Descriptor']">
    <xsl:element name="did:CustomElement">
      <xsl:apply-templates select="@*|node()"/>
    </xsl:element>
  </xsl:template>

</xsl:stylesheet>
于 2012-05-18T10:04:12.000 に答える