需要一些帮助。我有一个带有城市列表的XML和图像的URL。 XML上可以有任意数量的城市,但是我希望在XSLT页面上有一个部分,我只是展示一些图像(比如说,XML中的x个城市中有4个)。我希望能够通过随机选择任何附加了属性url的城市来动态地执行此操作(因此每次加载页面时都会有4个不同的城市图像)。这是我的XML的一个例子。
<Cities>
<City Name="London" url="LinkToImage" />
<City Name="Aberdeen" url="LinkToImage" />
<City Name="Birmingham" url="LinkToImage" />
<City Name="Bristol" url="LinkToImage" />
<City Name="Cardiff" url="LinkToImage" />
<City Name="Edinburgh" url="LinkToImage" />
<City Name="Glasgow" url="LinkToImage" />
<City Name="Liverpool" url="LinkToImage" />
<City Name="Manchester" url="LinkToImage" />
<City Name="Newcastle" url="LinkToImage" />
<City Name="Paris" url="LinkToImage" />
<City Name="Marseille" url="LinkToImage" />
...
如果我添加另一个属性,即number =“x”,它会有帮助吗?如果可能的id链接以避免这种情况。任何帮助将非常感激。
我不确定我是否可以在XSLT中执行此操作,或者我是否必须编写JavaScript函数....无论哪种方式我都不确定如何解决它。我不知道如果我循环通过城市,如何让它随机。
答案 0 :(得分:1)
以下是从字符串中执行此操作的完整示例。要获取该字符串(例如,从文件中),您可以使用XMLHttpRequest
的responseXML
属性。
var doc =
'<Cities>' +
'<City Name="London" url="LinkToImage" />' +
'<City Name="Aberdeen" url="LinkToImage" />' +
'<City Name="Birmingham" url="LinkToImage" />' +
'<City Name="Bristol" url="LinkToImage" />' +
'<City Name="Cardiff" url="LinkToImage" />' +
'<City Name="Edinburgh" url="LinkToImage" />' +
'<City Name="Glasgow" url="LinkToImage" />' +
'<City Name="Liverpool" url="LinkToImage" />' +
'<City Name="Manchester" url="LinkToImage" />' +
'<City Name="Newcastle" url="LinkToImage" />' +
'<City Name="Paris" url="LinkToImage" />' +
'<City Name="Marseille" url="LinkToImage" />' +
'</Cities>';
var parser = new DOMParser();
var xml = parser.parseFromString(doc, "text/xml"); //Convert the text to XML object
var cities = xml.getElementsByTagName("Cities")[0].childNodes; //Get all child of Cities
var randomCity = Math.floor(Math.random() * cities.length); //Pick one at random
var city = cities[randomCity]; //Get it using it's index
alert(city.getAttribute("Name")); //Show it's name
答案 1 :(得分:0)
答案 2 :(得分:0)
可以在纯XSLT(1.0或2.0)中创建一系列伪随机数。
请参阅我的工作“使用FXSL投射骰子:XSLT中的随机数生成函数” here 。
当然,如果您不在每次转换时生成相同的数字序列,则需要将每次转换的参数传递给转换 - 例如,这可以是以分钟为单位的当前时间。