Выбор случайных URL из XML - PullRequest
       0

Выбор случайных URL из XML

1 голос
/ 12 сентября 2011

нужна помощь.У меня есть XML со списком городов и URL для изображений.XML может содержать любое количество городов, однако я хочу, чтобы на странице XSLT был раздел, в котором я просто показываю несколько изображений (скажем, 4 из x городов в XML).Я хотел бы иметь возможность делать это динамически, выбирая произвольно выбранный город, к которому привязан атрибут 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" />
...

это поможет, если я добавлю другой атрибут, то есть число = "x".Если возможно, ссылка на ссылку, чтобы избежать этого.Любая помощь приветствуется.

Я не уверен, смогу ли я сделать это в XSLT или мне придется написать функцию JavaScript .... в любом случае, я не уверен, как справиться с этим.Я не уверен, как сделать это случайным, как только я прохожу через города.

Ответы [ 3 ]

1 голос
/ 12 сентября 2011

Вот полный пример, чтобы сделать это из строки. Чтобы получить эту строку (например, из файла), вы можете использовать свойство 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

http://jsfiddle.net/Xeon06/f8Ugn/

0 голосов
/ 13 сентября 2011

Можно создать последовательность псевдослучайных чисел в чистом XSLT (1.0 или 2.0).

См. Мою работу " Бросок кости с помощью FXSL: функции генерации случайных чисел в XSLT " здесь .

Конечно, если вы не генерируете одну и ту же последовательность чисел при каждом преобразовании, вам нужно передать в качестве параметра преобразование что-то, что каждый раз отличается - это может быть, например, текущее время в минутах.

0 голосов
/ 12 сентября 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...