我正在將TEI XML轉換爲XHTML。只有當它存在於當前節點時,我需要將xml:lang
屬性轉換爲lang
屬性。我嘗試了一些笨拙的東西,如:如何只包含@xml:lang屬性?
<xsl:template match="tei:p">
<xsl:element name="p">
<xsl:attribute name="lang">
<xsl:value-of select="./@xml:lang"/>
</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
...但我想堅持最佳實踐。如何簡單地使用xml:lang
屬性並將其轉換爲lang
屬性?當然,如果它不存在,請不要使用它。
我已經加入了著名的身份規則我的模板(這裏according to Michael Kay),但它什麼都不做:
<!-- Identity Rule -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*" />
</xsl:copy>
</xsl:template>
<xsl:template match="@xml:lang">
<xsl:attribute name="lang">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
我想我不正確理解規則。
我想使用的任何標記,如:
<p xml:lang="en">
<seg xml:lang="fr">XYZ</seg> otherwise English.
</p>
預期輸出:
<p lang="en">
<seg lang="fr">XYZ</seg> otherwise English.
</p>
謝謝,實際上,我認爲這個解決方案比來自@TimC的解決方案更清潔,但是這個解決方案不起作用。如果我使用進口產品,有什麼具體的地方需要注意嗎?還是它具有較低的優先級? –
哦,我看到它的作品**與@TimC的答案!這意味着這兩個答案是解決方案。 –
命令'@ * | node()'是否重要?或者也有可能'node()| @ *'? –