使用CSS交换XML元素中的文本

时间:2014-11-17 08:37:55

标签: css

我有一个XML,如下所示。我需要显示< given-names>的文本作为第一和<姓氏>作为第二。

XML:

<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="sample.css"?>
<names>
<contributor><name>
<surname>Surname1</surname>
<given-names>Given-names1</given-names>
</name>
<xref><sup>1</sup></xref></contributor>
<contributor><name>
<surname>Surname2</surname>
<given-names>Given-names2</given-names>
</name>
<xref><sup>2</sup></xref></contributor>
</names>

例如,我需要输出如下所示:

输出

Given-names1 Surname1 1,
Given-names2 Surname2 2

我尝试了下面的CSS。我无法使用CSS交换元素中的文本。有什么选择吗?请建议

CSS试过:

sup{vertical-align: super; font-size: 80%;}
contributor:after{content:",";}
contributor:last-child:after{content:"";}
surname{display:inline-block; text-align:right;padding-left:90px;}
given-names{display:inline-block; text-align:left;position:absolute;}

1 个答案:

答案 0 :(得分:0)

一种可能的方法是将布局方向设置为从右到左。这需要小心,因为direction property有点棘手。实际上,您可以通过为name元素设置强制 RTL方向并为其子级和父级设置强制LTR方向来粗暴地覆盖正常方向性规则。 CSS代码示例:

contributor { display: block; }
given-names { padding-right: 0.25em; }
name { direction: rtl; unicode-bidi: bidi-override; text-align: left; }
contributor, surname, given-names { direction: ltr; unicode-bidi: bidi-override; }
contributor:not(:last-child):after { content: ",";}
sup { vertical-align: super; font-size: 80%; }

我假设,从问题文本和其中的代码的组合,您希望sup元素在它们之前以上标样式和缩小的字体大小呈现一些空格。当然,这部分对于提出的问题并不重要。

有许多不同的方法,但没有真正令人满意的方法,因为这不是CSS的设计目的。这项工作可能更适合服务器端脚本,单独的转换或文档生成程序或XSLT。