我有DIDL的一個非常具體的XML文件,這在一定程度看起來是這樣的 - http://en.wikipedia.org/wiki/Digital_Item_Declaration_LanguageDIDL XML轉換爲HTML使用XSLT
我想這個轉換成HTML使用XSLT應該也展開和摺疊功能。我嘗試了很多東西,但找不到任何解決方案。
任何人都可以幫我解決這個問題嗎?
我有DIDL的一個非常具體的XML文件,這在一定程度看起來是這樣的 - http://en.wikipedia.org/wiki/Digital_Item_Declaration_LanguageDIDL XML轉換爲HTML使用XSLT
我想這個轉換成HTML使用XSLT應該也展開和摺疊功能。我嘗試了很多東西,但找不到任何解決方案。
任何人都可以幫我解決這個問題嗎?
除了特定的命名空間聲明之外,它確實是一個常規的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>
感謝您的回覆! – user1402867
但我想實現擴展和崩潰功能也在這個和輸出應該以html和樹視圖的形式,而不是xml – user1402867
@ user1402867,(1)你是最受歡迎的。 (2)那麼你必須發佈樣本輸入XML和期望的HTML輸出。嘗試一些你最終的想法,在這裏發佈,得到答案。 –
示例預期輸入和期望的輸出XML。 –