У меня есть следующий XML:
<parent>
<pet>
<data>
<birthday/>
</data>
</pet>
<pet>
<data>
<birthday/>
</data>
</pet>
</parent>
И теперь я хочу выбрать первый элемент дня рождения через parent//birthday[1]
но это возвращает оба элемента дня рождения, потому что bothof их являются первым ребенком своих родителей.
Как я могу только выбрать первый элемент дня рождения всего документа, неважно, где он расположен. Я попробовал parent//birthday[position()=1]
но это не работает также.
Вы имеете в виду (обратите внимание на скобки!)
(/parent/pet/data/birthday)[1]
или, более короткий, но менее специфический вариант:
(/*/*/*/birthday)[1] (//birthday)[1]
или, более семантические, «День рождения первого питомца» :
/parent/pet[1]/data/birthday
Или, если не все домашние животные имеют записи на день рождения, «День рождения первого домашнего животного, для которого набор день рождения» :
/parent/pet[data/birthday][1]/data/birthday
Если вы работаете из контекста, Вы можете сократить выражение, сделав его относительно этого контекстно-узла.
Объяснение:
/ Родитель / ПЭТ / Данные / день рождения [1]
Выбирает все <день рождения>
узлов, которые являются первыми в своих соответствующих родителях ( <данные>
Узлы), по всему документу (/ / / peat / pet / data / день рождения) [1]
выбирает все <день рождения>
узлов, а из них (Это то, что делают скобки, они создают промежуточный узел), он принимает первый Хорошо, я признаю, что это ужасно, и там должен быть лучший способ, но это, кажется, работает.
/*/*[descendant::birthday and not(preceding-sibling::*[descendant::birthday])]
Я ищу все элементы на втором уровне в дереве, который имеет элемент потомка, называемый день рождения, который не имеет предыдущего элемента брата, который имеет элемент рождения в качестве потомка.
Попробуйте
//birthday[position()=1]
//
находит узлы, независимо от того, где есть в иерархии
, вы могли бы также сделать
pet[position()=1]/data/birthday
Проверили ли вы параметры UIViewAutoresizing?
(из документации)
UIViewAutoresizing
Specifies how a view is automatically resized.
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
typedef NSUInteger UIViewAutoresizing;
-121--2151645- С учетом этой статьи существует стоимость, связанная с литьем.
Обратите внимание, что статья вышла в 1999 году, и читатель должен решить, заслуживает ли информация доверия!
-121--1307689-К вашему сведению: можно визуализировать результаты различных запросов Xpath с помощью (свободного) инструмента XPathVisualizer . Работает только в Windows.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:variable name="birthdays" select="//birthday"/>
<xsl:value-of select="$birthdays[1]"/>
</xsl:template>
</xsl:stylesheet>