私のXSLファイルのタスクは、テンプレートのソースファイルから属性 'シンボル'値を取得し、それを翻訳ファイルに入れます。両方のファイルのメッセージ番号が一致します。このアップデートは動作しているようですが、どういうわけか名前空間の問題で終わってしまいました。テンプレートファイル、変換ファイル、および結果ファイルがすべて同じ構造を持つ必要があるため、私はなぜ考えていません。XSLのネームスペース、テンプレートXMLファイルの属性値をコピーして翻訳ファイルを更新する
まず、メッセージ要素にxmlns
属性を取得していました。いくつかのグーグルの後、私はそれらを取り除く方法を見つけた。しかし今、私は実際にそれが欲しいところで<Area>
要素のxmlns
属性を取得していません。
なぜこの再ネームスペースが私と連動しないのですか?
どうすれば動作させることができますか?
私のXSLファイル:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:aaa="urn:aaa-bbb-ccc" exclude-result-prefixes="aaa">
<!-- Transform -s:"translation.xml" -xsl:"merge_files.xsl" -o:"updated_translation.xml" +templateFile="source.xml" -versionmsg:off -->
<xsl:output method="xml" version="1.0" indent="yes" encoding="utf-8"/>
<xsl:strip-space elements="*"/>
<xsl:param name="templateFile"/>
<xsl:variable name="templateDoc" select="$templateFile/aaa:Area" />
<xsl:variable name="source" select="/" />
<!--
<xsl:template match="aaa:Area">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
-->
<!-- Replacement of the traditional identity rule to avoid getting namespace info in the Message elements. -->
<xsl:template match="node()[not(self::*)]">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<!-- Getting everything except @symbol from the translation. @symbol is fetched from source/template file. -->
<xsl:template match="aaa:Message">
<xsl:variable name="messageNumber" select="@number"/>
<Message xmlns:abb="urn:aaa-bbb-ccc" number="{$messageNumber}">
<xsl:apply-templates select="$templateDoc/aaa:Message[@number=$messageNumber]/@symbol"/>
<xsl:apply-templates select="node()"/>
</Message>
</xsl:template>
</xsl:stylesheet>
私の入力XMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<Area areaName="YYY" areaNo="2" lang="en" xmlns="urn:aaa-bbb-ccc">
<Message number="1" symbol="TWINKLE_TWINKLE_LITTLE_STAR">
<Title>Twinkle Twinkle Little Star</Title>
<Description>Twinkle, twinkle, little star, How I wonder what you are. Up above the world so high, Like a diamond in the sky.</Description>
</Message>
<Message number="2" symbol="SPIDER_SONG1">
<Title>Itsy-Bitsy Spider</Title>
<Description>The itsy-bitsy spider climbed up the water spout. Down came the rain and washed the spider out.</Description>
</Message>
<Message number="3" symbol="BLACK_SHEEP">
<Title>Baa, baa, black sheep</Title>
<Description>Baa, baa, black sheep, have you any wool? Yes sir, yes sir, three bags full!</Description>
</Message>
</Area>
私の入力変換ファイル:
<?xml version="1.0" encoding="utf-8"?>
<Area areaName="YYY" areaNo="2" lang="sv" xmlns="urn:aaa-bbb-ccc">
<Message number="1" symbol="TWINKLE_STAR">
<Title>Blinka lilla stjärna</Title>
<Description>Blinka lilla stjärna där, hur jag undrar vad du är. Fjärran lockar du min syn, lik en diamant i skyn.</Description>
</Message>
<Message number="3" symbol="WHITE_SHEEP">
<Title>Bä, bä, vita lamm</Title>
<Description>Bä, bä, vita lamm, har du någon ull? Ja, ja, kära barn, jag har säcken full.</Description>
</Message>
</Area>
予想される出力:
<?xml version="1.0" encoding="utf-8"?>
<Area areaName="YYY" areaNo="2" lang="sv" xmlns="urn:aaa-bbb-ccc">
<Message number="1" symbol="TWINKLE_TWINKLE_LITTLE_STAR">
<Title>Blinka lilla stjärna</Title>
<Description>Blinka lilla stjärna där, hur jag undrar vad du är. Fjärran lockar du min syn, lik en diamant i skyn.</Description>
</Message>
<Message number="3" symbol="BLACK_SHEEP">
<Title>Bä, bä, vita lamm</Title>
<Description>Bä, bä, vita lamm, har du någon ull? Ja, ja, kära barn, jag har säcken full.</Description>
</Message>
</Area>
「地域」要素内のxmlnsが欠落しているところ
これは私の出力は、以下のようになります。
<?xml version="1.0" encoding="utf-8"?>
<Area areaName="YYY" areaNo="2" lang="sv">
<Message number="1" symbol="TWINKLE_TWINKLE_LITTLE_STAR">
<Title>Blinka lilla stjärna</Title>
<Description>Blinka lilla stjärna där, hur jag undrar vad du är. Fjärran lockar du min syn, lik en diamant i skyn.</Description>
</Message>
<Message number="3" symbol="BLACK_SHEEP">
<Title>Bä, bä, vita lamm</Title>
<Description>Bä, bä, vita lamm, har du någon ull? Ja, ja, kära barn, jag har säcken full.</Description>
</Message>
</Area>
をお試しください(間違った)出力、ちょうど問題が何であるか誤解がないでしょうか?ありがとう! –
誤った出力を追加しました。ここでは、xmlnsがAreaエレメントから欠落しています。 – Gunilla