我们要求XML文档中需要包含多个语言值。其中一些是希伯来语/阿拉伯语。
我正在尝试使用XSLT转换XML,以便可以在显示中更改短语的方向或使用它的任何内容。 下面是我们的格式示例。
<booklet>
<page><Short_name> IL</Short_name>
<Phrase>Arabic words 1</Phrase>
<Phrase>Arabic words 2</Phrase>
<Pagebreak> </Pagebreak>
</page><page><Short_name></Short_name>
<Phrase>english words 1</Phrase>
<Phrase>english words 2</Phrase>
<Phrase>english words 3</Phrase>
<Phrase>english words 4</Phrase>
</page></booklet>
下面的是我正在寻找的XSLT文件
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<booklet>
<xsl:for-each select="booklet/page">
<page>
<xsl:element name="Short_name">
<xsl:value-of select="Short_name"/>
</xsl:element>
<xsl:for-each select="Phrase">
<Phrase>
<xsl:value-of select="@Phrase"/>
</Phrase>
</xsl:for-each>
<xsl:element name="Pagebreak">
<xsl:value-of select="Pagebreak"/>
</xsl:element>
</page>
</xsl:for-each>
</booklet>
</xsl:template>
</xsl:stylesheet>
这不会呈现Phrase标记的值并始终显示null。不知道这里的错误是什么。
我还需要帮助将方向属性设置为具有阿拉伯语值的pharse的RTL,我可以使用短名称值检测它们,但不确定如何在XSLT中设置direction属性。
预期结果如下所示
<?xml version="1.0" encoding="utf-8"?>
<booklet xmlns:fo="http://www.w3.org/1999/XSL/Format">
<page>
<Short_name>IL</Short_name>
<Phrase>זהו מבחן עברי 1</Phrase> **---- This phrase needs to be RTL**
<Phrase>זהו מבחן עברי 2</Phrase> ---- This phrase needs to be RTL
<Phrase>זהו מבחן עברי 3</Phrase> ---- This phrase needs to be RTL
<Phrase>english wording 2 test</Phrase> ---- This phrase needs to be LTR
<Pagebreak> </Pagebreak>
</page>
<page>
<Short_name></Short_name>
<Phrase>English test 1</Phrase> ---- This phrase needs to be LTR
<Phrase>English test 2</Phrase> ---- This phrase needs to be LTR
</page>
</booklet>
答案 0 :(得分:0)
我不确定预期的输出是什么(特别是关于RTL),但Phrase
的问题是你在迭代它然后尝试将其值作为属性读取(这不是)。
以下更改会产生以下短语:
<xsl:for-each select="Phrase">
<Phrase>
<xsl:value-of select="."/>
</Phrase>
</xsl:for-each>