Тэги

Silverlight (36) WPF (10) IIS (7) Visual Studio (7) SharePoint (6) .Net Framework (5) ODP.NET (5) ASP.NET (4) C# (4) common (4) Network Settings (3) JavaScript (2) MS Office (2) Resharper (2) WCF (2) WEB (2) XPath (2) XSLT (2) ADO.NET (1) APEX (1) CMD (1) CSS (1) EF (1) HTML (1) Hardware bugs (1) Java (1) MS SQL (1) Oracle (1) PDF (1) Version Control (1) XAML (1)

четверг, 1 сентября 2011 г.

Отличное решение проблемы "first convert it to a node-set" без использования msxsl:node-set()

Для случая
"To use a result tree fragment in a path expression, first convert it to a node-set using the msxsl:node-set() function."
представлено отличное решение проблемы без использования msxsl:node-set().

"get xpath from xsl variable"

<xsl:stylesheet version="1.0"
 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 
<xsl:output method="text"/>
 

   
<xsl:variable name ="myVar">
       
<RefData RefTag="test1" bbb="false" />
       
<RefData RefTag="test2" bbb="false" />
       
<RefData RefTag="test3" bbb="false" />
       
<RefData RefTag="test4" bbb="true"  />
       
<RefData RefTag="test5" bbb="false" />
       
<RefData RefTag="test6" bbb="false" />
   
</xsl:variable>
 

   
<xsl:variable name="vrefVar" select=
     
"document('')/*/xsl:variable[@name='myVar']"
     
/>
 

   
<xsl:template match="/">
     
<xsl:value-of select="$vrefVar/*[@RefTag='test3']/@bbb"/>
   
</xsl:template>
</xsl:stylesheet>

Аналог оператора ?? в XPath

Как вариант для дальнейшего развития:

Запись в XPath
( someNode[@key = $key] | otherNode[@key = $key] ) [1]
Запись в C#

int y = xNullable ?? -1;

Управление разбивкой и переносами блоков в XSL

Речь идет о XSL, ранее XSL-FO или просто FO.
Сценарии:
  • Запретить перенос блока
  • Заставить блок переноситься обязательно
  • и т.д.
Напоминалочка.
Чтоб управлять такими вещами нужно изучить атрибуты "keep-..." и "break-...".