Мои вопросы находятся внизу этого сообщения, если вы хотите прочитать их перед полным объяснением.
Я конвертирую XML-документ в красивую веб-страницу с помощью XSL, и у меня возникли проблемы с правильной передачей переменной. У меня определено много xsl: template
, и мне нужно передать определенный параметр только одному из них. Я надеялся, что смогу передать именованный параметр, который предположительно будет отправлен всем xsl: template
s, но может использоваться только одним и игнорироваться другими. Однако при попытке проверить это на себе (и в моем ограниченном понимании XSL) я вообще не смог передать параметр, не говоря уже о том, чтобы проверить, не мешает ли он случайно другим xsl: template
.
Ниже приводится упрощенный пример кода ( введен для этого вопроса, он может содержать одну или две опечатки ). У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный при попытке проверить это на себе (и мое ограниченное понимание XSL) я вообще не смог передать параметр, не говоря уже о том, чтобы проверить, не мешал ли он случайно другим xsl: template
s.
Ниже приведен упрощенный пример кода (, набранный для этого вопроса, он может содержать одну или две опечатки ). У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный при попытке проверить это на себе (и мое ограниченное понимание XSL) я вообще не смог передать параметр, не говоря уже о том, чтобы проверить, не мешал ли он случайно другим xsl: template
s.
Ниже приведен упрощенный пример кода (, набранный для этого вопроса, он может содержать одну или две опечатки ). У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный не говоря уже о том, чтобы проверить, не мешал ли он случайно другим xsl: template
s.
Ниже приводится упрощенный пример кода (, набранный для этого вопроса, он может содержать одну или две опечатки ). У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный не говоря уже о том, чтобы проверить, не мешал ли он случайно другим xsl: template
s.
Ниже приводится упрощенный пример кода (, набранный для этого вопроса, он может содержать одну или две опечатки ). У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный У меня есть много разных xsl: template
, определенных для работы с узлами в XML, и до сих пор все работало нормально. Проблема заключается в добавлении параметра к этим шаблонам.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="main.xsl"?>
<wrapperNode>
<testNode>
<subNode/>
</testNode>
</wrapperNode>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="test.xsl"/>
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates>
<xsl:with-param name="testParam">TEST_PARAMETER</xsl:with-param>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="testNode">
<xsl:param name="testParam" />
TEST1
<xsl:value-of select="$testParam" />
TEST2
</xsl:template>
</xsl:stylesheet>
TEST1 TEST2
TEST1 TEST_PARAMETER TEST2
Мои вопросы по этому поводу:
Можно ли отправить именованный
параметр для всех моих
xsl: template
с использованием
xsl: apply-templates
с
xsl: with-param
, но выберите это
значение, в частности, на name =
в пределах
фактический шаблон, чтобы он мог
явно использоваться в одном
шаблон и игнорируется всеми остальными
(даже если бы я хотел добавить другое,
иначе названные, параметры для
другие шаблоны позже)?
Что я делаю не так с моим текущим примером кода, что он, кажется, вообще не получает параметр?
Есть ли лучший способ сделать это?
Изменить: Я хочу прояснить, что из-за другого вывода в шаблоне test.xsl
: testNode
я точно знаю, что он IS вызывается успешно. Не работает ТОЛЬКО часть параметров. Я не хочу тратить время людей на выяснение, почему этот шаблон не вызывается. Это так.
Обновление: В ответ на первоначально полученные мной ответы, в которых указывалось, что составленный мной пример не был полностью правильным (моя ошибка) и не очень четко отражал проблему (т.е. правильный шаблон вызывается , но это только параметр, похоже, не работает), я заменил примеры на гораздо лучшие. Этот пример более четко показывает, что шаблон testNode
вызывается успешно, но параметр не передается. Я проверял это много раз, до и после рассмотрения предыдущих ответов на этот вопрос. Я абсолютно озадачен, поскольку все кажется правильным из того, что я читал в другом месте, и из того, что люди предлагали до сих пор.