Вы действительно хотите ядро, или просто stacktrace? Если все, что Вы хотите, является stacktrace, Вы могли бы смотреть на открытый исходный код здесь и попытаться интегрировать код оттуда, или возможно просто вызов, это из командной строки достаточно.
я полагаю, что некоторый код в gdb проекте мог бы также быть полезным.
Другой думает, что Вы могли бы хотеть сделать, должен использовать gdb для присоединения к рабочему процессу.
$ gdb /path/to/exec 1234 # 1234 is the pid of the running process
Ваш первый пункт действительно верен, существует определенный порядок, описанный в https://www.w3.org/TR/1999/REC-xslt-19991116#conflict . Согласно спецификации person / firstName
имеет приоритет 0, а firstName
имеет приоритет -0,5. Вы также можете указать приоритет самостоятельно, используя атрибут priority
в xsl: template
.
Рассмотрите это с учетом контекста. Первый соответствует и изменяет контекст n (поэтому второй не соответствует). Для контекста устанавливается значение ПОСЛЕ того, как первый выбран и обработан, поэтому видимый элемент из этого контекста больше не содержит "имя". ЕСЛИ вы хотите, чтобы оба выполнялись, вы можете вызвать их вместо этого, чтобы контекст вернулся наверх.
<xsl:template match="people">
<xsl:apply-templates select="person/firstname"/>
<xsl:apply-templates select="firstname"/>
</xsl:template>
Я знаю, что если элемент "match" на два шаблона идентичны (которые никогда не должно случиться, я не думаю)
Это может случиться, но не имеет большого смысла делать это и иметь два совпадающих шаблона.
Из спецификации:
Это ошибка, если это оставляет больше чем одно соответствующее шаблонное правило. An XSLT-процессор может сигнализировать об ошибке; если он не сигнализирует об ошибке, он должны выздороветь, выбрав из соответствующие правила шаблона, которые слева, тот, который встречается последним в таблица стилей.
Другими словами, вы можете получить ошибку, или он просто будет использовать последний шаблон в вашем XSLT, в зависимости от того, какой процессор, который вы используете, был написан для обработки этой ситуации.
Обратите внимание, что значение атрибута match
не выражение XPath (хотя оно использует подмножество синтаксиса XPath). Это шаблон XSLT . При отсутствии явных атрибутов priority
выбор сводится к тому, какой шаблон имеет наивысший приоритет по умолчанию:
person / firstName
имеет приоритет по умолчанию .5
firstName
имеет приоритет по умолчанию 0
Таким образом, person / firstName
побеждает.
Полное объяснение того, как работает разрешение конфликтов, можно найти здесь (хотя я рекомендую вам изучить всю главу, «Как работает XSLT»): Разрешение конфликтов для правил шаблонов