Вот первая попытка понять, что должен делать ваш код на основе структуры XML: обработчик
Selection
ищет дочерние узлы Content
с атрибутом language == 'en'
в узлах Message
в узлах Content
./Contents/Message/Content[@language='en']
imagelibraryid
, сохранить значение этого CDATA
первого дочернего элемента. refid
значение атрибута из родительского узла Message
Selection
#!/usr/bin/perl
use warnings;
use strict;
use XML::Twig;
use Data::Dumper;
my %selections;
my $twig = XML::Twig->new(
twig_handlers => {
Selection => sub {
# Вот первая попытка понять, что должен делать ваш код на основе структуры XML: обработчик
- для узлов
Selection
ищет дочерние узлы Content
с атрибутом language == 'en'
в узлах Message
в узлах Content
- преобразуется в XPath
./Contents/Message/Content[@language='en']
- , если он имеет атрибут
imagelibraryid
, сохранить значение этого - в противном случае сохраните содержимое
CDATA
первого дочернего элемента. - установите
refid
значение атрибута из родительского узла Message
- и добавьте их к список содержимого для узла
Selection
- , чтобы показать, что было собрано, используйте Data :: Dumper в массиве ref
[110] Тестовый прогон:
$ perl dummy.pl
selection id: 54008473
selection id: 54008475
Selection '54008473' messages: $VAR1 = [
{
'refid' => '123991123',
'library' => '5492396'
},
{
'cata' => 'Some English content
',
'refid' => '128054778'
}
];
Selection '54008475' messages: $VAR1 = [
{
'cata' => 'ada
',
'refid' => '128054778'
}
];
->print();
print "selection id: ", Вот первая попытка понять, что должен делать ваш код на основе структуры XML: обработчик
- для узлов
Selection
ищет дочерние узлы Content
с атрибутом language == 'en'
в узлах Message
в узлах Content
- преобразуется в XPath
./Contents/Message/Content[@language='en']
- , если он имеет атрибут
imagelibraryid
, сохранить значение этого - в противном случае сохраните содержимое
CDATA
первого дочернего элемента. - установите
refid
значение атрибута из родительского узла Message
- и добавьте их к список содержимого для узла
Selection
- , чтобы показать, что было собрано, используйте Data :: Dumper в массиве ref
[110] Тестовый прогон:
$ perl dummy.pl
selection id: 54008473
selection id: 54008475
Selection '54008473' messages: $VAR1 = [
{
'refid' => '123991123',
'library' => '5492396'
},
{
'cata' => 'Some English content
',
'refid' => '128054778'
}
];
Selection '54008475' messages: $VAR1 = [
{
'cata' => 'ada
',
'refid' => '128054778'
}
];
->att('id'), "\n";
my @contents;
foreach my $content ( Вот первая попытка понять, что должен делать ваш код на основе структуры XML: обработчик
- для узлов
Selection
ищет дочерние узлы Content
с атрибутом language == 'en'
в узлах Message
в узлах Content
- преобразуется в XPath
./Contents/Message/Content[@language='en']
- , если он имеет атрибут
imagelibraryid
, сохранить значение этого - в противном случае сохраните содержимое
CDATA
первого дочернего элемента. - установите
refid
значение атрибута из родительского узла Message
- и добавьте их к список содержимого для узла
Selection
- , чтобы показать, что было собрано, используйте Data :: Dumper в массиве ref
[110] Тестовый прогон:
$ perl dummy.pl
selection id: 54008473
selection id: 54008475
Selection '54008473' messages: $VAR1 = [
{
'refid' => '123991123',
'library' => '5492396'
},
{
'cata' => 'Some English content
',
'refid' => '128054778'
}
];
Selection '54008475' messages: $VAR1 = [
{
'cata' => 'ada
',
'refid' => '128054778'
}
];
->findnodes("./Contents/Message/Content[\@language='en']")) {
my $result = {
refid => $content->parent->att('refid'),
};
my $id = $content->att('imagelibraryid');
if (defined $id) {
$result->{library} = $id;
} else {
$result->{cata} = $content->first_child->cdata;
}
push(@contents, $result);
}
# store collected Content nodes under selection ID
$selections{ Вот первая попытка понять, что должен делать ваш код на основе структуры XML: обработчик
- для узлов
Selection
ищет дочерние узлы Content
с атрибутом language == 'en'
в узлах Message
в узлах Content
- преобразуется в XPath
./Contents/Message/Content[@language='en']
- , если он имеет атрибут
imagelibraryid
, сохранить значение этого - в противном случае сохраните содержимое
CDATA
первого дочернего элемента. - установите
refid
значение атрибута из родительского узла Message
- и добавьте их к список содержимого для узла
Selection
- , чтобы показать, что было собрано, используйте Data :: Dumper в массиве ref
[110] Тестовый прогон:
$ perl dummy.pl
selection id: 54008473
selection id: 54008475
Selection '54008473' messages: $VAR1 = [
{
'refid' => '123991123',
'library' => '5492396'
},
{
'cata' => 'Some English content
',
'refid' => '128054778'
}
];
Selection '54008475' messages: $VAR1 = [
{
'cata' => 'ada
',
'refid' => '128054778'
}
];
->att('id') } = \@contents;
},
}
);
$twig->parse(\*DATA);
while (my($id, $contents) = each %selections) {
my $dump = Dumper($contents);
print "Selection '${id}' messages: $dump\n";
}
exit 0;
__DATA__
... the rest of your XML left out ...
Тестовый прогон:
$ perl dummy.pl
selection id: 54008473
selection id: 54008475
Selection '54008473' messages: $VAR1 = [
{
'refid' => '123991123',
'library' => '5492396'
},
{
'cata' => 'Some English content
',
'refid' => '128054778'
}
];
Selection '54008475' messages: $VAR1 = [
{
'cata' => 'ada
',
'refid' => '128054778'
}
];
Вы поражаете ошибку контекста укладки
http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html
Каждое расположенное отделение в IE создаст новый контекст укладки и предотвратит z-индекс от различных контекстов укладки для добавлений к другим.
Решение состоит в том, чтобы иметь окно, на котором Вы хотите, пополняют в дереве (в тело, например) и z-индексная терка значения, чем z-индекс всех родителей другого отделения, покрывающего Ваше окно.
Обширная информация для понимания проблемы здесь: http://richa.avasthi.name/blogs/tepumpkin/2008/01/11/ie7-lessons-learned/
расположение и отрицательные поля является единственным способом заставить элементы перекрывать это, я знаю о. z-индекс просто используется для явного сообщения браузера, как разделить элементы на уровни.
относительно Вашей проблемы, IE требует контейнерных элементов и/или элементов, которые Вы перекрываете, чтобы иметь position:relative;
или position:absolute;
чтобы z-индекс работал правильно. Когда кто-то говорит, что расположение они обычно подразумевают наличие position
набор свойств в CSS. Также, когда работа с z-индексом удостоверяется, что наложение elementa на том же уровне друг с другом.
Надеюсь, это поможет
Как подсказал другими ответами, position:relative
и position:absolute
сбросьте "контекст укладки" в IE.
Если Вы хотите более ленивый ответ, Вы могли бы использовать JavaScript и скрыть отделение, когда Вы нажимаете на карту и показываете его при закрытии карты.
Необходимо будет сделать, это с любым выбирает на странице так или иначе, потому что в т.е. они не работают с z-индексом.
Вполне просто порядок элементов в Вашем файле HTML определит порядок укладки. Если Вы хотите, чтобы элемент был выше другого, затем удостоверяются, что он прибывает позже в HTML.
Можно только подкачать порядок укладки на элементы, которые являются всеми в том же содержащем элемент. Например, если у Вас есть два отделения, и они оба содержат 3 изображения, Вы не можете заставить изображения из второго отделения понизиться изображения от первого отделения.
Необходимо запланировать HTML вперед при необходимости в сложных заказах укладки.
Я столкнулся с этой той же проблемой пара несколько дней назад и нашел отрицательное поле, как предложил Darko Z работавшим отлично. (Мой представитель не достаточно хорош все же для голосования за Darko),
Я записал быстрое сообщение на нем.
http://www.swards.net/2009/03/layering-html-elements-without-using.html