diff options
Diffstat (limited to 'tools')
169 files changed, 39612 insertions, 39612 deletions
diff --git a/tools/Sandcastle/Presentation/Prototype/DocModel.ps1 b/tools/Sandcastle/Presentation/Prototype/DocModel.ps1 index ae9ffcf..2a95d65 100644 --- a/tools/Sandcastle/Presentation/Prototype/DocModel.ps1 +++ b/tools/Sandcastle/Presentation/Prototype/DocModel.ps1 @@ -1,20 +1,20 @@ -
-# Sandcastle build script overrides for prototype doc model.
-
-. $DxRoot\Presentation\Shared\SharedDocModel.ps1
-
-function PostProcessReflectionData($sourceFile, $targetFile) {
- WriteInfo "Post processing reflection data."
- &$XslTransform $sourceFile `
- /xsl:$DxRoot\ProductionTransforms\ApplyPrototypeDocModel.xsl `
- /xsl:$DxRoot\ProductionTransforms\AddGuidFilenames.xsl `
- /out:$targetFile
-}
-
-function CreateToc {
- WriteInfo "Creating TOC."
- &$XslTransform $TempDir\ReflectionData\targets.xml `
- /xsl:$DxRoot\ProductionTransforms\createPrototypeToc.xsl `
- /out:$TempDir\toc.xml
-}
-
+ +# Sandcastle build script overrides for prototype doc model. + +. $DxRoot\Presentation\Shared\SharedDocModel.ps1 + +function PostProcessReflectionData($sourceFile, $targetFile) { + WriteInfo "Post processing reflection data." + &$XslTransform $sourceFile ` + /xsl:$DxRoot\ProductionTransforms\ApplyPrototypeDocModel.xsl ` + /xsl:$DxRoot\ProductionTransforms\AddGuidFilenames.xsl ` + /out:$targetFile +} + +function CreateToc { + WriteInfo "Creating TOC." + &$XslTransform $TempDir\ReflectionData\targets.xml ` + /xsl:$DxRoot\ProductionTransforms\createPrototypeToc.xsl ` + /out:$TempDir\toc.xml +} + diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config b/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config index 07d8893..0c2beda 100644 --- a/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config +++ b/tools/Sandcastle/Presentation/Prototype/configuration/conceptual.config @@ -1,100 +1,100 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton_conceptual.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/topic" key="@id">
- <data files=".\DdueXml\*.xml" />
- </index>
- <copy name="comments" source="/topic" target="/document" />
- </component>
-
- <!-- resolve tokens -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
- <content file="%DXROOT%\Data\tokens.xml" />
- <replace elements="/*//ddue:token" item="string(.)" />
- </component>
-
- <!-- copy in metadata keywords -->
- <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" />
- </component>
-
- <!-- copy in metadata attributes -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="metadata" value="/metadata/topic" key="@id">
- <data files=".\ExtractedFiles\*.ContentMetadata.xml" />
- </index>
- <copy name="metadata" source="*" target="/document/metadata" />
- <copy name="metadata" key="string('*')" source="*" target="/document/metadata" />
- </component>
-
- <!-- Resolve code snippets -->
- <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <examples file="%DXROOT%\Data\CodeSnippet.xml" />
- <colors language="VisualBasic">
- <color pattern="^\s*'[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((AddHandler)|(AddressOf)|(As)|(ByRef)|(ByVal)|(Case)|(Catch)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(Function)|(Get)|(Handles)|(Implements)|(Imports)|(In)|(Inherits)|(Interface)|(Is)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(While)|(With)|(WriteOnly))\b" class="keyword" />
- </colors>
- <colors language="CSharp">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((abstract)|(as)|(base)|(bool)|(break)|(case)|(catch)|(class)|(const)|(continue)|(default)|(delegate)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(foreach)|(get)|(if)|(in)|(interface)|(internal)|(is)|(namespace)|(new)|(null)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(while))\b" class="keyword" />
- </colors>
- <colors language="ManagedCPlusPlus">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((abstract)|(array)|(break)|(case)|(catch)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
- </colors>
- </component>
-
- <!--
- <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <xpath>/</xpath>
- </component>
- -->
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\Prototype\transforms\main_conceptual.xsl" />
- </component>
-
- <!-- resolve art links -->
- <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" />
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\Prototype\content\conceptual_content.xml" />
- </component>
-
- <!-- resolve conceptual links -->
- <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base=".\XmlComp" type="local" />
- <targets base="%DXROOT%\Data\XmlComp" type="index"/>
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" />
- </component>
-
- </components>
-
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton_conceptual.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/topic" key="@id"> + <data files=".\DdueXml\*.xml" /> + </index> + <copy name="comments" source="/topic" target="/document" /> + </component> + + <!-- resolve tokens --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" /> + <content file="%DXROOT%\Data\tokens.xml" /> + <replace elements="/*//ddue:token" item="string(.)" /> + </component> + + <!-- copy in metadata keywords --> + <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" /> + </component> + + <!-- copy in metadata attributes --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="metadata" value="/metadata/topic" key="@id"> + <data files=".\ExtractedFiles\*.ContentMetadata.xml" /> + </index> + <copy name="metadata" source="*" target="/document/metadata" /> + <copy name="metadata" key="string('*')" source="*" target="/document/metadata" /> + </component> + + <!-- Resolve code snippets --> + <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <examples file="%DXROOT%\Data\CodeSnippet.xml" /> + <colors language="VisualBasic"> + <color pattern="^\s*'[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((AddHandler)|(AddressOf)|(As)|(ByRef)|(ByVal)|(Case)|(Catch)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(Function)|(Get)|(Handles)|(Implements)|(Imports)|(In)|(Inherits)|(Interface)|(Is)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(While)|(With)|(WriteOnly))\b" class="keyword" /> + </colors> + <colors language="CSharp"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((abstract)|(as)|(base)|(bool)|(break)|(case)|(catch)|(class)|(const)|(continue)|(default)|(delegate)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(foreach)|(get)|(if)|(in)|(interface)|(internal)|(is)|(namespace)|(new)|(null)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(while))\b" class="keyword" /> + </colors> + <colors language="ManagedCPlusPlus"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((abstract)|(array)|(break)|(case)|(catch)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" /> + </colors> + </component> + + <!-- + <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <xpath>/</xpath> + </component> + --> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\Prototype\transforms\main_conceptual.xsl" /> + </component> + + <!-- resolve art links --> + <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" /> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\Prototype\content\conceptual_content.xml" /> + </component> + + <!-- resolve conceptual links --> + <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base=".\XmlComp" type="local" /> + <targets base="%DXROOT%\Data\XmlComp" type="index"/> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" /> + </component> + + </components> + + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle-scbuild.config b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle-scbuild.config index 25c2732..6f7a13f 100644 --- a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle-scbuild.config +++ b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle-scbuild.config @@ -1,113 +1,113 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements/element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/*)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(local-name()='elements')]" target="/document/reference/elements/element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements/element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\Prototype\transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- </argument>
- </transform>
- </component>
- <!--
- <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <xpath>/</xpath>
- </component>
--->
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\Prototype\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\Shared\content\syntax_content.xml" />
- </component>
-
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" />
- <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" />
- <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements/element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements/element[@api=$key]/*)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(local-name()='elements')]" target="/document/reference/elements/element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements/element[@api=$key]" /> + </component> + </components> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\Prototype\transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + </argument> + </transform> + </component> + <!-- + <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <xpath>/</xpath> + </component> +--> + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\Prototype\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\Shared\content\syntax_content.xml" /> + </component> + + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" /> + <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" /> + <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config index 887109d..4e3502f 100644 --- a/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config +++ b/tools/Sandcastle/Presentation/Prototype/configuration/sandcastle.config @@ -1,114 +1,114 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" />
- <data files=".\reflection.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\" recurse="false" files="*.xml" />
- <data files=".\comments.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements/element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/*)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(local-name()='elements')]" target="/document/reference/elements/element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements/element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\Prototype\transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- </argument>
- </transform>
- </component>
- <!--
- <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <xpath>/</xpath>
- </component>
--->
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\Prototype\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\Shared\content\syntax_content.xml" />
- </component>
-
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="msdn" />
- <targets files=".\reflection.xml" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base =".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\Prototype\transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" /> + <data files=".\reflection.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\" recurse="false" files="*.xml" /> + <data files=".\comments.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements/element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements/element[@api=$key]/*)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(local-name()='elements')]" target="/document/reference/elements/element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements/element[@api=$key]" /> + </component> + </components> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\Prototype\transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + </argument> + </transform> + </component> + <!-- + <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <xpath>/</xpath> + </component> +--> + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\Prototype\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\Prototype\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\Shared\content\syntax_content.xml" /> + </component> + + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="msdn" /> + <targets files=".\reflection.xml" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base =".\Output\html" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="false" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/Prototype/content/conceptual_content.xml b/tools/Sandcastle/Presentation/Prototype/content/conceptual_content.xml index 762ba5c..deaf39a 100644 --- a/tools/Sandcastle/Presentation/Prototype/content/conceptual_content.xml +++ b/tools/Sandcastle/Presentation/Prototype/content/conceptual_content.xml @@ -1,38 +1,38 @@ -<content xml:space="preserve">
-
- <!-- control window stuff -->
- <item id="productTitle">.NET Framework Developer's Guide</item>
-
- <!-- main window stuff -->
-
- <!-- body -->
-
- <!-- section titles -->
- <item id="inThisSectionTitle">In This Section</item>
- <item id="buildInstructionsTitle">Compiling the Code</item>
- <item id="nextStepsTitle">Next Steps</item>
- <item id="requirementsTitle">Requirements</item>
- <item id="relatedSectionsTitle">Related Sections</item>
- <item id="relatedTopicsTitle">See Also</item>
- <item id="syntaxTitle">Syntax</item>
- <item id="parametersTitle">Parameters</item>
- <item id="returnValueTitle">Return Value</item>
- <item id="attributesAndElements">Attributes and Elements</item>
- <item id="attributes">Attributes</item>
- <item id="childElement">Child Elements</item>
- <item id="parentElement">Parent Elements</item>
- <item id="elementInformation">Element Information</item>
- <item id="textValue">Text Value</item>
- <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item>
- <item id="prerequisites">Prerequisites</item>
- <item id="robustProgramming">Robust Programming</item>
- <item id="securitySection">Security</item>
- <item id="externalResources">External Resources</item>
- <item id="demonstrates">Demonstrates</item>
- <item id="appliesTo">Applies To</item>
- <item id="conclusion">Conclusion</item>
- <item id="background">Background</item>
- <item id="whatsNew">What's New</item>
- <item id="Example">Example</item>
-
-</content>
+<content xml:space="preserve"> + + <!-- control window stuff --> + <item id="productTitle">.NET Framework Developer's Guide</item> + + <!-- main window stuff --> + + <!-- body --> + + <!-- section titles --> + <item id="inThisSectionTitle">In This Section</item> + <item id="buildInstructionsTitle">Compiling the Code</item> + <item id="nextStepsTitle">Next Steps</item> + <item id="requirementsTitle">Requirements</item> + <item id="relatedSectionsTitle">Related Sections</item> + <item id="relatedTopicsTitle">See Also</item> + <item id="syntaxTitle">Syntax</item> + <item id="parametersTitle">Parameters</item> + <item id="returnValueTitle">Return Value</item> + <item id="attributesAndElements">Attributes and Elements</item> + <item id="attributes">Attributes</item> + <item id="childElement">Child Elements</item> + <item id="parentElement">Parent Elements</item> + <item id="elementInformation">Element Information</item> + <item id="textValue">Text Value</item> + <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item> + <item id="prerequisites">Prerequisites</item> + <item id="robustProgramming">Robust Programming</item> + <item id="securitySection">Security</item> + <item id="externalResources">External Resources</item> + <item id="demonstrates">Demonstrates</item> + <item id="appliesTo">Applies To</item> + <item id="conclusion">Conclusion</item> + <item id="background">Background</item> + <item id="whatsNew">What's New</item> + <item id="Example">Example</item> + +</content> diff --git a/tools/Sandcastle/Presentation/Prototype/content/reference_content.xml b/tools/Sandcastle/Presentation/Prototype/content/reference_content.xml index 195828b..655e4b0 100644 --- a/tools/Sandcastle/Presentation/Prototype/content/reference_content.xml +++ b/tools/Sandcastle/Presentation/Prototype/content/reference_content.xml @@ -1,141 +1,141 @@ -<content xml:space="preserve">
-
- <!-- note text -->
- <item id="notDocumentedText">This API is not documented.</item>
- <item id="preliminaryText">This API is preliminary and subject to change.</item>
-
- <!-- topic titles -->
- <item id="namespacesTopicTitle">Namespaces</item>
- <item id="namespaceTopicTitle">{0} Namespace</item>
- <item id="classTopicTitle">{0} Class</item>
- <item id="structureTopicTitle">{0} Structure</item>
- <item id="interfaceTopicTitle">{0} Interface</item>
- <item id="delegateTopicTitle">{0} Delegate</item>
- <item id="enumerationTopicTitle">{0} Enumeration</item>
- <item id="fieldTopicTitle">{0} Field</item>
- <item id="methodTopicTitle">{0} Method {1}</item>
- <item id="constructorTopicTitle">{0} Constructor {1}</item>
- <item id="propertyTopicTitle">{0} Property {1}</item>
- <item id="eventTopicTitle">{0} Event</item>
- <item id="operatorTopicTitle">{0} Operator</item>
- <item id="attachedPropertyTopicTitle">{0} Attached Property</item>
- <item id="attachedEventTopicTitle">{0} Attached Event</item>
-
- <!-- index entries -->
- <item id="rootIndexEntry">namespaces</item>
- <item id="namespaceIndexEntry">{0} namespace</item>
- <item id="classIndexEntry">{0} class</item>
- <item id="structureIndexEntry">{0} structure</item>
- <item id="interfaceIndexEntry">{0} interface</item>
- <item id="delegateIndexEntry">{0} delegate</item>
- <item id="enumerationIndexEntry">{0} enumeration</item>
- <item id="fieldIndexEntry">{0} field</item>
- <item id="methodIndexEntry">{0} method</item>
- <item id="constructorIndexEntry">{0} constructor</item>
- <item id="propertyIndexEntry">{0} property</item>
- <item id="eventIndexEntry">{0} event</item>
- <item id="operatorIndexEntry">{0} operator</item>
- <item id="attachedPropertyIndexEntry">{0} attached property</item>
- <item id="attachedEventIndexEntry">{0} attached event</item>
-
- <!-- main window stuff -->
-
- <!-- body -->
-
- <!-- section titles -->
- <item id="syntaxTitle">Declaration Syntax</item>
- <item id="usyntaxTitle">Usage Syntax</item>
- <item id="templatesTitle">Generic Template Parameters</item>
- <item id="parametersTitle">Parameters</item>
- <item id="valueTitle">Value</item>
- <item id="delegateValueTitle">Return Value</item>
- <item id="methodValueTitle">Return Value</item>
- <item id="propertyValueTitle">Value</item>
- <item id="fieldValueTitle">Value</item>
- <item id="remarksTitle">Remarks</item>
- <item id="examplesTitle">Examples</item>
- <item id="threadSafetyTitle">Thread Safety</item>
- <item id="notesForImplementersTitle">Notes For Implementers</item>
- <item id="notesForInheritersTitle">Notes For Inheriters</item>
- <item id="exceptionsTitle">Exceptions</item>
- <item id="permissionsTitle">Permissions</item>
- <item id="namespacesTitle">Namespaces</item>
- <item id="typesTitle">Types</item>
- <item id="membersTitle">Members</item>
- <item id="familyTitle">Inheritance Hierarchy</item>
- <item id="implementorsTitle">Implementing Types</item>
- <item id="versionsTitle">Version Information</item>
- <item id="relatedTitle">See Also</item>
-
- <!-- table headers -->
- <item id="namespaceNameHeader">Namespace</item>
- <item id="namespaceDescriptionHeader">Description</item>
- <item id="typeIconHeader">Icon</item>
- <item id="typeNameHeader">Type</item>
- <item id="typeDescriptionHeader">Description</item>
- <item id="memberIconHeader">Icon</item>
- <item id="memberNameHeader">Member</item>
- <item id="memberDescriptionHeader">Description</item>
- <item id="exceptionNameHeader">Exception</item>
- <item id="exceptionConditionHeader">Condition</item>
- <item id="permissionNameHeader">Permission</item>
- <item id="permissionDescriptionHeader">Description</item>
-
- <!-- filter control text -->
- <item id="allTypesFilterLabel">All Types</item>
- <item id="classTypesFilterLabel">Classes</item>
- <item id="structureTypesFilterLabel">Structures</item>
- <item id="interfaceTypesFilterLabel">Interfaces</item>
- <item id="delegateTypesFilterLabel">Delegates</item>
- <item id="enumerationTypesFilterLabel">Enumerations</item>
- <item id="allMembersFilterLabel">All Members</item>
- <item id="constructorMembersFilterLabel">Constructors</item>
- <item id="methodMembersFilterLabel">Methods</item>
- <item id="propertyMembersFilterLabel">Properties</item>
- <item id="fieldMembersFilterLabel">Fields</item>
- <item id="eventMembersFilterLabel">Events</item>
- <item id="publicMembersFilterLabel">Public</item>
- <item id="protectedMembersFilterLabel">Protected</item>
- <item id="instanceMembersFilterLabel">Instance</item>
- <item id="staticMembersFilterLabel">Static</item>
- <item id="declaredMembersFilterLabel">Declared</item>
- <item id="inheritedMembersFilterLabel">Inherited</item>
-
- <!-- inserted boilerplate -->
- <item id="productTitle">Reference Library</item>
- <item id="rootLink"><referenceLink target="R:Project">Namespaces</referenceLink></item>
- <item id="obsoleteShort"><span class="obsolete">Obsolete.</span></item>
- <item id="obsoleteLong"><span class="obsolete">This API is obsolete.</span></item>
- <item id="nonobsoleteAlternative">A non-obsolete alternative is {0}.</item>
- <item id="inheritedFrom">(Inherited from {0}.)</item>
- <item id="overridesMember">(Overrides {0}.)</item>
- <item id="locationInformation">Assembly: {0} (Module: {1})</item>
- <item id="hostProtectionAttributeShort">HostProtectionAttribute.</item>
- <item id="hostProtectionAttributeLong">This API is protected by HostProtectionAttribute.</item>
-
- <!-- thread safety boilerplate -->
- <item id="staticThreadSafe">Static members of this type are safe for multi-threaded operations. </item>
- <item id="staticNotThreadSafe">Static members of this type are not safe for multi-threaded operations. </item>
- <item id="instanceThreadSafe">Instance members of this type are safe for multi-threaded operations. </item>
- <item id="instanceNotThreadSafe">Instance members of this type are not safe for multi-threaded operations. </item>
-
- <!-- alt text for images -->
- <item id="publicClassAltText">public class</item>
- <item id="publicStructureAltText">public structure</item>
- <item id="publicInterfaceAltText">public interface</item>
- <item id="publicDelegateAltText">public delegate</item>
- <item id="publicEnumerationAltText">public enumeration</item>
- <item id="publicConstructorAltText">public constructor</item>
- <item id="publicMethodAltText">public method</item>
- <item id="publicFieldAltText">public field</item>
- <item id="publicPropertyAltText">public property</item>
- <item id="publicEventAltText">public event</item>
- <item id="protectedConstructorAltText">protected constructor</item>
- <item id="protectedMethodAltText">protected method</item>
- <item id="protectedFieldAltText">protected field</item>
- <item id="protectedPropertyAltText">protected property</item>
- <item id="protectedEventAltText">protected event</item>
- <item id="staticAltText">static member</item>
-
-
-</content>
+<content xml:space="preserve"> + + <!-- note text --> + <item id="notDocumentedText">This API is not documented.</item> + <item id="preliminaryText">This API is preliminary and subject to change.</item> + + <!-- topic titles --> + <item id="namespacesTopicTitle">Namespaces</item> + <item id="namespaceTopicTitle">{0} Namespace</item> + <item id="classTopicTitle">{0} Class</item> + <item id="structureTopicTitle">{0} Structure</item> + <item id="interfaceTopicTitle">{0} Interface</item> + <item id="delegateTopicTitle">{0} Delegate</item> + <item id="enumerationTopicTitle">{0} Enumeration</item> + <item id="fieldTopicTitle">{0} Field</item> + <item id="methodTopicTitle">{0} Method {1}</item> + <item id="constructorTopicTitle">{0} Constructor {1}</item> + <item id="propertyTopicTitle">{0} Property {1}</item> + <item id="eventTopicTitle">{0} Event</item> + <item id="operatorTopicTitle">{0} Operator</item> + <item id="attachedPropertyTopicTitle">{0} Attached Property</item> + <item id="attachedEventTopicTitle">{0} Attached Event</item> + + <!-- index entries --> + <item id="rootIndexEntry">namespaces</item> + <item id="namespaceIndexEntry">{0} namespace</item> + <item id="classIndexEntry">{0} class</item> + <item id="structureIndexEntry">{0} structure</item> + <item id="interfaceIndexEntry">{0} interface</item> + <item id="delegateIndexEntry">{0} delegate</item> + <item id="enumerationIndexEntry">{0} enumeration</item> + <item id="fieldIndexEntry">{0} field</item> + <item id="methodIndexEntry">{0} method</item> + <item id="constructorIndexEntry">{0} constructor</item> + <item id="propertyIndexEntry">{0} property</item> + <item id="eventIndexEntry">{0} event</item> + <item id="operatorIndexEntry">{0} operator</item> + <item id="attachedPropertyIndexEntry">{0} attached property</item> + <item id="attachedEventIndexEntry">{0} attached event</item> + + <!-- main window stuff --> + + <!-- body --> + + <!-- section titles --> + <item id="syntaxTitle">Declaration Syntax</item> + <item id="usyntaxTitle">Usage Syntax</item> + <item id="templatesTitle">Generic Template Parameters</item> + <item id="parametersTitle">Parameters</item> + <item id="valueTitle">Value</item> + <item id="delegateValueTitle">Return Value</item> + <item id="methodValueTitle">Return Value</item> + <item id="propertyValueTitle">Value</item> + <item id="fieldValueTitle">Value</item> + <item id="remarksTitle">Remarks</item> + <item id="examplesTitle">Examples</item> + <item id="threadSafetyTitle">Thread Safety</item> + <item id="notesForImplementersTitle">Notes For Implementers</item> + <item id="notesForInheritersTitle">Notes For Inheriters</item> + <item id="exceptionsTitle">Exceptions</item> + <item id="permissionsTitle">Permissions</item> + <item id="namespacesTitle">Namespaces</item> + <item id="typesTitle">Types</item> + <item id="membersTitle">Members</item> + <item id="familyTitle">Inheritance Hierarchy</item> + <item id="implementorsTitle">Implementing Types</item> + <item id="versionsTitle">Version Information</item> + <item id="relatedTitle">See Also</item> + + <!-- table headers --> + <item id="namespaceNameHeader">Namespace</item> + <item id="namespaceDescriptionHeader">Description</item> + <item id="typeIconHeader">Icon</item> + <item id="typeNameHeader">Type</item> + <item id="typeDescriptionHeader">Description</item> + <item id="memberIconHeader">Icon</item> + <item id="memberNameHeader">Member</item> + <item id="memberDescriptionHeader">Description</item> + <item id="exceptionNameHeader">Exception</item> + <item id="exceptionConditionHeader">Condition</item> + <item id="permissionNameHeader">Permission</item> + <item id="permissionDescriptionHeader">Description</item> + + <!-- filter control text --> + <item id="allTypesFilterLabel">All Types</item> + <item id="classTypesFilterLabel">Classes</item> + <item id="structureTypesFilterLabel">Structures</item> + <item id="interfaceTypesFilterLabel">Interfaces</item> + <item id="delegateTypesFilterLabel">Delegates</item> + <item id="enumerationTypesFilterLabel">Enumerations</item> + <item id="allMembersFilterLabel">All Members</item> + <item id="constructorMembersFilterLabel">Constructors</item> + <item id="methodMembersFilterLabel">Methods</item> + <item id="propertyMembersFilterLabel">Properties</item> + <item id="fieldMembersFilterLabel">Fields</item> + <item id="eventMembersFilterLabel">Events</item> + <item id="publicMembersFilterLabel">Public</item> + <item id="protectedMembersFilterLabel">Protected</item> + <item id="instanceMembersFilterLabel">Instance</item> + <item id="staticMembersFilterLabel">Static</item> + <item id="declaredMembersFilterLabel">Declared</item> + <item id="inheritedMembersFilterLabel">Inherited</item> + + <!-- inserted boilerplate --> + <item id="productTitle">Reference Library</item> + <item id="rootLink"><referenceLink target="R:Project">Namespaces</referenceLink></item> + <item id="obsoleteShort"><span class="obsolete">Obsolete.</span></item> + <item id="obsoleteLong"><span class="obsolete">This API is obsolete.</span></item> + <item id="nonobsoleteAlternative">A non-obsolete alternative is {0}.</item> + <item id="inheritedFrom">(Inherited from {0}.)</item> + <item id="overridesMember">(Overrides {0}.)</item> + <item id="locationInformation">Assembly: {0} (Module: {1})</item> + <item id="hostProtectionAttributeShort">HostProtectionAttribute.</item> + <item id="hostProtectionAttributeLong">This API is protected by HostProtectionAttribute.</item> + + <!-- thread safety boilerplate --> + <item id="staticThreadSafe">Static members of this type are safe for multi-threaded operations. </item> + <item id="staticNotThreadSafe">Static members of this type are not safe for multi-threaded operations. </item> + <item id="instanceThreadSafe">Instance members of this type are safe for multi-threaded operations. </item> + <item id="instanceNotThreadSafe">Instance members of this type are not safe for multi-threaded operations. </item> + + <!-- alt text for images --> + <item id="publicClassAltText">public class</item> + <item id="publicStructureAltText">public structure</item> + <item id="publicInterfaceAltText">public interface</item> + <item id="publicDelegateAltText">public delegate</item> + <item id="publicEnumerationAltText">public enumeration</item> + <item id="publicConstructorAltText">public constructor</item> + <item id="publicMethodAltText">public method</item> + <item id="publicFieldAltText">public field</item> + <item id="publicPropertyAltText">public property</item> + <item id="publicEventAltText">public event</item> + <item id="protectedConstructorAltText">protected constructor</item> + <item id="protectedMethodAltText">protected method</item> + <item id="protectedFieldAltText">protected field</item> + <item id="protectedPropertyAltText">protected property</item> + <item id="protectedEventAltText">protected event</item> + <item id="staticAltText">static member</item> + + +</content> diff --git a/tools/Sandcastle/Presentation/Prototype/content/shared_content.xml b/tools/Sandcastle/Presentation/Prototype/content/shared_content.xml index f99eb8f..ea38519 100644 --- a/tools/Sandcastle/Presentation/Prototype/content/shared_content.xml +++ b/tools/Sandcastle/Presentation/Prototype/content/shared_content.xml @@ -1,52 +1,52 @@ -<content xml:space="preserve" xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
-
- <!-- paths -->
- <item id="iconPath">../icons/{0}</item>
- <item id="scriptPath">../scripts/{0}</item>
- <item id="stylePath">../styles/{0}</item>
- <item id="artPath">../media/{0}</item>
-
- <!-- locale -->
- <item id="locale">en-us</item>
-
- <!-- header -->
- <item id="header"><div id="header">This is experimental documentation.</div></item>
-
- <!-- alert titles -->
- <item id="cautionTitle"><b>Caution:</b></item>
- <item id="securityTitle"><b>Security Note:</b></item>
- <item id="noteTitle"><b>Note:</b></item>
- <item id="importantTitle"><b>Important Note:</b></item>
- <item id="visualBasicTitle"><b>Visual Basic Note:</b></item>
- <item id="visualC#Title"><b>C# Note:</b></item>
- <item id="visualC++Title"><b>C++ Note:</b></item>
- <item id="visualJ#Title"><b>J# Note:</b></item>
-
- <!-- code labels -->
- <item id="CSharpLabel">C#</item>
- <item id="VisualBasicLabel">Visual Basic</item>
- <item id="ManagedCPlusPlusLabel">Visual C++</item>
- <item id="JSharpLabel">J#</item>
- <item id="JScriptLabel">JScript</item>
- <item id="CSharpUsageLabel">C#</item>
- <item id="VisualBasicUsageLabel">Visual Basic Usage</item>
- <item id="AspNetUsageLabel">ASP.NET</item>
-
- <!-- product labels -->
- <item id="framework">.NET Framework</item>
- <item id="compact">.NET Compact Framework</item>
- <item id="everett">1.1</item>
- <item id="whidbey">2.0</item>
-
-<!-- dynamic Link Information -->
- <item id="mshelpKTable"><MSHelp:ktable keywords='{0}' locHeader='Location' topicHeader = 'Topic' disambiguator='table' indexMoniker='!DefaultDynamicLinkIndex' /></item>
-
- <item id="dynamicLinkInlinePreFixText">For more information, see </item>
- <item id="dynamicLinkInlinePostFixText">.</item>
- <item id="dynamicLinkInlineSeperatorText"> and </item>
-
- <!-- footer -->
- <item id="footer"><div id="footer"><include item="copyright"/> </div></item>
- <item id="copyright">2005 Microsoft Corporation. All rights reserved.</item>
-
+<content xml:space="preserve" xmlns:MSHelp="http://msdn.microsoft.com/mshelp"> + + <!-- paths --> + <item id="iconPath">../icons/{0}</item> + <item id="scriptPath">../scripts/{0}</item> + <item id="stylePath">../styles/{0}</item> + <item id="artPath">../media/{0}</item> + + <!-- locale --> + <item id="locale">en-us</item> + + <!-- header --> + <item id="header"><div id="header">This is experimental documentation.</div></item> + + <!-- alert titles --> + <item id="cautionTitle"><b>Caution:</b></item> + <item id="securityTitle"><b>Security Note:</b></item> + <item id="noteTitle"><b>Note:</b></item> + <item id="importantTitle"><b>Important Note:</b></item> + <item id="visualBasicTitle"><b>Visual Basic Note:</b></item> + <item id="visualC#Title"><b>C# Note:</b></item> + <item id="visualC++Title"><b>C++ Note:</b></item> + <item id="visualJ#Title"><b>J# Note:</b></item> + + <!-- code labels --> + <item id="CSharpLabel">C#</item> + <item id="VisualBasicLabel">Visual Basic</item> + <item id="ManagedCPlusPlusLabel">Visual C++</item> + <item id="JSharpLabel">J#</item> + <item id="JScriptLabel">JScript</item> + <item id="CSharpUsageLabel">C#</item> + <item id="VisualBasicUsageLabel">Visual Basic Usage</item> + <item id="AspNetUsageLabel">ASP.NET</item> + + <!-- product labels --> + <item id="framework">.NET Framework</item> + <item id="compact">.NET Compact Framework</item> + <item id="everett">1.1</item> + <item id="whidbey">2.0</item> + +<!-- dynamic Link Information --> + <item id="mshelpKTable"><MSHelp:ktable keywords='{0}' locHeader='Location' topicHeader = 'Topic' disambiguator='table' indexMoniker='!DefaultDynamicLinkIndex' /></item> + + <item id="dynamicLinkInlinePreFixText">For more information, see </item> + <item id="dynamicLinkInlinePostFixText">.</item> + <item id="dynamicLinkInlineSeperatorText"> and </item> + + <!-- footer --> + <item id="footer"><div id="footer"><include item="copyright"/> </div></item> + <item id="copyright">2005 Microsoft Corporation. All rights reserved.</item> + </content>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Prototype/content/token_content.xml b/tools/Sandcastle/Presentation/Prototype/content/token_content.xml index 13b8cb2..1ccae34 100644 --- a/tools/Sandcastle/Presentation/Prototype/content/token_content.xml +++ b/tools/Sandcastle/Presentation/Prototype/content/token_content.xml @@ -1,4 +1,4 @@ -<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
- <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item>
- <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item>
-</items>
+<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> + <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item> + <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item> +</items> diff --git a/tools/Sandcastle/Presentation/Prototype/copyOutput.bat b/tools/Sandcastle/Presentation/Prototype/copyOutput.bat index ce7900a..c2458da 100644 --- a/tools/Sandcastle/Presentation/Prototype/copyOutput.bat +++ b/tools/Sandcastle/Presentation/Prototype/copyOutput.bat @@ -1,10 +1,10 @@ -if not exist Output mkdir Output
-if not exist Output\html mkdir Output\html
-if not exist Output\icons mkdir Output\icons
-if not exist Output\scripts mkdir Output\scripts
-if not exist Output\styles mkdir Output\styles
-if not exist Output\media mkdir Output\media
-copy "%DXROOT%\Presentation\Prototype\icons\*" Output\icons
-copy "%DXROOT%\Presentation\Prototype\scripts\*" Output\scripts
-copy "%DXROOT%\Presentation\Prototype\styles\*" Output\styles
-if not exist Intellisense mkdir Intellisense
+if not exist Output mkdir Output +if not exist Output\html mkdir Output\html +if not exist Output\icons mkdir Output\icons +if not exist Output\scripts mkdir Output\scripts +if not exist Output\styles mkdir Output\styles +if not exist Output\media mkdir Output\media +copy "%DXROOT%\Presentation\Prototype\icons\*" Output\icons +copy "%DXROOT%\Presentation\Prototype\scripts\*" Output\scripts +copy "%DXROOT%\Presentation\Prototype\styles\*" Output\styles +if not exist Intellisense mkdir Intellisense diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/CollapsibleSection.js b/tools/Sandcastle/Presentation/Prototype/scripts/CollapsibleSection.js index 8914ccc..8a40301 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/CollapsibleSection.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/CollapsibleSection.js @@ -1,17 +1,17 @@ -
- function toggleSection(sectionElement) {
- var children = sectionElement.childNodes;
- if (children.length != 2) return;
-
- var image = children[0].getElementsByTagName('IMG')[0];
- var content = children[1];
-
- if (content.style['display'] == 'none') {
- content.style['display'] = 'block';
- image.src = '../icons/collapse_all.gif';
- } else {
- content.style['display'] = 'none';
- image.src= '../icons/expand_all.gif';
- }
-
- }
+ + function toggleSection(sectionElement) { + var children = sectionElement.childNodes; + if (children.length != 2) return; + + var image = children[0].getElementsByTagName('IMG')[0]; + var content = children[1]; + + if (content.style['display'] == 'none') { + content.style['display'] = 'block'; + image.src = '../icons/collapse_all.gif'; + } else { + content.style['display'] = 'none'; + image.src= '../icons/expand_all.gif'; + } + + } diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/CookieDataStore.js b/tools/Sandcastle/Presentation/Prototype/scripts/CookieDataStore.js index d58abee..a8add5a 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/CookieDataStore.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/CookieDataStore.js @@ -1,136 +1,136 @@ -
-
- function setCookie(name, value, expires, path, domain, secure) {
-
- var text = name + "=" + escape(value);
-
- if (expires) {
- var currentDate = new Date();
- var expireDate = new Date( currentDate.getTime() + expires*24*60*60*1000 );
- text = text + ";expires=" + expireDate.toGMTString();
- }
- if (path) text = text + ";path=" + path;
- if (domain) text = text + ";domain=" + domain;
- if (secure) text = text + ";secure";
-
- document.cookie = text;
- }
-
- function getCookie(name) {
-
- var text = document.cookie;
-
- var index = text.indexOf(name + "=");
- if (index < 0) return(null);
-
- var start = index + name.length + 1;
-
- var end = text.indexOf(";", start);
- if (end < 0) end = text.length;
-
- var value = unescape( text.substring(start, end) );
- return(value);
-
- }
-
- function removeCookie(name) {
- setCookie(name, "", -1);
- }
-
-
- // cookie data store
-
- function CookieDataStore(name) {
- this.name = name;
- this.load();
- }
-
- CookieDataStore.prototype.load = function () {
-
- // create a key/value store
- this.data = new Object();
-
- // get cookie text
- var text = getCookie(this.name);
- if (text == null) return;
-
- // populate the store using the cookie text
- var data = text.split(';');
-
- for (var i=0; i<data.length; i++) {
- var datum = data[i];
- var index = datum.indexOf('=');
- if (index > 0) {
- var key = datum.substring(0,index);
- var value = datum.substring(index+1);
- this.data[key] = value;
- }
- }
-
- }
-
- CookieDataStore.prototype.save = function () {
-
- // prepare a cookie string
- var text = "";
-
- // construct the string
- for (var key in this.data) {
- var datum = key + "=" + this.data[key];
- text = text + datum + ";";
- }
-
- // set it
- setCookie(this.name, text);
-
- }
-
- CookieDataStore.prototype.clear = function () {
- this.data = new Object();
- }
-
- CookieDataStore.prototype.set = function(key, value) {
- this.data[key] = value;
- }
-
- CookieDataStore.prototype.get = function(key) {
- return(this.data[key]);
- }
-
- CookieDataStore.prototype.remove = function(key) {
- delete(this.data[key]);
- }
-
- CookieDataStore.prototype.count = function() {
- var i = 0;
- for (var key in this.data) {
- i++;
- }
- return(i);
- }
-
- // The following logic needs to be re-factored out of this file
-
- function selectLanguage(value) {
-
- if (value == null) return;
-
- var selector = document.getElementById('languageSelector');
- if (selector == null) return;
-
- var options = selector.options;
- for(var i=0; i<options.length; i++) {
- if (options[i].value == value) {
- selector.selectedIndex = i;
- setLanguage(value);
- }
- }
-
- }
-
-
- function setLanguage(value) {
- var names = value.split(' ');
- toggleVisibleLanguage(names[1]);
- lfc.switchLanguage(names[0]);
+ + + function setCookie(name, value, expires, path, domain, secure) { + + var text = name + "=" + escape(value); + + if (expires) { + var currentDate = new Date(); + var expireDate = new Date( currentDate.getTime() + expires*24*60*60*1000 ); + text = text + ";expires=" + expireDate.toGMTString(); + } + if (path) text = text + ";path=" + path; + if (domain) text = text + ";domain=" + domain; + if (secure) text = text + ";secure"; + + document.cookie = text; + } + + function getCookie(name) { + + var text = document.cookie; + + var index = text.indexOf(name + "="); + if (index < 0) return(null); + + var start = index + name.length + 1; + + var end = text.indexOf(";", start); + if (end < 0) end = text.length; + + var value = unescape( text.substring(start, end) ); + return(value); + + } + + function removeCookie(name) { + setCookie(name, "", -1); + } + + + // cookie data store + + function CookieDataStore(name) { + this.name = name; + this.load(); + } + + CookieDataStore.prototype.load = function () { + + // create a key/value store + this.data = new Object(); + + // get cookie text + var text = getCookie(this.name); + if (text == null) return; + + // populate the store using the cookie text + var data = text.split(';'); + + for (var i=0; i<data.length; i++) { + var datum = data[i]; + var index = datum.indexOf('='); + if (index > 0) { + var key = datum.substring(0,index); + var value = datum.substring(index+1); + this.data[key] = value; + } + } + + } + + CookieDataStore.prototype.save = function () { + + // prepare a cookie string + var text = ""; + + // construct the string + for (var key in this.data) { + var datum = key + "=" + this.data[key]; + text = text + datum + ";"; + } + + // set it + setCookie(this.name, text); + + } + + CookieDataStore.prototype.clear = function () { + this.data = new Object(); + } + + CookieDataStore.prototype.set = function(key, value) { + this.data[key] = value; + } + + CookieDataStore.prototype.get = function(key) { + return(this.data[key]); + } + + CookieDataStore.prototype.remove = function(key) { + delete(this.data[key]); + } + + CookieDataStore.prototype.count = function() { + var i = 0; + for (var key in this.data) { + i++; + } + return(i); + } + + // The following logic needs to be re-factored out of this file + + function selectLanguage(value) { + + if (value == null) return; + + var selector = document.getElementById('languageSelector'); + if (selector == null) return; + + var options = selector.options; + for(var i=0; i<options.length; i++) { + if (options[i].value == value) { + selector.selectedIndex = i; + setLanguage(value); + } + } + + } + + + function setLanguage(value) { + var names = value.split(' '); + toggleVisibleLanguage(names[1]); + lfc.switchLanguage(names[0]); }
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/ElementCollection.js b/tools/Sandcastle/Presentation/Prototype/scripts/ElementCollection.js index c3ee0b1..24691ff 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/ElementCollection.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/ElementCollection.js @@ -1,91 +1,91 @@ -
- // a collection of elements whoose style can be changed based on the values of attributes
-
- function ElementCollection(parentId) {
-
- // get the tabbed region
- this.parent = document.getElementById(parentId);
-
-
- // get the children
- this.elements = new Array();
- if (this.parent.tagName == 'TABLE') {
- // special handling for tables
- var bodies = this.parent.tBodies;
- for(i=0; i<bodies.length; i++) {
- var rows = bodies[i].rows;
- for(j=0; j<rows.length; j++) {
- if (rows[j].nodeType == 1) this.elements.push(rows[j]);
- }
- }
- // this.elements = this.parent.tBodies[0].rows;
- } else {
- // all other cases
- var nodes = this.parent.childNodes;
- for(i=0; i<nodes.length; i++) {
- if (nodes[i].nodeType == 1) this.elements.push(nodes[i]);
- }
- }
-
- }
-
- ElementCollection.prototype.process = function(processFunction) {
- for(var i=0; i<this.elements.length; i++) {
- var element = this.elements[i];
- processFunction(element);
- }
- }
-
- ElementCollection.prototype.changeStyle = function(attributeName, attributeValue, styleName, styleValue) {
- for(var i=0; i<this.elements.length; i++) {
- var element = this.elements[i];
- var value = element.getAttribute(attributeName);
- if (value != null) {
- if (value == attributeValue) {
- element.style[styleName] = styleValue;
- }
- }
- }
- }
-
-
- ElementCollection.prototype.toggleStyle = function(attributeName, attributeValue, styleName, trueStyleValue, falseStyleValue) {
- for(var i=0; i<this.elements.length; i++) {
- var element = this.elements[i];
- if (element.nodeType != 1) continue;
- var value = element.getAttribute(attributeName);
- if (value == null) continue;
-
- if (value == attributeValue) {
- element.style[styleName] = trueStyleValue;
- } else {
- element.style[styleName] = falseStyleValue;
- }
- }
- }
-
- ElementCollection.prototype.toggleClass = function(attributeName, attributeValue, trueClass, falseClass) {
- for(var i=0; i<this.elements.length; i++) {
- var element = this.elements[i];
- if (element.nodeType != 1) continue;
- var value = element.getAttribute(attributeName);
- if (value == null) continue;
-
- if (value == attributeValue) {
- element.className = trueClass;
- } else {
- element.className = falseClass;
- }
- }
- }
-
- function useShowAttribute(element) {
- if (element == null) return;
- var value = element.getAttribute("show");
- if (value == null) return;
- if (value == "true") {
- element.style["display"] = "block";
- } else {
- element.style["display"] = "none";
- }
- }
+ + // a collection of elements whoose style can be changed based on the values of attributes + + function ElementCollection(parentId) { + + // get the tabbed region + this.parent = document.getElementById(parentId); + + + // get the children + this.elements = new Array(); + if (this.parent.tagName == 'TABLE') { + // special handling for tables + var bodies = this.parent.tBodies; + for(i=0; i<bodies.length; i++) { + var rows = bodies[i].rows; + for(j=0; j<rows.length; j++) { + if (rows[j].nodeType == 1) this.elements.push(rows[j]); + } + } + // this.elements = this.parent.tBodies[0].rows; + } else { + // all other cases + var nodes = this.parent.childNodes; + for(i=0; i<nodes.length; i++) { + if (nodes[i].nodeType == 1) this.elements.push(nodes[i]); + } + } + + } + + ElementCollection.prototype.process = function(processFunction) { + for(var i=0; i<this.elements.length; i++) { + var element = this.elements[i]; + processFunction(element); + } + } + + ElementCollection.prototype.changeStyle = function(attributeName, attributeValue, styleName, styleValue) { + for(var i=0; i<this.elements.length; i++) { + var element = this.elements[i]; + var value = element.getAttribute(attributeName); + if (value != null) { + if (value == attributeValue) { + element.style[styleName] = styleValue; + } + } + } + } + + + ElementCollection.prototype.toggleStyle = function(attributeName, attributeValue, styleName, trueStyleValue, falseStyleValue) { + for(var i=0; i<this.elements.length; i++) { + var element = this.elements[i]; + if (element.nodeType != 1) continue; + var value = element.getAttribute(attributeName); + if (value == null) continue; + + if (value == attributeValue) { + element.style[styleName] = trueStyleValue; + } else { + element.style[styleName] = falseStyleValue; + } + } + } + + ElementCollection.prototype.toggleClass = function(attributeName, attributeValue, trueClass, falseClass) { + for(var i=0; i<this.elements.length; i++) { + var element = this.elements[i]; + if (element.nodeType != 1) continue; + var value = element.getAttribute(attributeName); + if (value == null) continue; + + if (value == attributeValue) { + element.className = trueClass; + } else { + element.className = falseClass; + } + } + } + + function useShowAttribute(element) { + if (element == null) return; + var value = element.getAttribute("show"); + if (value == null) return; + if (value == "true") { + element.style["display"] = "block"; + } else { + element.style["display"] = "none"; + } + } diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/EventUtilities.js b/tools/Sandcastle/Presentation/Prototype/scripts/EventUtilities.js index f3536f5..1828a11 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/EventUtilities.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/EventUtilities.js @@ -1,23 +1,23 @@ -
- // attach a handler to a particular event on an element
- // in a browser-independent way
- function registerEventHandler (element, event, handler) {
- if (element.attachEvent) {
- // MS registration model
- element.attachEvent('on' + event, handler);
- } else if (element.addEventListener) {
- // NN (W4C) regisration model
- element.addEventListener(event, handler, false);
- } else {
- // old regisration model as fall-back
- element[event] = handler;
- }
- }
-
- // get a delegate that refers to an instance method
- function getInstanceDelegate (obj, methodName) {
- return( function(e) {
- e = e || window.event;
- return obj[methodName](e);
- } );
- }
+ + // attach a handler to a particular event on an element + // in a browser-independent way + function registerEventHandler (element, event, handler) { + if (element.attachEvent) { + // MS registration model + element.attachEvent('on' + event, handler); + } else if (element.addEventListener) { + // NN (W4C) regisration model + element.addEventListener(event, handler, false); + } else { + // old regisration model as fall-back + element[event] = handler; + } + } + + // get a delegate that refers to an instance method + function getInstanceDelegate (obj, methodName) { + return( function(e) { + e = e || window.event; + return obj[methodName](e); + } ); + } diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/LanguageFilter.js b/tools/Sandcastle/Presentation/Prototype/scripts/LanguageFilter.js index 70399a1..6972632 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/LanguageFilter.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/LanguageFilter.js @@ -1,23 +1,23 @@ -
-function LanguageFilterController() {
- this.tabCollections = new Array();
- this.blockCollections = new Array();
-}
-
-LanguageFilterController.prototype.registerTabbedArea = function(tabCollection, blockCollection) {
- this.tabCollections.push(tabCollection);
- this.blockCollections.push(blockCollection);
-}
-
-LanguageFilterController.prototype.switchLanguage = function(languageId) {
- for(var i=0; i<this.tabCollections.length; i++) {
- var tabs = this.tabCollections[i];
- var blocks = this.blockCollections[i];
- tabs.toggleClass('x-lang',languageId,'activeTab','tab');
- blocks.toggleStyle('x-lang',languageId,'display','block','none');
- }
-}
-
-LanguageFilterController.prototype.switchLanguage2 = function(languageId) {
-
-}
+ +function LanguageFilterController() { + this.tabCollections = new Array(); + this.blockCollections = new Array(); +} + +LanguageFilterController.prototype.registerTabbedArea = function(tabCollection, blockCollection) { + this.tabCollections.push(tabCollection); + this.blockCollections.push(blockCollection); +} + +LanguageFilterController.prototype.switchLanguage = function(languageId) { + for(var i=0; i<this.tabCollections.length; i++) { + var tabs = this.tabCollections[i]; + var blocks = this.blockCollections[i]; + tabs.toggleClass('x-lang',languageId,'activeTab','tab'); + blocks.toggleStyle('x-lang',languageId,'display','block','none'); + } +} + +LanguageFilterController.prototype.switchLanguage2 = function(languageId) { + +} diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/MemberFilter.js b/tools/Sandcastle/Presentation/Prototype/scripts/MemberFilter.js index 2ddf9bc..35d3476 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/MemberFilter.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/MemberFilter.js @@ -1,99 +1,99 @@ -
- // a member filter
-
- function MemberFilter () {
-
- // set up defaults
-
- this.subgroup = "all";
-
- this.public = true;
- this.protected = true;
- this.private = true;
-
- this.instance = true;
- this.static = true;
-
- this.declared = true;
- this.inherited = true;
-
- }
-
- MemberFilter.prototype.filterElement = function(element) {
-
- // get the data for the element
- if (element == null) return;
- var data = element.getAttribute("data");
- if (data == null) return;
- var datum = data.split("; ");
- if (datum.length != 4) return;
-
- // extract the relevent member attributes
- var subgroup = datum[0];
- var visibility = datum[1];
- var binding = datum[2];
- var origin = datum[3];
-
- // determine whether to show the member
- var show = true;
- if (this[visibility] == false) show = false;
- if (this[binding] == false) show = false;
- if (this[origin] == false) show = false;
- if ((this.subgroup != null) && (this.subgroup != 'all')) {
- if (subgroup != this.subgroup) show = false;
- }
-
- // show or hide the element
- if (show) {
- // either block or table-row, depending on browswer, so use default
- element.style["display"] = "";
- } else {
- element.style["display"] = "none";
- }
-
- }
-
- // a type filter
-
- function TypeFilter () {
-
- // set up defaults
-
- this.subgroup = "all";
-
- this.public = true;
- this.internal = true;
-
- }
-
- TypeFilter.prototype.filterElement = function(element) {
-
- // get the data for the element
- if (element == null) return;
- var data = element.getAttribute("data");
- if (data == null) return;
- var datum = data.split("; ");
- if (datum.length != 2) return;
-
- // extract the relevent member attributes
- var subgroup = datum[0];
- var visibility = datum[1];
-
- // determine whether to show the member
- var show = true;
- if (this[visibility] == false) show = false;
- if ((this.subgroup != null) && (this.subgroup != 'all')) {
- if (subgroup != this.subgroup) show = false;
- }
-
- // show or hide the element
- if (show) {
- // either block or table-row, depending on browser, so use default
- element.style["display"] = "";
- } else {
- element.style["display"] = "none";
- }
-
- }
-
+ + // a member filter + + function MemberFilter () { + + // set up defaults + + this.subgroup = "all"; + + this.public = true; + this.protected = true; + this.private = true; + + this.instance = true; + this.static = true; + + this.declared = true; + this.inherited = true; + + } + + MemberFilter.prototype.filterElement = function(element) { + + // get the data for the element + if (element == null) return; + var data = element.getAttribute("data"); + if (data == null) return; + var datum = data.split("; "); + if (datum.length != 4) return; + + // extract the relevent member attributes + var subgroup = datum[0]; + var visibility = datum[1]; + var binding = datum[2]; + var origin = datum[3]; + + // determine whether to show the member + var show = true; + if (this[visibility] == false) show = false; + if (this[binding] == false) show = false; + if (this[origin] == false) show = false; + if ((this.subgroup != null) && (this.subgroup != 'all')) { + if (subgroup != this.subgroup) show = false; + } + + // show or hide the element + if (show) { + // either block or table-row, depending on browswer, so use default + element.style["display"] = ""; + } else { + element.style["display"] = "none"; + } + + } + + // a type filter + + function TypeFilter () { + + // set up defaults + + this.subgroup = "all"; + + this.public = true; + this.internal = true; + + } + + TypeFilter.prototype.filterElement = function(element) { + + // get the data for the element + if (element == null) return; + var data = element.getAttribute("data"); + if (data == null) return; + var datum = data.split("; "); + if (datum.length != 2) return; + + // extract the relevent member attributes + var subgroup = datum[0]; + var visibility = datum[1]; + + // determine whether to show the member + var show = true; + if (this[visibility] == false) show = false; + if ((this.subgroup != null) && (this.subgroup != 'all')) { + if (subgroup != this.subgroup) show = false; + } + + // show or hide the element + if (show) { + // either block or table-row, depending on browser, so use default + element.style["display"] = ""; + } else { + element.style["display"] = "none"; + } + + } +
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/SplitScreen.js b/tools/Sandcastle/Presentation/Prototype/scripts/SplitScreen.js index e7b9d06..0e15d2d 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/SplitScreen.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/SplitScreen.js @@ -1,35 +1,35 @@ -
- function SplitScreen (nonScrollingRegionId, scrollingRegionId) {
-
- // store references to the two regions
- this.nonScrollingRegion = document.getElementById(nonScrollingRegionId);
- this.scrollingRegion = document.getElementById(scrollingRegionId);
-
- // set the position model for each region
- this.nonScrollingRegion.style.position = "fixed";
- this.scrollingRegion.style.position = "absolute";
-
- // fix the size of the scrolling region
- this.resize(null);
-
- // add an event handler to resize the scrolling region when the window is resized
- registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize"));
-
- }
-
- SplitScreen.prototype.resize = function(e) {
-
- if(navigator.userAgent.indexOf("Firefox")==-1)
- {
- var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight;
-
- if(height > 0) this.scrollingRegion.style.height = height + "px";
- else this.scrollingRegion.style.height = 0 + "px";
-
- this.scrollingRegion.style.width = document.body.clientWidth + "px";
- }
-
-
- // update the vertical offset of the scrolling region to account for the height of the non-scrolling region
- this.scrollingRegion.style.top = this.nonScrollingRegion.offsetHeight + "px";
- }
+ + function SplitScreen (nonScrollingRegionId, scrollingRegionId) { + + // store references to the two regions + this.nonScrollingRegion = document.getElementById(nonScrollingRegionId); + this.scrollingRegion = document.getElementById(scrollingRegionId); + + // set the position model for each region + this.nonScrollingRegion.style.position = "fixed"; + this.scrollingRegion.style.position = "absolute"; + + // fix the size of the scrolling region + this.resize(null); + + // add an event handler to resize the scrolling region when the window is resized + registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize")); + + } + + SplitScreen.prototype.resize = function(e) { + + if(navigator.userAgent.indexOf("Firefox")==-1) + { + var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight; + + if(height > 0) this.scrollingRegion.style.height = height + "px"; + else this.scrollingRegion.style.height = 0 + "px"; + + this.scrollingRegion.style.width = document.body.clientWidth + "px"; + } + + + // update the vertical offset of the scrolling region to account for the height of the non-scrolling region + this.scrollingRegion.style.top = this.nonScrollingRegion.offsetHeight + "px"; + } diff --git a/tools/Sandcastle/Presentation/Prototype/scripts/StyleUtilities.js b/tools/Sandcastle/Presentation/Prototype/scripts/StyleUtilities.js index 45ab1f2..23892de 100644 --- a/tools/Sandcastle/Presentation/Prototype/scripts/StyleUtilities.js +++ b/tools/Sandcastle/Presentation/Prototype/scripts/StyleUtilities.js @@ -1,50 +1,50 @@ -
- function getStyleDictionary() {
-
- var dictionary = new Array();
-
- // iterate through stylesheets
- var sheets = document.styleSheets;
- for(var i=0; i<sheets.length;i++) {
- var sheet = sheets[i];
-
- // ignore sheets at ms-help Urls
- if (sheet.href.substr(0,8) == 'ms-help:') continue;
-
- // get sheet rules
- var rules = sheet.cssRules;
- if (rules == null) rules = sheet.rules;
-
- // iterate through rules
- for(j=0; j<rules.length; j++) {
- var rule = rules[j];
-
- // add rule to dictionary
- dictionary[rule.selectorText.toLowerCase()] = rule.style;
-
- }
- }
-
- return(dictionary);
-
- }
-
- function toggleVisibleLanguage(id) {
-
- if (id == 'cs') {
- sd['span.cs'].display = 'inline';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'none';
- } else if (id == 'vb') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'inline';
- sd['span.cpp'].display = 'none';
- } else if (id == 'cpp') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'inline';
- } else {
- }
-
- }
-
+ + function getStyleDictionary() { + + var dictionary = new Array(); + + // iterate through stylesheets + var sheets = document.styleSheets; + for(var i=0; i<sheets.length;i++) { + var sheet = sheets[i]; + + // ignore sheets at ms-help Urls + if (sheet.href.substr(0,8) == 'ms-help:') continue; + + // get sheet rules + var rules = sheet.cssRules; + if (rules == null) rules = sheet.rules; + + // iterate through rules + for(j=0; j<rules.length; j++) { + var rule = rules[j]; + + // add rule to dictionary + dictionary[rule.selectorText.toLowerCase()] = rule.style; + + } + } + + return(dictionary); + + } + + function toggleVisibleLanguage(id) { + + if (id == 'cs') { + sd['span.cs'].display = 'inline'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'none'; + } else if (id == 'vb') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'inline'; + sd['span.cpp'].display = 'none'; + } else if (id == 'cpp') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'inline'; + } else { + } + + } + diff --git a/tools/Sandcastle/Presentation/Prototype/styles/presentation.css b/tools/Sandcastle/Presentation/Prototype/styles/presentation.css index a63dcff..97549db 100644 --- a/tools/Sandcastle/Presentation/Prototype/styles/presentation.css +++ b/tools/Sandcastle/Presentation/Prototype/styles/presentation.css @@ -1,451 +1,451 @@ -/* page style */
-
-body {
- margin: 0;
- background-color: #FFFFFF;
- padding: 0;
- font-size: 8.5pt;
- font-family: verdana, arial, sans-serif;
- color: #000000;
- overflow: hidden;
-}
-
-html>body {
- margin: 0;
- background-color: #FFFFFF;
- padding: 0;
- font-size: 8.5pt;
- font-family: verdana, arial, sans-serif;
- color: #000000;
- overflow: auto;
-}
-
-table {
- /* this is a trick to force tables to inherit the body font size */
- font-size: 100%;
-}
-
-/* non-scrolling (control) region style */
-
-div#control {
- margin: 0;
- background-color: #D4DFFF;
- padding: 4px;
- width: 100%;
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- z-index: 2;
-}
-
-span.productTitle {
- font-size: 80%;
-}
-
-span.topicTitle {
- font-size: 140%;
- font-weight: bold;
- color: #003399;
-}
-
-span#chickenFeet {
- float: left;
-}
-
-span#languageFilter {
- float: right;
- height: 1px;
- max-height: 1px;
- vertical-align: bottom;
- overflow: visible;
-}
-
-/* scrolling (content) region style */
-
-div#main
-{
- clear: both;
- margin: 0;
- padding: 1em;
- width: 100%;
- z-index: 1;
- overflow: auto;
-}
-
-/* sections */
-
-div#header {
- font-size: 80%;
- color: #666666;
- margin-bottom: 0.5em;
-}
-
-div.summary {
- margin-top: 0em;
- margin-bottom: 1em;
-}
-
-div.section {
- margin-bottom: 1em;
-}
-
-div.sectionTitle {
- display: inline;
- font-size: 120%;
- font-weight: bold;
- color: #003399;
-}
-
-div.sectionContent {
- margin-top: 0.2em;
-}
-
-span.subsectionTitle {
- font-weight: bold;
-}
-
-div#footer {
- margin-top: 1em;
- border-top: thin solid #003399;
- padding-top: 0.5em;
-}
-
-div#footer p {
- margin-top: 0.2em;
- margin-bottom: 0.2em;
-}
-
-/* authored content (block) */
-
-p {
- margin-top: 1em;
- margin-bottom: 1em;
-}
-
-dl, ul, ol {
- margin-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-div.code
-{
- clear: both;
- width: 100%;
- background: #EFEFF7;
- padding: 0.4em;
- font-family: "Andale Mono", "Courier New", Courier, monospace;
- font-size: 9pt;
- margin-bottom: 1em;
-}
-
-pre {
- margin: 0;
- padding: 0;
- font-family: "Andale Mono", "Courier New", Courier, monospace;
-}
-
-table.authoredTable {
- table-layout: fixed;
- width: 100%;
- margin-bottom: 1em;
-}
-
-table.authoredTable th {
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
-}
-
-table.authoredTable td {
- border-bottom-style: solid;
- border-bottom-color: #C8CDDE;
- border-bottom-width: 1px;
- background: #F7F7FF;
- padding: 0.2em;
- vertical-align: top;
-}
-
-div.alert {
- border: 1px solid #C8CDDE;
- background: #F7F7FF;
-}
-
-div.media {
- text-align: center;
- margin-bottom: 1em;
-}
-
-
-/* authored content (inline) */
-
-span.keyword {
- font-weight: bold;
-}
-
-span.code {
- font-family: "Andale Mono", "Courier New", Courier, monospace;
- font-size: 110%;
- color: #000066;
-}
-
-/* auto-generated controls */
-
-div.langTabs {
- /*width: 100%;*/
-}
-
-div.langTab {
- float: left;
- width: 15%;
- border-top: 1px solid #C8CDDE;
- border-left: 1px solid #C8CDDE;
- border-right: 1px solid #C8CDDE;
- background: #F7F7FF;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: normal;
-}
-
-div.activeLangTab {
- float: left;
- width: 15%;
- border-top: 1px solid #C8CDDE;
- border-left: 1px solid #C8CDDE;
- border-right: 1px solid #C8CDDE;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
-}
-
-table.members {
- /* table-layout: fixed; */
- width: 100%;
-}
-
-table.members th.iconColumn {
- width: 60px;
-}
-
-table.members th.nameColumn {
- width: 40%;
-}
-
-table.members th.descriptionColumn {
- width: 60%;
-}
-
-table.members th {
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
-}
-
-table.members td {
- border-bottom-style: solid;
- border-bottom-color: #C8CDDE;
- border-bottom-width: 1px;
- background: #F7F7FF;
- padding: 0.2em;
- vertical-align: top;
- overflow: hidden;
-}
-
-table.exceptions {
- table-layout: fixed;
- width: 100%;
-}
-
-
-table.exceptions th.exceptionNameColumn {
- width: 40%;
-}
-
-table.exceptions th.exceptionConditionColumn {
- width: 60%;
-}
-
-table.exceptions th {
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
-}
-
-table.exceptions td {
- border-bottom-style: solid;
- border-bottom-color: #C8CDDE;
- border-bottom-width: 1px;
- background: #F7F7FF;
- padding: 0.2em;
- vertical-align: top;
-}
-
-table.permissions {
- table-layout: fixed;
- width: 100%;
-}
-
-
-table.permissions th.permissionNameColumn {
- width: 40%;
-}
-
-table.permissions th.permissionConditionColumn {
- width: 60%;
-}
-
-table.permissions th {
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
-}
-
-table.permissions td {
- border-bottom-style: solid;
- border-bottom-color: #C8CDDE;
- border-bottom-width: 1px;
- background: #F7F7FF;
- padding: 0.2em;
- vertical-align: top;
-}
-
-span.obsolete {
- color: red;
-}
-
-span.cs {
- display: inline;
-}
-
-span.vb {
- display: none;
-}
-
-span.cpp {
- display: none;
-}
-
-span.nu
-{
- display: none;
-}
-
-/* syntax styling */
-
-div.code span.identifier {
- font-weight: bold;
-}
-
-div.code span.keyword {
- color: green;
-}
-
-div.code span.parameter {
- font-style: italic;
- color: purple;
-}
-
-div.code span.literal {
- color: purple;
-}
-
-div.code span.comment {
- color: red;
-}
-
-span.foreignPhrase {
- font-style: italic;
-}
-
-span.placeholder {
- font-style: italic;
-}
-
-span.parameter
-{
- font-style: italic;
-}
-
-span.typeparameter
-{
- font-style: italic;
-}
-
-a {
- color: blue;
- text-decoration: none;
-}
-
-a:hover {
- text-decoration: underline;
-}
-
-MSHelp\:link {
- color: blue;
- hoverColor: #3366ff;
-}
-
-span.nolink {
- font-weight: bold;
-}
-
-span.selflink {
- font-weight: bold;
-}
-
-table.filter {
- table-layout: fixed;
-}
-
-tr.tabs td.tab {
- width: 10em;
- background: #F7F7FF;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: normal;
- overflow: hidden;
- cursor: pointer;
-}
-
-tr.tabs td.activeTab {
- width: 10em;
- background: #EFEFF7;
- padding: 0.2em;
- text-align: left;
- color: #000066;
- font-weight: bold;
- overflow: hidden;
-}
-
-td.line {
- background: #EFEFF7;
-}
-
-dt {
- font-weight: bold;
- margin-top: 10px;
- margin-left: 10px;
-}
+/* page style */ + +body { + margin: 0; + background-color: #FFFFFF; + padding: 0; + font-size: 8.5pt; + font-family: verdana, arial, sans-serif; + color: #000000; + overflow: hidden; +} + +html>body { + margin: 0; + background-color: #FFFFFF; + padding: 0; + font-size: 8.5pt; + font-family: verdana, arial, sans-serif; + color: #000000; + overflow: auto; +} + +table { + /* this is a trick to force tables to inherit the body font size */ + font-size: 100%; +} + +/* non-scrolling (control) region style */ + +div#control { + margin: 0; + background-color: #D4DFFF; + padding: 4px; + width: 100%; + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1px; + z-index: 2; +} + +span.productTitle { + font-size: 80%; +} + +span.topicTitle { + font-size: 140%; + font-weight: bold; + color: #003399; +} + +span#chickenFeet { + float: left; +} + +span#languageFilter { + float: right; + height: 1px; + max-height: 1px; + vertical-align: bottom; + overflow: visible; +} + +/* scrolling (content) region style */ + +div#main +{ + clear: both; + margin: 0; + padding: 1em; + width: 100%; + z-index: 1; + overflow: auto; +} + +/* sections */ + +div#header { + font-size: 80%; + color: #666666; + margin-bottom: 0.5em; +} + +div.summary { + margin-top: 0em; + margin-bottom: 1em; +} + +div.section { + margin-bottom: 1em; +} + +div.sectionTitle { + display: inline; + font-size: 120%; + font-weight: bold; + color: #003399; +} + +div.sectionContent { + margin-top: 0.2em; +} + +span.subsectionTitle { + font-weight: bold; +} + +div#footer { + margin-top: 1em; + border-top: thin solid #003399; + padding-top: 0.5em; +} + +div#footer p { + margin-top: 0.2em; + margin-bottom: 0.2em; +} + +/* authored content (block) */ + +p { + margin-top: 1em; + margin-bottom: 1em; +} + +dl, ul, ol { + margin-top: 0.5em; + margin-bottom: 0.5em; +} + +div.code +{ + clear: both; + width: 100%; + background: #EFEFF7; + padding: 0.4em; + font-family: "Andale Mono", "Courier New", Courier, monospace; + font-size: 9pt; + margin-bottom: 1em; +} + +pre { + margin: 0; + padding: 0; + font-family: "Andale Mono", "Courier New", Courier, monospace; +} + +table.authoredTable { + table-layout: fixed; + width: 100%; + margin-bottom: 1em; +} + +table.authoredTable th { + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1px; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; +} + +table.authoredTable td { + border-bottom-style: solid; + border-bottom-color: #C8CDDE; + border-bottom-width: 1px; + background: #F7F7FF; + padding: 0.2em; + vertical-align: top; +} + +div.alert { + border: 1px solid #C8CDDE; + background: #F7F7FF; +} + +div.media { + text-align: center; + margin-bottom: 1em; +} + + +/* authored content (inline) */ + +span.keyword { + font-weight: bold; +} + +span.code { + font-family: "Andale Mono", "Courier New", Courier, monospace; + font-size: 110%; + color: #000066; +} + +/* auto-generated controls */ + +div.langTabs { + /*width: 100%;*/ +} + +div.langTab { + float: left; + width: 15%; + border-top: 1px solid #C8CDDE; + border-left: 1px solid #C8CDDE; + border-right: 1px solid #C8CDDE; + background: #F7F7FF; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: normal; +} + +div.activeLangTab { + float: left; + width: 15%; + border-top: 1px solid #C8CDDE; + border-left: 1px solid #C8CDDE; + border-right: 1px solid #C8CDDE; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; +} + +table.members { + /* table-layout: fixed; */ + width: 100%; +} + +table.members th.iconColumn { + width: 60px; +} + +table.members th.nameColumn { + width: 40%; +} + +table.members th.descriptionColumn { + width: 60%; +} + +table.members th { + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1px; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; +} + +table.members td { + border-bottom-style: solid; + border-bottom-color: #C8CDDE; + border-bottom-width: 1px; + background: #F7F7FF; + padding: 0.2em; + vertical-align: top; + overflow: hidden; +} + +table.exceptions { + table-layout: fixed; + width: 100%; +} + + +table.exceptions th.exceptionNameColumn { + width: 40%; +} + +table.exceptions th.exceptionConditionColumn { + width: 60%; +} + +table.exceptions th { + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1px; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; +} + +table.exceptions td { + border-bottom-style: solid; + border-bottom-color: #C8CDDE; + border-bottom-width: 1px; + background: #F7F7FF; + padding: 0.2em; + vertical-align: top; +} + +table.permissions { + table-layout: fixed; + width: 100%; +} + + +table.permissions th.permissionNameColumn { + width: 40%; +} + +table.permissions th.permissionConditionColumn { + width: 60%; +} + +table.permissions th { + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1px; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; +} + +table.permissions td { + border-bottom-style: solid; + border-bottom-color: #C8CDDE; + border-bottom-width: 1px; + background: #F7F7FF; + padding: 0.2em; + vertical-align: top; +} + +span.obsolete { + color: red; +} + +span.cs { + display: inline; +} + +span.vb { + display: none; +} + +span.cpp { + display: none; +} + +span.nu +{ + display: none; +} + +/* syntax styling */ + +div.code span.identifier { + font-weight: bold; +} + +div.code span.keyword { + color: green; +} + +div.code span.parameter { + font-style: italic; + color: purple; +} + +div.code span.literal { + color: purple; +} + +div.code span.comment { + color: red; +} + +span.foreignPhrase { + font-style: italic; +} + +span.placeholder { + font-style: italic; +} + +span.parameter +{ + font-style: italic; +} + +span.typeparameter +{ + font-style: italic; +} + +a { + color: blue; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +MSHelp\:link { + color: blue; + hoverColor: #3366ff; +} + +span.nolink { + font-weight: bold; +} + +span.selflink { + font-weight: bold; +} + +table.filter { + table-layout: fixed; +} + +tr.tabs td.tab { + width: 10em; + background: #F7F7FF; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: normal; + overflow: hidden; + cursor: pointer; +} + +tr.tabs td.activeTab { + width: 10em; + background: #EFEFF7; + padding: 0.2em; + text-align: left; + color: #000066; + font-weight: bold; + overflow: hidden; +} + +td.line { + background: #EFEFF7; +} + +dt { + font-weight: bold; + margin-top: 10px; + margin-left: 10px; +} diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/main_conceptual.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/main_conceptual.xsl index c3498ab..1c172bf 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/main_conceptual.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/main_conceptual.xsl @@ -1,253 +1,253 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp" >
-
- <xsl:output method="xml" indent="no" encoding="utf-8" />
-
- <xsl:include href="utilities_dduexml.xsl" />
-
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
-
- <xsl:template match="/document">
- <html>
- <head>
- <title><xsl:call-template name="topicTitle"/></title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
- <script type="text/javascript">
- <xsl:text>registerEventHandler(window, 'load', function() { var ss = new SplitScreen('control', 'main'); });</xsl:text>
- </script>
- <xsl:call-template name="control"/>
- <xsl:call-template name="main"/>
- </body>
- </html>
- </xsl:template>
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>ElementCollection.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template name="insertMetadata">
- <xml>
- <!-- mshelp metadata -->
-
- <!-- link index -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
-
- <!-- authored K -->
- <xsl:for-each select="/document/metadata/keyword[@index='K']">
- <MSHelp:Keyword Index="K">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='K']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored F -->
- <xsl:for-each select="/document/metadata/keyword[@index='F']">
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='F']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored B -->
- <xsl:for-each select="/document/metadata/keyword[@index='B']">
- <MSHelp:Keyword Index="B">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='B']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- Topic version -->
- <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" />
-
- <!-- Asset ID -->
- <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" />
-
- <!-- Abstract -->
- <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" />
- <xsl:if test="(string-length($abstract) < 255) and (string-length($abstract) > 0)">
- <MSHelp:Attr Name="Abstract" Value="{$abstract}" />
- </xsl:if>
-
- <!-- authored attributes -->
- <xsl:for-each select="/document/metadata/attribute">
- <MSHelp:Attr Name="{@name}" Value="{text()}" />
- </xsl:for-each>
-
- </xml>
- </xsl:template>
-
- <!-- document body -->
-
- <!-- control window -->
-
- <xsl:template name="control">
- <div id="control">
- <span class="productTitle"><include item="productTitle" /></span><br/>
- <span class="topicTitle"><xsl:call-template name="topicTitle" /></span><br/>
-<!--
- <div id="toolbar">
- <span class="chickenFeet"><xsl:call-template name="chickenFeet" /></span>
- </div>
--->
- </div>
- </xsl:template>
-
- <!-- Title in topic -->
-
- <xsl:template name="topicTitle">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/metadata/title)">
- <xsl:value-of select="normalize-space(/document/metadata/title)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="main">
- <xsl:call-template name="head" />
- <xsl:call-template name="body" />
- <xsl:call-template name="foot" />
- </div>
- </xsl:template>
-
- <xsl:template name="head">
- <include item="header" />
- </xsl:template>
-
- <xsl:template name="body">
- <xsl:apply-templates select="topic" />
- </xsl:template>
-
- <!-- sections that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:title">
- <!-- don't print title -->
- </xsl:template>
-
- <xsl:template match="ddue:introduction">
- <xsl:apply-templates select="@address" />
- <div class="introduction">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:parameters">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:returnValue">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:exceptions">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:relatedSections">
- <div class="section">
- <div class="sectionTitle"><include item="relatedSectionsTitle" /></div>
- <div class="sectionContent">
- <xsl:apply-templates />
- </div>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:relatedTopics">
- <xsl:if test="count(*) > 0">
- <div class="section">
- <div class="sectionTitle"><include item="relatedTopicsTitle" /></div>
- <div class="sectionContent">
- <xsl:for-each select="*">
- <xsl:apply-templates select="." />
- <br />
- </xsl:for-each>
- </div>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="Example" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <include item="footer" />
- </xsl:template>
-
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" > + + <xsl:output method="xml" indent="no" encoding="utf-8" /> + + <xsl:include href="utilities_dduexml.xsl" /> + + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + + <xsl:template match="/document"> + <html> + <head> + <title><xsl:call-template name="topicTitle"/></title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + <script type="text/javascript"> + <xsl:text>registerEventHandler(window, 'load', function() { var ss = new SplitScreen('control', 'main'); });</xsl:text> + </script> + <xsl:call-template name="control"/> + <xsl:call-template name="main"/> + </body> + </html> + </xsl:template> + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>ElementCollection.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + </xsl:template> + + <xsl:template name="insertMetadata"> + <xml> + <!-- mshelp metadata --> + + <!-- link index --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + + <!-- authored K --> + <xsl:for-each select="/document/metadata/keyword[@index='K']"> + <MSHelp:Keyword Index="K"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='K']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored F --> + <xsl:for-each select="/document/metadata/keyword[@index='F']"> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='F']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored B --> + <xsl:for-each select="/document/metadata/keyword[@index='B']"> + <MSHelp:Keyword Index="B"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='B']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- Topic version --> + <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" /> + + <!-- Asset ID --> + <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" /> + + <!-- Abstract --> + <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" /> + <xsl:if test="(string-length($abstract) < 255) and (string-length($abstract) > 0)"> + <MSHelp:Attr Name="Abstract" Value="{$abstract}" /> + </xsl:if> + + <!-- authored attributes --> + <xsl:for-each select="/document/metadata/attribute"> + <MSHelp:Attr Name="{@name}" Value="{text()}" /> + </xsl:for-each> + + </xml> + </xsl:template> + + <!-- document body --> + + <!-- control window --> + + <xsl:template name="control"> + <div id="control"> + <span class="productTitle"><include item="productTitle" /></span><br/> + <span class="topicTitle"><xsl:call-template name="topicTitle" /></span><br/> +<!-- + <div id="toolbar"> + <span class="chickenFeet"><xsl:call-template name="chickenFeet" /></span> + </div> +--> + </div> + </xsl:template> + + <!-- Title in topic --> + + <xsl:template name="topicTitle"> + <xsl:choose> + <xsl:when test="normalize-space(/document/metadata/title)"> + <xsl:value-of select="normalize-space(/document/metadata/title)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- main window --> + + <xsl:template name="main"> + <div id="main"> + <xsl:call-template name="head" /> + <xsl:call-template name="body" /> + <xsl:call-template name="foot" /> + </div> + </xsl:template> + + <xsl:template name="head"> + <include item="header" /> + </xsl:template> + + <xsl:template name="body"> + <xsl:apply-templates select="topic" /> + </xsl:template> + + <!-- sections that behave differently in conceptual and reference --> + + <xsl:template match="ddue:title"> + <!-- don't print title --> + </xsl:template> + + <xsl:template match="ddue:introduction"> + <xsl:apply-templates select="@address" /> + <div class="introduction"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="ddue:parameters"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:returnValue"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:exceptions"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:relatedSections"> + <div class="section"> + <div class="sectionTitle"><include item="relatedSectionsTitle" /></div> + <div class="sectionContent"> + <xsl:apply-templates /> + </div> + </div> + </xsl:template> + + <xsl:template match="ddue:relatedTopics"> + <xsl:if test="count(*) > 0"> + <div class="section"> + <div class="sectionTitle"><include item="relatedTopicsTitle" /></div> + <div class="sectionContent"> + <xsl:for-each select="*"> + <xsl:apply-templates select="." /> + <br /> + </xsl:for-each> + </div> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="Example" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + <!-- Footer stuff --> + + <xsl:template name="foot"> + <include item="footer" /> + </xsl:template> + + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/main_reference.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/main_reference.xsl index 2ad2de4..f993a90 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/main_reference.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/main_reference.xsl @@ -1,220 +1,220 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp" >
-
- <!-- stuff specific to comments authored in DDUEXML -->
-
- <xsl:include href="utilities_reference.xsl" />
- <xsl:include href="utilities_dduexml.xsl" />
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" />
-
- <xsl:template name="body">
-
- <!--internalOnly boilerplate -->
- <xsl:call-template name="internalOnly"/>
- <!-- obsolete boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:call-template name="obsoleteSection" />
- </xsl:if>
- <!-- HostProtectionAttribute boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <p><include item="hostProtectionAttributeLong" /></p>
- </xsl:if>
- <!-- summary -->
- <span data="authoredSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary" />
- </span>
- <!-- syntax -->
- <xsl:apply-templates select="/document/syntax" />
- <xsl:apply-templates select="/document/usyntax" />
- <!-- generic templates -->
- <xsl:apply-templates select="/document/templates" />
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/templates" />
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/reference/returns" />
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$tgroup='list' and $tsubgroup='namespaces'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='member'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- </xsl:choose>
- <!-- remarks -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" />
- <!-- example -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" />
- <!-- other comment sections -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSaftey" />
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:notesForImplementers" />
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:notesForCallers" />
- <!-- permissions -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:permissions" />
- <!-- exceptions -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <!-- interface implementors -->
- <xsl:apply-templates select="/document/reference/implementors" />
- <!-- versioning -->
- <xsl:apply-templates select="/document/reference/versions" />
- <!-- see also -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:relatedTopics" />
- <!-- assembly information -->
- <xsl:apply-templates select="/document/reference/containers/library" />
-
- </xsl:template>
-
- <xsl:template name="obsoleteSection">
- <p>
- <include item="obsoleteLong" />
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity">
- <xsl:text> </xsl:text>
- <include item="nonobsoleteAlternative">
- <parameter>
- <xsl:apply-templates select="ddue:codeEntityReference" />
- </parameter>
- </include>
- </xsl:for-each>
- </p>
- </xsl:template>
-
- <xsl:template name="internalOnly">
- <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly">
- <div id="internalonly" class="seeAlsoNoToggleSection">
- <p/>
- <include item="internalOnly" />
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="templates">
- <div id="genericParameters">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="template">
- <xsl:variable name="templateName" select="@name" />
- <dl paramName="{$templateName}">
- <dt>
- <span class="parameter"><xsl:value-of select="$templateName"/></span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$templateName]/ddue:content" />
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <span data="authoredParameterSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
- </span>
- </xsl:template>
-
- <xsl:template match="returns">
- <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue)">
- <div id="returns">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include>
- <xsl:attribute name="item">
- <xsl:value-of select="$subgroup" />
- <xsl:text>ValueTitle</xsl:text>
- </xsl:attribute>
- </include>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="getReturnsDescription" />
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <span data="authoredValueSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue" />
- </span>
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <span data="memberAuthoredSummary">
- <xsl:apply-templates select="ddue:summary/ddue:para/node()" />
- </span>
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
- <xsl:if test="ddue:internalOnly">
- <include item="infraStructure" />
- </xsl:if>
- </xsl:template>
-
- <!-- DDUEXML elements that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:exceptions">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="ddue:exception">
- <table class="exceptions">
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="ddue:exception">
- <tr>
- <td><xsl:apply-templates select="ddue:codeEntityReference" /><br /></td>
- <td><xsl:apply-templates select="ddue:content" /><br /></td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:permissions">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="permissionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <ul>
- <xsl:for-each select="ddue:permission">
- <li>
- <xsl:apply-templates select="ddue:codeEntityReference" />
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="ddue:content" />
- </li>
- </xsl:for-each>
- </ul>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <xsl:apply-templates />
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" > + + <!-- stuff specific to comments authored in DDUEXML --> + + <xsl:include href="utilities_reference.xsl" /> + <xsl:include href="utilities_dduexml.xsl" /> + + <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" /> + + <xsl:template name="body"> + + <!--internalOnly boilerplate --> + <xsl:call-template name="internalOnly"/> + <!-- obsolete boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:call-template name="obsoleteSection" /> + </xsl:if> + <!-- HostProtectionAttribute boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <p><include item="hostProtectionAttributeLong" /></p> + </xsl:if> + <!-- summary --> + <span data="authoredSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary" /> + </span> + <!-- syntax --> + <xsl:apply-templates select="/document/syntax" /> + <xsl:apply-templates select="/document/usyntax" /> + <!-- generic templates --> + <xsl:apply-templates select="/document/templates" /> + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/templates" /> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/reference/returns" /> + <!-- members --> + <xsl:choose> + <xsl:when test="$tgroup='list' and $tsubgroup='namespaces'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='member'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + </xsl:choose> + <!-- remarks --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" /> + <!-- example --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" /> + <!-- other comment sections --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSaftey" /> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:notesForImplementers" /> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:notesForCallers" /> + <!-- permissions --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:permissions" /> + <!-- exceptions --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" /> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <!-- interface implementors --> + <xsl:apply-templates select="/document/reference/implementors" /> + <!-- versioning --> + <xsl:apply-templates select="/document/reference/versions" /> + <!-- see also --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:relatedTopics" /> + <!-- assembly information --> + <xsl:apply-templates select="/document/reference/containers/library" /> + + </xsl:template> + + <xsl:template name="obsoleteSection"> + <p> + <include item="obsoleteLong" /> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity"> + <xsl:text> </xsl:text> + <include item="nonobsoleteAlternative"> + <parameter> + <xsl:apply-templates select="ddue:codeEntityReference" /> + </parameter> + </include> + </xsl:for-each> + </p> + </xsl:template> + + <xsl:template name="internalOnly"> + <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly"> + <div id="internalonly" class="seeAlsoNoToggleSection"> + <p/> + <include item="internalOnly" /> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="templates"> + <div id="genericParameters"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="template"> + <xsl:variable name="templateName" select="@name" /> + <dl paramName="{$templateName}"> + <dt> + <span class="parameter"><xsl:value-of select="$templateName"/></span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$templateName]/ddue:content" /> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <span data="authoredParameterSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" /> + </span> + </xsl:template> + + <xsl:template match="returns"> + <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue)"> + <div id="returns"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include> + <xsl:attribute name="item"> + <xsl:value-of select="$subgroup" /> + <xsl:text>ValueTitle</xsl:text> + </xsl:attribute> + </include> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="getReturnsDescription" /> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:if> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <span data="authoredValueSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue" /> + </span> + </xsl:template> + + <xsl:template name="getElementDescription"> + <span data="memberAuthoredSummary"> + <xsl:apply-templates select="ddue:summary/ddue:para/node()" /> + </span> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + <xsl:if test="ddue:internalOnly"> + <include item="infraStructure" /> + </xsl:if> + </xsl:template> + + <!-- DDUEXML elements that behave differently in conceptual and reference --> + + <xsl:template match="ddue:exceptions"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="ddue:exception"> + <table class="exceptions"> + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="ddue:exception"> + <tr> + <td><xsl:apply-templates select="ddue:codeEntityReference" /><br /></td> + <td><xsl:apply-templates select="ddue:content" /><br /></td> + </tr> + </xsl:for-each> + </table> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:permissions"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="permissionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <ul> + <xsl:for-each select="ddue:permission"> + <li> + <xsl:apply-templates select="ddue:codeEntityReference" /> + <xsl:text> </xsl:text> + <xsl:apply-templates select="ddue:content" /> + </li> + </xsl:for-each> + </ul> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <xsl:apply-templates /> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/main_sandcastle.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/main_sandcastle.xsl index 43cb10d..fe9a864 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/main_sandcastle.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/main_sandcastle.xsl @@ -1,466 +1,466 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <!-- stuff specified to comments authored in DDUEXML -->
-
- <xsl:include href="utilities_reference.xsl" />
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
-
- <xsl:template name="body">
-
- <!-- auto-inserted info -->
- <!-- <xsl:apply-templates select="/document/reference/attributes" /> -->
- <xsl:apply-templates select="/document/comments/preliminary" />
- <xsl:apply-templates select="/document/comments/summary" />
- <xsl:if test="$group='member' and /document/reference/elements">
- <xsl:apply-templates select="/document/reference/elements/element/overloads" />
- </xsl:if>
- <!-- syntax -->
- <xsl:apply-templates select="/document/syntax" />
- <!-- generic templates -->
- <xsl:apply-templates select="/document/reference/templates" />
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/comments/value" />
- <xsl:apply-templates select="/document/comments/returns" />
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$tgroup='list' and $tsubgroup='namespaces'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='member'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- </xsl:choose>
- <!-- remarks -->
- <xsl:apply-templates select="/document/comments/remarks" />
- <xsl:apply-templates select="/document/comments/threadsafety" />
- <!-- example -->
- <xsl:apply-templates select="/document/comments/example" />
- <!-- other comment sections -->
- <!-- permissions -->
- <xsl:call-template name="permissions" />
- <!-- exceptions -->
- <xsl:call-template name="exceptions" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <!--versions-->
- <xsl:if test="not($group='member' or $group='namespace' or $group='root' )">
- <xsl:apply-templates select="/document/reference/versions" />
- </xsl:if>
- <!-- see also -->
- <xsl:call-template name="seealso" />
- <!-- assembly information -->
- <xsl:apply-templates select="/document/reference/containers/library" />
-
- </xsl:template>
-
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <xsl:apply-templates select="summary" />
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
- <!-- To do -->
- </xsl:template>
-
- <!-- block sections -->
-
- <xsl:template match="summary">
- <div class="summary">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="overloads">
- <xsl:choose>
- <xsl:when test="count(*) > 0">
- <xsl:apply-templates />
- </xsl:when>
- <xsl:otherwise>
- <div class="summary">
- <xsl:apply-templates/>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="templates">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <dl>
- <xsl:for-each select="template">
- <xsl:variable name="templateName" select="@name" />
- <dt>
- <span class="parameter"><xsl:value-of select="$templateName"/></span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" />
- </dd>
- </xsl:for-each>
- </dl>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="value">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="fieldValueTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="returns">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="methodValueTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="remarks">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="example">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="code/@language">
- <xsl:variable name="codeId" select="generate-id()" />
- <table class="filter"><tr class="tabs" id="ct_{$codeId}">
- <xsl:for-each select="code">
- <td class="tab" x-lang="{@language}" onclick="ct{$codeId}.toggleClass('x-lang','{@language}','activeTab','tab'); cb{$codeId}.toggleStyle('x-lang','{@language}','display','block','none');"><include item="{@language}Label" /></td>
- </xsl:for-each></tr></table>
- <div id="cb_{$codeId}">
- <xsl:for-each select="code">
- <div class="code" x-lang="{@language}"><pre><xsl:copy-of select="node()" /></pre></div>
- </xsl:for-each>
- </div>
- <script type="text/javascript"><xsl:text>
- var ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>');
- var cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>');
- lfc.registerTabbedArea(ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>, cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>);
- ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleClass('x-lang','CSharp','activeTab','tab');
- cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleStyle('x-lang','CSharp','display','block','none');</xsl:text>
- </script>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="para">
- <p><xsl:apply-templates /></p>
- </xsl:template>
-
- <xsl:template match="code">
- <div class="code"><pre><xsl:apply-templates /></pre></div>
- </xsl:template>
-
- <xsl:template name="exceptions">
- <xsl:if test="count(/document/comments/exception) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="exceptions">
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="/document/comments/exception">
- <tr>
- <td><referenceLink target="{@cref}" /></td>
- <td><xsl:apply-templates select="." /><br /></td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="permissions">
- <xsl:if test="count(/document/comments/permission) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="permissionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="permissions">
- <tr>
- <th class="permissionNameColumn"><include item="permissionNameHeader" /></th>
- <th class="permissionDescriptionColumn"><include item="permissionDescriptionHeader" /></th>
- </tr>
- <xsl:for-each select="/document/comments/permission">
- <tr>
- <td><referenceLink target="{@cref}" /></td>
- <td><xsl:apply-templates select="." /><br /></td>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="seealso">
- <xsl:if test="count(/document/comments/seealso | /document/comments/summary/seealso) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso">
- <xsl:apply-templates select="." />
- <br />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="list[@type='bullet']">
- <ul>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ul>
- </xsl:template>
-
- <xsl:template match="list[@type='number']">
- <ol>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ol>
- </xsl:template>
-
- <xsl:template match="list[@type='table']">
- <table class="authoredTable">
- <xsl:for-each select="listheader">
- <tr>
- <xsl:for-each select="*">
- <th><xsl:apply-templates /></th>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- <xsl:for-each select="item">
- <tr>
- <xsl:for-each select="*">
- <td><xsl:apply-templates /><br /></td>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- </table>
- </xsl:template>
-
- <!-- inline tags -->
-
- <xsl:template match="see[@cref]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="seealso[@href]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="." />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="@href" />
- </a>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="see[@langword]">
- <span class="keyword">
- <xsl:choose>
- <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </xsl:when>
- <xsl:when test="@langword='static' or @langword='Shared'">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </xsl:when>
- <xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </xsl:when>
- <xsl:when test="@langword='true' or @langword='True'">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </xsl:when>
- <xsl:when test="@langword='false' or @langword='False'">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </xsl:when>
- <xsl:when test="@langword='abstract'">
- <span class="cs">abstract</span>
- <span class="vb">MustInherit</span>
- <span class="cpp">abstract</span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@langword" />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
-
- <xsl:template match="seealso">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="c">
- <span class="code"><xsl:value-of select="." /></span>
- </xsl:template>
-
- <xsl:template match="paramref">
- <span class="parameter"><xsl:value-of select="@name" /></span>
- </xsl:template>
-
- <xsl:template match="typeparamref">
- <span class="typeparameter"><xsl:value-of select="@name" /></span>
- </xsl:template>
-
- <!-- pass through html tags -->
-
- <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|h1|h2|h3|h4|h5|h6|hr|br|pre|blockquote|div|span|a|img|b|i|strong|em|del|sub|sup|abbr|acronym|u|font">
- <xsl:copy>
- <xsl:copy-of select="@*" />
- <xsl:apply-templates />
- </xsl:copy>
- </xsl:template>
-
- <!-- extra tag support -->
-
- <xsl:template match="threadsafety">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="threadSafetyTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <xsl:apply-templates />
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="@static='true'">
- <include item="staticThreadSafe" />
- </xsl:if>
- <xsl:if test="@static='false'">
- <include item="staticNotThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='true'">
- <include item="instanceThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='false'">
- <include item="instanceNotThreadSafe" />
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="note">
- <div class="alert">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="noteTitle" />
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="preliminary">
- <div class="preliminary">
- <include item="preliminaryText" />
- </div>
- </xsl:template>
-
- <!-- move these off into a shared file -->
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
- <b><referenceLink target="{$id}" qualified="{$qualified}" /></b>
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="title" />
- <xsl:param name="content" />
- <div class="section">
- <div class="sectionTitle" onclick="toggleSection(this.parentNode)">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <xsl:copy-of select="$title" />
- </div>
- <div class="sectionContent">
- <xsl:copy-of select="$content" />
- </div>
- </div>
- </xsl:template>
-
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <!-- stuff specified to comments authored in DDUEXML --> + + <xsl:include href="utilities_reference.xsl" /> + + <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" /> + + <xsl:template name="body"> + + <!-- auto-inserted info --> + <!-- <xsl:apply-templates select="/document/reference/attributes" /> --> + <xsl:apply-templates select="/document/comments/preliminary" /> + <xsl:apply-templates select="/document/comments/summary" /> + <xsl:if test="$group='member' and /document/reference/elements"> + <xsl:apply-templates select="/document/reference/elements/element/overloads" /> + </xsl:if> + <!-- syntax --> + <xsl:apply-templates select="/document/syntax" /> + <!-- generic templates --> + <xsl:apply-templates select="/document/reference/templates" /> + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/comments/value" /> + <xsl:apply-templates select="/document/comments/returns" /> + <!-- members --> + <xsl:choose> + <xsl:when test="$tgroup='list' and $tsubgroup='namespaces'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='member'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + </xsl:choose> + <!-- remarks --> + <xsl:apply-templates select="/document/comments/remarks" /> + <xsl:apply-templates select="/document/comments/threadsafety" /> + <!-- example --> + <xsl:apply-templates select="/document/comments/example" /> + <!-- other comment sections --> + <!-- permissions --> + <xsl:call-template name="permissions" /> + <!-- exceptions --> + <xsl:call-template name="exceptions" /> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <!--versions--> + <xsl:if test="not($group='member' or $group='namespace' or $group='root' )"> + <xsl:apply-templates select="/document/reference/versions" /> + </xsl:if> + <!-- see also --> + <xsl:call-template name="seealso" /> + <!-- assembly information --> + <xsl:apply-templates select="/document/reference/containers/library" /> + + </xsl:template> + + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getElementDescription"> + <xsl:apply-templates select="summary" /> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + <!-- To do --> + </xsl:template> + + <!-- block sections --> + + <xsl:template match="summary"> + <div class="summary"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="overloads"> + <xsl:choose> + <xsl:when test="count(*) > 0"> + <xsl:apply-templates /> + </xsl:when> + <xsl:otherwise> + <div class="summary"> + <xsl:apply-templates/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="templates"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <dl> + <xsl:for-each select="template"> + <xsl:variable name="templateName" select="@name" /> + <dt> + <span class="parameter"><xsl:value-of select="$templateName"/></span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" /> + </dd> + </xsl:for-each> + </dl> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="value"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="fieldValueTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="returns"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="methodValueTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="remarks"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="example"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="code/@language"> + <xsl:variable name="codeId" select="generate-id()" /> + <table class="filter"><tr class="tabs" id="ct_{$codeId}"> + <xsl:for-each select="code"> + <td class="tab" x-lang="{@language}" onclick="ct{$codeId}.toggleClass('x-lang','{@language}','activeTab','tab'); cb{$codeId}.toggleStyle('x-lang','{@language}','display','block','none');"><include item="{@language}Label" /></td> + </xsl:for-each></tr></table> + <div id="cb_{$codeId}"> + <xsl:for-each select="code"> + <div class="code" x-lang="{@language}"><pre><xsl:copy-of select="node()" /></pre></div> + </xsl:for-each> + </div> + <script type="text/javascript"><xsl:text> + var ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'); + var cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'); + lfc.registerTabbedArea(ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>, cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>); + ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleClass('x-lang','CSharp','activeTab','tab'); + cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleStyle('x-lang','CSharp','display','block','none');</xsl:text> + </script> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="para"> + <p><xsl:apply-templates /></p> + </xsl:template> + + <xsl:template match="code"> + <div class="code"><pre><xsl:apply-templates /></pre></div> + </xsl:template> + + <xsl:template name="exceptions"> + <xsl:if test="count(/document/comments/exception) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="exceptions"> + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="/document/comments/exception"> + <tr> + <td><referenceLink target="{@cref}" /></td> + <td><xsl:apply-templates select="." /><br /></td> + </tr> + </xsl:for-each> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="permissions"> + <xsl:if test="count(/document/comments/permission) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="permissionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="permissions"> + <tr> + <th class="permissionNameColumn"><include item="permissionNameHeader" /></th> + <th class="permissionDescriptionColumn"><include item="permissionDescriptionHeader" /></th> + </tr> + <xsl:for-each select="/document/comments/permission"> + <tr> + <td><referenceLink target="{@cref}" /></td> + <td><xsl:apply-templates select="." /><br /></td> + </tr> + </xsl:for-each> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="seealso"> + <xsl:if test="count(/document/comments/seealso | /document/comments/summary/seealso) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso"> + <xsl:apply-templates select="." /> + <br /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="list[@type='bullet']"> + <ul> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ul> + </xsl:template> + + <xsl:template match="list[@type='number']"> + <ol> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ol> + </xsl:template> + + <xsl:template match="list[@type='table']"> + <table class="authoredTable"> + <xsl:for-each select="listheader"> + <tr> + <xsl:for-each select="*"> + <th><xsl:apply-templates /></th> + </xsl:for-each> + </tr> + </xsl:for-each> + <xsl:for-each select="item"> + <tr> + <xsl:for-each select="*"> + <td><xsl:apply-templates /><br /></td> + </xsl:for-each> + </tr> + </xsl:for-each> + </table> + </xsl:template> + + <!-- inline tags --> + + <xsl:template match="see[@cref]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="seealso[@href]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="." /> + </a> + </xsl:when> + <xsl:otherwise> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="@href" /> + </a> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="see[@langword]"> + <span class="keyword"> + <xsl:choose> + <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </xsl:when> + <xsl:when test="@langword='static' or @langword='Shared'"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </xsl:when> + <xsl:when test="@langword='virtual' or @langword='Overridable'"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </xsl:when> + <xsl:when test="@langword='true' or @langword='True'"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </xsl:when> + <xsl:when test="@langword='false' or @langword='False'"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </xsl:when> + <xsl:when test="@langword='abstract'"> + <span class="cs">abstract</span> + <span class="vb">MustInherit</span> + <span class="cpp">abstract</span> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@langword" /> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + + <xsl:template match="seealso"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="c"> + <span class="code"><xsl:value-of select="." /></span> + </xsl:template> + + <xsl:template match="paramref"> + <span class="parameter"><xsl:value-of select="@name" /></span> + </xsl:template> + + <xsl:template match="typeparamref"> + <span class="typeparameter"><xsl:value-of select="@name" /></span> + </xsl:template> + + <!-- pass through html tags --> + + <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|h1|h2|h3|h4|h5|h6|hr|br|pre|blockquote|div|span|a|img|b|i|strong|em|del|sub|sup|abbr|acronym|u|font"> + <xsl:copy> + <xsl:copy-of select="@*" /> + <xsl:apply-templates /> + </xsl:copy> + </xsl:template> + + <!-- extra tag support --> + + <xsl:template match="threadsafety"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="threadSafetyTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <xsl:apply-templates /> + </xsl:when> + <xsl:otherwise> + <xsl:if test="@static='true'"> + <include item="staticThreadSafe" /> + </xsl:if> + <xsl:if test="@static='false'"> + <include item="staticNotThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='true'"> + <include item="instanceThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='false'"> + <include item="instanceNotThreadSafe" /> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="note"> + <div class="alert"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="noteTitle" /> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="preliminary"> + <div class="preliminary"> + <include item="preliminaryText" /> + </div> + </xsl:template> + + <!-- move these off into a shared file --> + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + <b><referenceLink target="{$id}" qualified="{$qualified}" /></b> + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="title" /> + <xsl:param name="content" /> + <div class="section"> + <div class="sectionTitle" onclick="toggleSection(this.parentNode)"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <xsl:copy-of select="$title" /> + </div> + <div class="sectionContent"> + <xsl:copy-of select="$content" /> + </div> + </div> + </xsl:template> + + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/main_schema.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/main_schema.xsl index b9ec120..8b3284d 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/main_schema.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/main_schema.xsl @@ -1,44 +1,44 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
-
- <xsl:template match="/">
- <html>
- <head>
- <title>
- <xsl:value-of select="/element/@name" />
- </title>
- <meta name="file" content="{/element/@name}" />
- </head>
- <body>
- <xsl:call-template name="syntax" />
- <xsl:call-template name="attributes" />
- </body>
- </html>
- </xsl:template>
-
- <xsl:template name="syntax">
- <<span class="identifier"><xsl:value-of select="/element/@name"/></span>>
- </xsl:template>
-
- <xsl:template name="attributes">
- <table>
- <tr>
- <th>Name</th>
- <th>Type</th>
- <th>Description</th>
- </tr>
- <tr>
- <xsl:for-each select="/element/attributes/attribute">
- <td>
- <xsl:value-of select="@name" />
- </td>
- <td>
- <xsl:value-of select="type/@name" />
- </td>
- </xsl:for-each>
- </tr>
- </table>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?> + +<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + <xsl:template match="/"> + <html> + <head> + <title> + <xsl:value-of select="/element/@name" /> + </title> + <meta name="file" content="{/element/@name}" /> + </head> + <body> + <xsl:call-template name="syntax" /> + <xsl:call-template name="attributes" /> + </body> + </html> + </xsl:template> + + <xsl:template name="syntax"> + <<span class="identifier"><xsl:value-of select="/element/@name"/></span>> + </xsl:template> + + <xsl:template name="attributes"> + <table> + <tr> + <th>Name</th> + <th>Type</th> + <th>Description</th> + </tr> + <tr> + <xsl:for-each select="/element/attributes/attribute"> + <td> + <xsl:value-of select="@name" /> + </td> + <td> + <xsl:value-of select="type/@name" /> + </td> + </xsl:for-each> + </tr> + </table> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/skeleton.xml b/tools/Sandcastle/Presentation/Prototype/transforms/skeleton.xml index 6b8e5e7..4521a0b 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/skeleton.xml +++ b/tools/Sandcastle/Presentation/Prototype/transforms/skeleton.xml @@ -1,7 +1,7 @@ -<document>
- <reference />
- <syntax />
- <usyntax />
- <comments />
- <metadata />
-</document>
+<document> + <reference /> + <syntax /> + <usyntax /> + <comments /> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/skeleton_conceptual.xml b/tools/Sandcastle/Presentation/Prototype/transforms/skeleton_conceptual.xml index d772566..6de97d4 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/skeleton_conceptual.xml +++ b/tools/Sandcastle/Presentation/Prototype/transforms/skeleton_conceptual.xml @@ -1,3 +1,3 @@ -<document>
- <metadata />
-</document>
+<document> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_dduexml.xsl index 5d3c472..69a050e 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_dduexml.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_dduexml.xsl @@ -1,616 +1,616 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp" >
-
- <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" />
-
- <!-- sections -->
-
- <xsl:template match="ddue:remarks">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExamples">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:threadSafety">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:notesForImplementers">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="notesForImplementersTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:notesForCallers">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="notesForCallersTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:syntaxSection">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="syntaxTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:legacySyntax">
- <pre><xsl:copy-of select="."/></pre>
- </xsl:template>
-
- <xsl:template match="ddue:relatedTopics">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="ddue:codeEntityReference|ddue:link|ddue:legacyLink|ddue:externalLink">
- <xsl:apply-templates select="." />
- <br />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- just skip over these -->
- <xsl:template match="ddue:content | ddue:codeExample | ddue:legacy">
- <xsl:apply-templates />
- </xsl:template>
-
- <!-- block elements -->
-
- <xsl:template match="ddue:table">
- <table class="authoredTable">
- <xsl:apply-templates />
- </table>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader">
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template match="ddue:row">
- <tr>
- <xsl:apply-templates />
- </tr>
- </xsl:template>
-
- <xsl:template match="ddue:entry">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry">
- <th>
- <xsl:apply-templates />
- </th>
- </xsl:template>
-
- <xsl:template match="ddue:definitionTable">
- <dl>
- <xsl:apply-templates />
- </dl>
- </xsl:template>
-
- <xsl:template match="ddue:definedTerm">
- <dt>
- <xsl:apply-templates />
- </dt>
- </xsl:template>
-
- <xsl:template match="ddue:definition">
- <dd>
- <xsl:apply-templates />
- </dd>
- </xsl:template>
-
- <xsl:template match="ddue:code">
- <div class="code"><pre><xsl:apply-templates /></pre></div>
- </xsl:template>
-
- <xsl:template match="ddue:sampleCode">
- <div><b><xsl:value-of select="@language"/></b></div>
- <div class="code"><pre><xsl:apply-templates /></pre></div>
- </xsl:template>
-
- <xsl:template name="composeCode">
- <xsl:copy-of select="." />
- <xsl:variable name="next" select="following-sibling::*[1]" />
- <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())">
- <xsl:for-each select="$next">
- <xsl:call-template name="composeCode" />
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:alert">
- <div class="alert">
- <xsl:choose>
- <xsl:when test="@class='caution'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="cautionTitle" />
- </xsl:when>
- <xsl:when test="@class='security note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_security.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="securityTitle" />
- </xsl:when>
- <xsl:when test="@class='important'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="importantTitle" />
- </xsl:when>
- <xsl:when test="@class='visual basic note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="visualBasicTitle" />
- </xsl:when>
- <xsl:when test="@class='visual c# note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="visualC#Title" />
- </xsl:when>
- <xsl:when test="@class='visual c++ note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="visualC++Title" />
- </xsl:when>
- <xsl:when test="@class='visual j# note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="visualJ#Title" />
- </xsl:when>
- <xsl:when test="@class='note'">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="noteTitle" />
- </xsl:when>
- <xsl:otherwise>
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="{@class}" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:sections">
- <xsl:apply-templates select="ddue:section" />
- </xsl:template>
-
- <xsl:template match="ddue:section">
- <xsl:apply-templates select="@address" />
- <span class="subsectionTitle">
- <xsl:value-of select="ddue:title"/>
- </span>
- <div class="subsection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:template>
-<!--
- <xsl:template match="@address">
- <a name="{string(.)}" />
- </xsl:template>
--->
- <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline">
- <div class="media">
- <artLink target="{ddue:image/@xlink:href}" />
- <xsl:if test="ddue:caption">
- <div class="caption">
- <xsl:apply-templates select="ddue:caption" />
- </div>
- </xsl:if>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:procedure">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><xsl:value-of select="ddue:title" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:steps" />
- <xsl:apply-templates select="ddue:conclusion" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:steps">
- <xsl:choose>
- <xsl:when test="@class='ordered'">
- <ol>
- <xsl:apply-templates select="ddue:step" />
- </ol>
- </xsl:when>
- <xsl:when test="@class='bullet'">
- <ul>
- <xsl:apply-templates select="ddue:step" />
- </ul>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:step">
- <li><xsl:apply-templates /></li>
- </xsl:template>
-
-
- <xsl:template match="ddue:inThisSection">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:buildInstructions">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:nextSteps">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:requirements">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- inline elements -->
-
- <xsl:template match="ddue:languageKeyword">
- <xsl:variable name="word" select="." />
- <span class="keyword" data="langKeyword" value="{$word}">
- <xsl:choose>
- <xsl:when test="$word='null' or $word='Nothing' or $word='nullptr'">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </xsl:when>
- <xsl:when test="$word='static' or $word='Shared'">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </xsl:when>
- <xsl:when test="$word='virtual' or $word='Overridable'">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </xsl:when>
- <xsl:when test="$word='true' or $word='True'">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </xsl:when>
- <xsl:when test="$word='false' or $word='False'">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
- <!-- links -->
-
- <xsl:template match="ddue:dynamicLink[@type='inline']">
- <mshelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" />
- <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" />
- <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" />
- </mshelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='table']">
- <include item="mshelpKTable">
- <parameter>
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='bulleted']">
- <mshelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <xsl:attribute name="prefix"><ul><li></xsl:attribute>
- <xsl:attribute name="postfix"></li></ul></xsl:attribute>
- <xsl:attribute name="separator"></li><li></xsl:attribute>
- </mshelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:codeFeaturedElement">
- <xsl:if test="normalize-space(.)">
- <b><xsl:apply-templates/></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:languageReferenceRemarks">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:attributesandElements">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="attributesAndElements" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:attributes">
- <h4 class="subHeading"><include item="attributes"/></h4>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:attribute">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:attribute/ddue:title">
- <h4 class="subHeading"><xsl:apply-templates/></h4>
- </xsl:template>
-
- <xsl:template match="ddue:childElement">
- <h4 class="subHeading"><include item="childElement"/></h4>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:parentElement">
- <h4 class="subHeading"><include item="parentElement"/></h4>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:textValue">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="textValue" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:elementInformation">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="elementInformation" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:dotNetFrameworkEquivalent">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="dotNetFrameworkEquivalent" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:prerequisites">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="prerequisites" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:type">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:robustProgramming">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="robustProgramming" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:security">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="securitySection" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:externalResources">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="externalResources" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:demonstrates">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="demonstrates" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:appliesTo">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="appliesTo" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:conclusion">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="conclusion" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:background">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="background" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:whatsNew">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="whatsNew" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
- <referenceLink target="{$id}" qualified="{$qualified}" />
- </xsl:template>
-
-
- <!-- this is temporary -->
- <xsl:template match="ddue:snippets">
- <xsl:variable name="codeId" select="generate-id()" />
- <table class="filter"><tr class="tabs" id="ct_{$codeId}">
- <xsl:for-each select="ddue:snippet">
- <td class="tab" x-lang="{@language}" onclick="ct{$codeId}.toggleClass('x-lang','{@language}','activeTab','tab'); cb{$codeId}.toggleStyle('x-lang','{@language}','display','block','none');"><include item="{@language}Label" /></td>
- </xsl:for-each>
- </tr></table>
- <div id="cb_{$codeId}">
- <xsl:for-each select="ddue:snippet">
- <div class="code" x-lang="{@language}"><pre><xsl:copy-of select="node()" /></pre></div>
- </xsl:for-each>
- </div>
- <script type="text/javascript"><xsl:text>
- var ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>');
- var cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>');
- lfc.registerTabbedArea(ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>, cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>);
- ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleClass('x-lang','CSharp','activeTab','tab');
- cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleStyle('x-lang','CSharp','display','block','none');
- </xsl:text></script>
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="title" />
- <xsl:param name="content" />
- <div class="section">
- <div class="sectionTitle" onclick="toggleSection(this.parentNode)">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <xsl:copy-of select="$title" />
- </div>
- <div class="sectionContent">
- <xsl:copy-of select="$content" />
- </div>
- </div>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" > + + <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" /> + + <!-- sections --> + + <xsl:template match="ddue:remarks"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExamples"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:threadSafety"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:notesForImplementers"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="notesForImplementersTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:notesForCallers"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="notesForCallersTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:syntaxSection"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="syntaxTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:legacySyntax"> + <pre><xsl:copy-of select="."/></pre> + </xsl:template> + + <xsl:template match="ddue:relatedTopics"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="ddue:codeEntityReference|ddue:link|ddue:legacyLink|ddue:externalLink"> + <xsl:apply-templates select="." /> + <br /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- just skip over these --> + <xsl:template match="ddue:content | ddue:codeExample | ddue:legacy"> + <xsl:apply-templates /> + </xsl:template> + + <!-- block elements --> + + <xsl:template match="ddue:table"> + <table class="authoredTable"> + <xsl:apply-templates /> + </table> + </xsl:template> + + <xsl:template match="ddue:tableHeader"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template match="ddue:row"> + <tr> + <xsl:apply-templates /> + </tr> + </xsl:template> + + <xsl:template match="ddue:entry"> + <td> + <xsl:apply-templates /> + </td> + </xsl:template> + + <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry"> + <th> + <xsl:apply-templates /> + </th> + </xsl:template> + + <xsl:template match="ddue:definitionTable"> + <dl> + <xsl:apply-templates /> + </dl> + </xsl:template> + + <xsl:template match="ddue:definedTerm"> + <dt> + <xsl:apply-templates /> + </dt> + </xsl:template> + + <xsl:template match="ddue:definition"> + <dd> + <xsl:apply-templates /> + </dd> + </xsl:template> + + <xsl:template match="ddue:code"> + <div class="code"><pre><xsl:apply-templates /></pre></div> + </xsl:template> + + <xsl:template match="ddue:sampleCode"> + <div><b><xsl:value-of select="@language"/></b></div> + <div class="code"><pre><xsl:apply-templates /></pre></div> + </xsl:template> + + <xsl:template name="composeCode"> + <xsl:copy-of select="." /> + <xsl:variable name="next" select="following-sibling::*[1]" /> + <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())"> + <xsl:for-each select="$next"> + <xsl:call-template name="composeCode" /> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:alert"> + <div class="alert"> + <xsl:choose> + <xsl:when test="@class='caution'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="cautionTitle" /> + </xsl:when> + <xsl:when test="@class='security note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_security.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="securityTitle" /> + </xsl:when> + <xsl:when test="@class='important'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="importantTitle" /> + </xsl:when> + <xsl:when test="@class='visual basic note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="visualBasicTitle" /> + </xsl:when> + <xsl:when test="@class='visual c# note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="visualC#Title" /> + </xsl:when> + <xsl:when test="@class='visual c++ note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="visualC++Title" /> + </xsl:when> + <xsl:when test="@class='visual j# note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="visualJ#Title" /> + </xsl:when> + <xsl:when test="@class='note'"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="noteTitle" /> + </xsl:when> + <xsl:otherwise> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="{@class}" /> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="ddue:sections"> + <xsl:apply-templates select="ddue:section" /> + </xsl:template> + + <xsl:template match="ddue:section"> + <xsl:apply-templates select="@address" /> + <span class="subsectionTitle"> + <xsl:value-of select="ddue:title"/> + </span> + <div class="subsection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:template> +<!-- + <xsl:template match="@address"> + <a name="{string(.)}" /> + </xsl:template> +--> + <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline"> + <div class="media"> + <artLink target="{ddue:image/@xlink:href}" /> + <xsl:if test="ddue:caption"> + <div class="caption"> + <xsl:apply-templates select="ddue:caption" /> + </div> + </xsl:if> + </div> + </xsl:template> + + <xsl:template match="ddue:procedure"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><xsl:value-of select="ddue:title" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:steps" /> + <xsl:apply-templates select="ddue:conclusion" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:steps"> + <xsl:choose> + <xsl:when test="@class='ordered'"> + <ol> + <xsl:apply-templates select="ddue:step" /> + </ol> + </xsl:when> + <xsl:when test="@class='bullet'"> + <ul> + <xsl:apply-templates select="ddue:step" /> + </ul> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:step"> + <li><xsl:apply-templates /></li> + </xsl:template> + + + <xsl:template match="ddue:inThisSection"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:buildInstructions"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:nextSteps"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:requirements"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- inline elements --> + + <xsl:template match="ddue:languageKeyword"> + <xsl:variable name="word" select="." /> + <span class="keyword" data="langKeyword" value="{$word}"> + <xsl:choose> + <xsl:when test="$word='null' or $word='Nothing' or $word='nullptr'"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </xsl:when> + <xsl:when test="$word='static' or $word='Shared'"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </xsl:when> + <xsl:when test="$word='virtual' or $word='Overridable'"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </xsl:when> + <xsl:when test="$word='true' or $word='True'"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </xsl:when> + <xsl:when test="$word='false' or $word='False'"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="." /> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + <!-- links --> + + <xsl:template match="ddue:dynamicLink[@type='inline']"> + <mshelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" /> + <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" /> + <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" /> + </mshelp:ktable> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='table']"> + <include item="mshelpKTable"> + <parameter> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </parameter> + </include> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='bulleted']"> + <mshelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <xsl:attribute name="prefix"><ul><li></xsl:attribute> + <xsl:attribute name="postfix"></li></ul></xsl:attribute> + <xsl:attribute name="separator"></li><li></xsl:attribute> + </mshelp:ktable> + </xsl:template> + + <xsl:template match="ddue:codeFeaturedElement"> + <xsl:if test="normalize-space(.)"> + <b><xsl:apply-templates/></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:languageReferenceRemarks"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:attributesandElements"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="attributesAndElements" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:attributes"> + <h4 class="subHeading"><include item="attributes"/></h4> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:attribute"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:attribute/ddue:title"> + <h4 class="subHeading"><xsl:apply-templates/></h4> + </xsl:template> + + <xsl:template match="ddue:childElement"> + <h4 class="subHeading"><include item="childElement"/></h4> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:parentElement"> + <h4 class="subHeading"><include item="parentElement"/></h4> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:textValue"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="textValue" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:elementInformation"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="elementInformation" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:dotNetFrameworkEquivalent"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="dotNetFrameworkEquivalent" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:prerequisites"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="prerequisites" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:type"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:robustProgramming"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="robustProgramming" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:security"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="securitySection" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:externalResources"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="externalResources" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:demonstrates"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="demonstrates" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:appliesTo"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="appliesTo" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:conclusion"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="conclusion" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:background"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="background" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:whatsNew"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="whatsNew" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + <referenceLink target="{$id}" qualified="{$qualified}" /> + </xsl:template> + + + <!-- this is temporary --> + <xsl:template match="ddue:snippets"> + <xsl:variable name="codeId" select="generate-id()" /> + <table class="filter"><tr class="tabs" id="ct_{$codeId}"> + <xsl:for-each select="ddue:snippet"> + <td class="tab" x-lang="{@language}" onclick="ct{$codeId}.toggleClass('x-lang','{@language}','activeTab','tab'); cb{$codeId}.toggleStyle('x-lang','{@language}','display','block','none');"><include item="{@language}Label" /></td> + </xsl:for-each> + </tr></table> + <div id="cb_{$codeId}"> + <xsl:for-each select="ddue:snippet"> + <div class="code" x-lang="{@language}"><pre><xsl:copy-of select="node()" /></pre></div> + </xsl:for-each> + </div> + <script type="text/javascript"><xsl:text> + var ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'); + var cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text> = new ElementCollection('cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'); + lfc.registerTabbedArea(ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>, cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>); + ct</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleClass('x-lang','CSharp','activeTab','tab'); + cb</xsl:text><xsl:value-of select="$codeId" /><xsl:text>.toggleStyle('x-lang','CSharp','display','block','none'); + </xsl:text></script> + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="title" /> + <xsl:param name="content" /> + <div class="section"> + <div class="sectionTitle" onclick="toggleSection(this.parentNode)"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <xsl:copy-of select="$title" /> + </div> + <div class="sectionContent"> + <xsl:copy-of select="$content" /> + </div> + </div> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_metadata.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_metadata.xsl index e887d0b..0bbce6b 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_metadata.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_metadata.xsl @@ -1,300 +1,300 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" >
-
- <xsl:import href="../../shared/transforms/utilities_metadata.xsl" />
-
- <xsl:template name="insertMetadata">
- <xsl:if test="$metadata='true'">
- <xml>
- <MSHelp:Attr Name="AssetID" Value="{$key}" />
- <!-- toc metadata -->
- <xsl:call-template name="linkMetadata" />
- <xsl:call-template name="indexMetadata" />
- <xsl:call-template name="helpMetadata" />
- <MSHelp:Attr Name="TopicType" Value="apiref" />
- <!-- attribute to allow F1 help integration -->
- <MSHelp:Attr Name="TopicType" Value="kbSyntax" />
- <xsl:call-template name="apiTaggingMetadata" />
- <MSHelp:Attr Name="Locale">
- <includeAttribute name="Value" item="locale" />
- </MSHelp:Attr>
- <xsl:if test="boolean($summary) and (string-length($summary) < 255)">
- <MSHelp:Attr Name="Abstract">
- <xsl:attribute name="Value"><xsl:value-of select="$summary" /></xsl:attribute>
- </MSHelp:Attr>
- </xsl:if>
- </xml>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="apiTaggingMetadata">
- <xsl:if test="$tgroup='api' and ($group='type' or $group='member')">
- <MSHelp:Attr Name="APIType" Value="Managed" />
- <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" />
- <xsl:choose>
- <xsl:when test="$group='type'">
- <xsl:variable name="apiTypeName">
- <xsl:value-of select="concat(/document/reference/containers/container[@namespace]/apidata/@name,'.',/document/reference/apidata/@name)" />
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type -->
- <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" />
- <xsl:choose>
- <xsl:when test="boolean($subgroup='delegate')">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','.ctor')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Attr Name="APIName" Value="{substring(@api,2)}" />
- </xsl:for-each>
- <!-- Namespace + Type + Member for each member -->
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$group='member'">
- <xsl:variable name="apiTypeName">
- <xsl:value-of select="concat(/document/reference/containers/container[@namespace]/apidata/@name,'.',/document/reference/containers/container[@type]/apidata/@name)" />
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type + Member -->
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" />
- <xsl:choose>
- <xsl:when test="boolean($subgroup='property')">
- <!-- Namespace + Type + get_Member if get-able -->
- <!-- Namespace + Type + set_Member if set-able -->
- </xsl:when>
- <xsl:when test="boolean($subgroup='event')">
- <!-- Namespace + Type + add_Member -->
- <!-- Namespace + Type + remove_Member -->
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="linkMetadata">
- <!-- code entity reference keyword -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
- <!-- frlrf keywords -->
- <xsl:choose>
- <xsl:when test="$group='namespace'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/apidata/@name),'.','')}" />
- </xsl:when>
- <!-- types & members, too -->
- <xsl:when test="$group='type'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'ClassTopic'),'.','')}" />
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'MembersTopic'),'.','')}" />
- </xsl:when>
- <xsl:when test="$group='member'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/containers/type/apidata/@name, 'Class', /document/reference/apidata/@name, 'Topic'),'.','')}" />
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="helpMetadata">
- <!-- F keywords -->
- <xsl:choose>
- <!-- namespace pages get the namespace keyword, if it exists -->
- <xsl:when test="$group='namespace'">
- <xsl:variable name="namespace" select="/document/reference/apidata/@name" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{$namespace}" />
- </xsl:if>
- </xsl:when>
- <!-- type pages get type and namespace.type keywords -->
- <xsl:when test="$group='type'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotate" select="true()" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" />
- </xsl:if>
- <!-- some extra F keywords for some special types in the System namespace -->
- <xsl:if test="$namespace='System'">
- <xsl:choose>
- <xsl:when test="$type='Object'">
- <MSHelp:Keyword Index="F" Term="object" />
- </xsl:when>
- <xsl:when test="$type='String'">
- <MSHelp:Keyword Index="F" Term="string" />
- </xsl:when>
- <xsl:when test="$type='Int32'">
- <MSHelp:Keyword Index="F" Term="int" />
- </xsl:when>
- <xsl:when test="$type='Boolean'">
- <MSHelp:Keyword Index="F" Term="bool" />
- </xsl:when>
- </xsl:choose>
- </xsl:if>
- </xsl:when>
- <!-- member pages get member, type.member, and namepsace.type.member keywords -->
- <xsl:when test="$group='member'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotate" select="true()" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="member">
- <xsl:choose>
- <!-- if the member is a constructor, use the member name for the type name -->
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="$type" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$member}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <!--
- <xsl:template name="apiName">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/containers/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- -->
- <xsl:template name="indexMetadata">
- <xsl:choose>
- <!-- namespace topics get one unqualified index entry -->
- <xsl:when test="$group='namespace'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="namespaceIndexEntry">
- <parameter>
- <xsl:value-of select="msxsl:node-set($names)/name" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <!-- type topics get unqualified and qualified index entries -->
- <xsl:when test="$group='type'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <!-- enumeration topics also get entries for each member -->
- </xsl:when>
- <!-- constructor (or constructor overload) topics get unqualified entries using the type names -->
- <xsl:when test="$subgroup='constructor' and not(/document/reference/memberdata/@overload='true')">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference/containers/type">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="constructorIndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <!-- other member (or overload) topics get qualified and unqualified entries using the member names -->
- <xsl:when test="$group='member' and not(/document/reference/memberdata/@overload='true')">
- <!-- don't create index entries for explicit interface implementations -->
- <xsl:if test="not(/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private')">
- <xsl:variable name="entryType">
- <xsl:choose>
- <xsl:when test="$subsubgroup">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:msxsl="urn:schemas-microsoft-com:xslt" > + + <xsl:import href="../../shared/transforms/utilities_metadata.xsl" /> + + <xsl:template name="insertMetadata"> + <xsl:if test="$metadata='true'"> + <xml> + <MSHelp:Attr Name="AssetID" Value="{$key}" /> + <!-- toc metadata --> + <xsl:call-template name="linkMetadata" /> + <xsl:call-template name="indexMetadata" /> + <xsl:call-template name="helpMetadata" /> + <MSHelp:Attr Name="TopicType" Value="apiref" /> + <!-- attribute to allow F1 help integration --> + <MSHelp:Attr Name="TopicType" Value="kbSyntax" /> + <xsl:call-template name="apiTaggingMetadata" /> + <MSHelp:Attr Name="Locale"> + <includeAttribute name="Value" item="locale" /> + </MSHelp:Attr> + <xsl:if test="boolean($summary) and (string-length($summary) < 255)"> + <MSHelp:Attr Name="Abstract"> + <xsl:attribute name="Value"><xsl:value-of select="$summary" /></xsl:attribute> + </MSHelp:Attr> + </xsl:if> + </xml> + </xsl:if> + </xsl:template> + + <xsl:template name="apiTaggingMetadata"> + <xsl:if test="$tgroup='api' and ($group='type' or $group='member')"> + <MSHelp:Attr Name="APIType" Value="Managed" /> + <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" /> + <xsl:choose> + <xsl:when test="$group='type'"> + <xsl:variable name="apiTypeName"> + <xsl:value-of select="concat(/document/reference/containers/container[@namespace]/apidata/@name,'.',/document/reference/apidata/@name)" /> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type --> + <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" /> + <xsl:choose> + <xsl:when test="boolean($subgroup='delegate')"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','.ctor')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Attr Name="APIName" Value="{substring(@api,2)}" /> + </xsl:for-each> + <!-- Namespace + Type + Member for each member --> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="$group='member'"> + <xsl:variable name="apiTypeName"> + <xsl:value-of select="concat(/document/reference/containers/container[@namespace]/apidata/@name,'.',/document/reference/containers/container[@type]/apidata/@name)" /> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type + Member --> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" /> + <xsl:choose> + <xsl:when test="boolean($subgroup='property')"> + <!-- Namespace + Type + get_Member if get-able --> + <!-- Namespace + Type + set_Member if set-able --> + </xsl:when> + <xsl:when test="boolean($subgroup='event')"> + <!-- Namespace + Type + add_Member --> + <!-- Namespace + Type + remove_Member --> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template name="linkMetadata"> + <!-- code entity reference keyword --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + <!-- frlrf keywords --> + <xsl:choose> + <xsl:when test="$group='namespace'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/apidata/@name),'.','')}" /> + </xsl:when> + <!-- types & members, too --> + <xsl:when test="$group='type'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'ClassTopic'),'.','')}" /> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'MembersTopic'),'.','')}" /> + </xsl:when> + <xsl:when test="$group='member'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/containers/type/apidata/@name, 'Class', /document/reference/apidata/@name, 'Topic'),'.','')}" /> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="helpMetadata"> + <!-- F keywords --> + <xsl:choose> + <!-- namespace pages get the namespace keyword, if it exists --> + <xsl:when test="$group='namespace'"> + <xsl:variable name="namespace" select="/document/reference/apidata/@name" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{$namespace}" /> + </xsl:if> + </xsl:when> + <!-- type pages get type and namespace.type keywords --> + <xsl:when test="$group='type'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotate" select="true()" /> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="F" Term="{$type}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" /> + </xsl:if> + <!-- some extra F keywords for some special types in the System namespace --> + <xsl:if test="$namespace='System'"> + <xsl:choose> + <xsl:when test="$type='Object'"> + <MSHelp:Keyword Index="F" Term="object" /> + </xsl:when> + <xsl:when test="$type='String'"> + <MSHelp:Keyword Index="F" Term="string" /> + </xsl:when> + <xsl:when test="$type='Int32'"> + <MSHelp:Keyword Index="F" Term="int" /> + </xsl:when> + <xsl:when test="$type='Boolean'"> + <MSHelp:Keyword Index="F" Term="bool" /> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:when> + <!-- member pages get member, type.member, and namepsace.type.member keywords --> + <xsl:when test="$group='member'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotate" select="true()" /> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="member"> + <xsl:choose> + <!-- if the member is a constructor, use the member name for the type name --> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="$type" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <MSHelp:Keyword Index="F" Term="{$member}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" /> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- + <xsl:template name="apiName"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/containers/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + --> + <xsl:template name="indexMetadata"> + <xsl:choose> + <!-- namespace topics get one unqualified index entry --> + <xsl:when test="$group='namespace'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="namespaceIndexEntry"> + <parameter> + <xsl:value-of select="msxsl:node-set($names)/name" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <!-- type topics get unqualified and qualified index entries --> + <xsl:when test="$group='type'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <!-- enumeration topics also get entries for each member --> + </xsl:when> + <!-- constructor (or constructor overload) topics get unqualified entries using the type names --> + <xsl:when test="$subgroup='constructor' and not(/document/reference/memberdata/@overload='true')"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference/containers/type"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="constructorIndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <!-- other member (or overload) topics get qualified and unqualified entries using the member names --> + <xsl:when test="$group='member' and not(/document/reference/memberdata/@overload='true')"> + <!-- don't create index entries for explicit interface implementations --> + <xsl:if test="not(/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private')"> + <xsl:variable name="entryType"> + <xsl:choose> + <xsl:when test="$subsubgroup"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_reference.xsl index 5b3629f..82e67dd 100644 --- a/tools/Sandcastle/Presentation/Prototype/transforms/utilities_reference.xsl +++ b/tools/Sandcastle/Presentation/Prototype/transforms/utilities_reference.xsl @@ -1,1213 +1,1213 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp" >
-
- <xsl:import href="../../shared/transforms/utilities_reference.xsl"/>
-
- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" />
-
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
- <xsl:param name="metadata" value="false" />
- <xsl:param name="languages" />
-
- <xsl:include href="utilities_metadata.xsl" />
-
- <xsl:template match="/">
- <html>
- <head>
- <title><xsl:call-template name="topicTitlePlain"/></title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertFilename" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
- <script type="text/javascript">
- <xsl:text>var store = new CookieDataStore('docs');</xsl:text>
-
- <xsl:text>registerEventHandler(window, 'load', function() { var ss = new SplitScreen('control', 'main'); selectLanguage(store.get('lang')); });</xsl:text>
-
- <!--
- <xsl:text>registerEventHandler(window, 'load', function() { selectLanguage(store.get('lang')); });</xsl:text>
- -->
- </script>
- <xsl:call-template name="control"/>
- <xsl:call-template name="main"/>
- </body>
- </html>
- </xsl:template>
-
- <!-- useful global variables -->
-
- <xsl:variable name="tgroup" select="/document/reference/topicdata/@group" />
- <xsl:variable name="tsubgroup" select="/document/reference/topicdata/@subgroup" />
-
- <xsl:variable name="group" select="/document/reference/apidata/@group" />
- <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" />
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>StyleUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>SplitScreen.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>ElementCollection.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>MemberFilter.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>CollapsibleSection.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>LanguageFilter.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>CookieDataStore.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template match="parameters">
- <div id="parameters">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="parameter">
- <xsl:variable name="parameterName" select="@name" />
- <dl paramName="{$parameterName}">
- <dt>
- <span class="parameter"><xsl:value-of select="$parameterName"/></span>
- <xsl:text> (</xsl:text>
- <xsl:apply-templates select="*[1]" mode="link" />
- <xsl:text>)</xsl:text>
- </dt>
- <dd>
- <xsl:call-template name="getParameterDescription">
- <xsl:with-param name="name" select="@name" />
- </xsl:call-template>
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template match="element" mode="root">
- <tr>
- <td>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="getElementDescription" /><br />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="namespace">
- <tr>
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:text>; public</xsl:text>
- </xsl:attribute>
- <td>
- <xsl:call-template name="apiIcon" />
- </td>
- <td>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteShort" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <br />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="enumeration">
- <tr>
- <xsl:variable name="id" select="@api" />
- <td target="{$id}">
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:call-template name="getElementDescription" />
- <br />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="type">
- <tr>
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>; public</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='family'">
- <xsl:text>; protected</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; public</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="memberdata/@static = 'true'">
- <xsl:text>; static</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; instance</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="string(containers/type/@api) = $key">
- <xsl:text>; declared</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; inherited</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td>
- <xsl:call-template name="apiIcon" />
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="content">
- <member api="{@api}">
- <xsl:copy-of select="containers/type" />
- </member>
- </referenceLink>
- <!--
- <referenceLink target="{@api}" display-target="{@display-api}" />
- -->
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteShort" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="($group != 'member') and (string(containers/type/@api) != $key)">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:apply-templates select="overrides/member" />
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
- <br />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template name="insertFilename">
- <meta name="file" content="{/document/reference/file/@name}" />
- </xsl:template>
-
- <!-- writing templates -->
-
- <xsl:template name="csTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text><</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>></xsl:text>
- </xsl:template>
-
- <xsl:template name="csTemplatesInIndex" >
- <xsl:text>%3C</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:text>%2C </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>%3E</xsl:text>
- </xsl:template>
-
- <xsl:template name="vbTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text>(Of </xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <xsl:template name="typeTitle">
- <xsl:if test="containers/container[@type]">
- <xsl:for-each select="containers/container[@type]">
- <xsl:call-template name="typeTitle" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="count(templates/template) > 0">
- <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <!-- document body -->
-
- <!-- control window -->
-
- <xsl:template name="control">
- <div id="control">
- <span class="productTitle"><include item="productTitle" /></span><br/>
- <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/>
- <div id="toolbar">
- <span id="chickenFeet"><xsl:call-template name="chickenFeet" /></span>
- <xsl:if test="count($languages/language) > 0">
- <span id="languageFilter">
- <select id="languageSelector" onchange="var names = this.value.split(' '); toggleVisibleLanguage(names[1]); lfc.switchLanguage(names[0]); store.set('lang',this.value); store.save();">
- <xsl:for-each select="$languages/language">
- <option value="{@name} {@style}"><include item="{@label}Label" /></option>
- </xsl:for-each>
- </select>
- </span>
- <script>var sd = getStyleDictionary(); var lfc = new LanguageFilterController();</script>
- </xsl:if>
- </div>
- </div>
- </xsl:template>
-
- <!-- Title in topic -->
-
- <xsl:template name="topicTitlePlain">
- <include>
- <xsl:attribute name="item">
- <xsl:choose>
- <xsl:when test="boolean($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:when test="boolean($subgroup)">
- <xsl:value-of select="$subgroup" />
- </xsl:when>
- <xsl:when test="boolean($group)">
- <xsl:value-of select="$group" />
- </xsl:when>
- <xsl:when test="boolean($tsubgroup)">
- <xsl:value-of select="$tsubgroup" />
- </xsl:when>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNamePlain" />
-<!--
- <xsl:choose>
- <xsl:when test="boolean($group='type')">
- <xsl:for-each select="/document/reference"><xsl:call-template name="typeTitle" /></xsl:for-each>
- </xsl:when>
- <xsl:when test="$subgroup='constructor'">
- <xsl:for-each select="/document/reference/containers/type"><xsl:call-template name="typeTitle"/></xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
--->
- </parameter>
- <parameter>
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="parameterNames" />
- </xsl:for-each>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template name="topicTitleDecorated">
- <include>
- <xsl:attribute name="item">
- <xsl:choose>
- <xsl:when test="boolean($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:when test="boolean($subgroup)">
- <xsl:value-of select="$subgroup" />
- </xsl:when>
- <xsl:when test="boolean($group)">
- <xsl:value-of select="$group" />
- </xsl:when>
- <xsl:when test="boolean($tsubgroup)">
- <xsl:value-of select="$tsubgroup" />
- </xsl:when>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNameDecorated" />
- </parameter>
- <parameter>
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="parameterNames" />
- </xsl:for-each>
- </parameter>
- </include>
- </xsl:template>
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- chicken feet navigation -->
-
- <xsl:template name="chickenFeet">
- <include item="rootLink" />
- <xsl:if test="boolean(/document/reference/containers/namespace)">
- <xsl:text> ► </xsl:text>
- <referenceLink target="{document/reference/containers/namespace/@api}" />
- </xsl:if>
- <xsl:if test="boolean(/document/reference/containers/type)">
- <xsl:text> ► </xsl:text>
- <xsl:apply-templates select="/document/reference/containers/type" mode="link" />
- </xsl:if>
- <xsl:if test="$group">
- <xsl:text> ► </xsl:text>
- <referenceLink target="{$key}" />
- </xsl:if>
- </xsl:template>
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="main">
- <xsl:call-template name="head" />
- <xsl:call-template name="body" />
- <xsl:call-template name="foot" />
- </div>
- </xsl:template>
-
- <xsl:template name="head">
- <include item="header" />
- </xsl:template>
-
- <xsl:template match="syntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="syntaxTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="syntaxContent" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="usyntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="usyntaxTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="usyntaxContent" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="syntaxContent">
- <table class="filter">
- <tr class="tabs" id="syntaxTabs">
- <xsl:for-each select="div[@codeLanguage]">
- <td class="tab" x-lang="{@codeLanguage}" onclick="st.toggleClass('x-lang','{@codeLanguage}','activeTab','tab'); sb.toggleStyle('x-lang','{@codeLanguage}','display','block','none');" ><include item="{@codeLanguage}Label" /></td>
- </xsl:for-each>
- </tr>
- </table>
- <div id="syntaxBlocks">
- <xsl:for-each select="div[@codeLanguage]">
- <div class="code" x-lang="{@codeLanguage}"><pre><xsl:copy-of select="./node()" /></pre></div>
- </xsl:for-each>
- </div>
- <script type="text/javascript"><xsl:text>
- var st = new ElementCollection('syntaxTabs');
- var sb = new ElementCollection('syntaxBlocks');
- lfc.registerTabbedArea(st, sb);
- st.toggleClass('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','activeTab','tab');
- sb.toggleStyle('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','display','block','none');
- </xsl:text></script>
- </xsl:template>
-
- <xsl:template name="usyntaxContent">
- <table class="filter">
- <tr class="tabs" id="usyntaxTabs">
- <xsl:for-each select="div[@codeLanguage]">
- <td class="tab" x-lang="{@codeLanguage}" onclick="ust.toggleClass('x-lang','{@codeLanguage}','activeTab','tab'); usb.toggleStyle('x-lang','{@codeLanguage}','display','block','none');" >
- <include item="{@codeLanguage}Label" />
- </td>
- </xsl:for-each>
- </tr>
- </table>
- <div id="usyntaxBlocks">
- <xsl:for-each select="div[@codeLanguage]">
- <div class="code" x-lang="{@codeLanguage}">
- <pre>
- <xsl:copy-of select="./node()" />
- </pre>
- </div>
- </xsl:for-each>
- </div>
- <script type="text/javascript">
- <xsl:text>
- var ust = new ElementCollection('usyntaxTabs');
- var usb = new ElementCollection('usyntaxBlocks');
- lfc.registerTabbedArea(ust, usb);
- ust.toggleClass('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','activeTab','tab');
- usb.toggleStyle('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','display','block','none');
- </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template match="elements" mode="root">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList">
- <tr>
- <th class="nameColumn"><include item="namespaceNameHeader"/></th>
- <th class="descriptionColumn"><include item="namespaceDescriptionHeader" /></th>
- </tr>
- <xsl:apply-templates select="element" mode="root">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="namespace">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="typesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="filter">
- <tr class="tabs" id="typeFilter">
- <td class="tab" value="all" onclick="tt.toggleClass('value','all','activeTab','tab'); tf.subgroup='all'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="allTypesFilterLabel" /></td>
- <xsl:if test="element/apidata[@subgroup='class']">
- <td class="tab" value="class" onclick="tt.toggleClass('value','class','activeTab','tab'); tf.subgroup='class'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="classTypesFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='structure']">
- <td class="tab" value="structure" onclick="tt.toggleClass('value','structure','activeTab','tab'); tf.subgroup='structure'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="structureTypesFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='interface']">
- <td class="tab" value="interface" onclick="tt.toggleClass('value','interface','activeTab','tab'); tf.subgroup='interface'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="interfaceTypesFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='enumeration']">
- <td class="tab" value="enumeration" onclick="tt.toggleClass('value','enumeration','activeTab','tab'); tf.subgroup='enumeration'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="enumerationTypesFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='delegate']">
- <td class="tab" value="delegate" onclick="tt.toggleClass('value','delegate','activeTab','tab'); tf.subgroup='delegate'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="delegateTypesFilterLabel" /></td>
- </xsl:if>
- </tr>
- </table>
- <table id="typeList" class="members">
- <tr>
- <th class="iconColumn"><include item="typeIconHeader"/></th>
- <th class="nameColumn"><include item="typeNameHeader"/></th>
- <th class="descriptionColumn"><include item="typeDescriptionHeader" /></th>
- </tr>
- <xsl:apply-templates select="element" mode="namespace">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- <script type="text/javascript"><xsl:text>
- var tt = new ElementCollection('typeFilter');
- var ts = new ElementCollection('typeList');
- var tf = new TypeFilter();
- tt.toggleClass('value','all','activeTab','tab');
- </xsl:text></script>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="elements" mode="enumeration">
- <xsl:if test="count(element) > 0">
- <div id="enumerationSection">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList">
- <tr>
- <th class="nameColumn"><include item="memberNameHeader"/></th>
- <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th>
- </tr>
- <!-- don't sort for enumeration members -->
- <xsl:apply-templates select="element" mode="enumeration" />
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="type">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="filter">
- <tr class="tabs" id="memberTabs">
- <td class="tab" value="all" onclick="mt.toggleClass('value','all','activeTab','tab'); mf.subgroup='all'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="allMembersFilterLabel" /></td>
- <xsl:if test="element/apidata[@subgroup='constructor']">
- <td class="tab" value="constructor" onclick="mt.toggleClass('value','constructor','activeTab','tab'); mf.subgroup='constructor'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="constructorMembersFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='method']">
- <td class="tab" value="method" onclick="mt.toggleClass('value','method','activeTab','tab'); mf.subgroup='method'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="methodMembersFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='property']">
- <td class="tab" value="property" onclick="mt.toggleClass('value','property','activeTab','tab'); mf.subgroup='property'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="propertyMembersFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='field']">
- <td class="tab" value="field" onclick="mt.toggleClass('value','field','activeTab','tab'); mf.subgroup='field'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="fieldMembersFilterLabel" /></td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='event']">
- <td class="tab" value="event" onclick="mt.toggleClass('value','event','activeTab','tab'); mf.subgroup='event'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="eventMembersFilterLabel" /></td>
- </xsl:if>
- </tr>
- <tr>
- <td class="line" colspan="2">
- <label for="public"><input id="public" type="checkbox" checked="true" onclick="mf['public'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="publicMembersFilterLabel" /></label><br/>
- <label for="protected"><input id="protected" type="checkbox" checked="true" onclick="mf['protected'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="protectedMembersFilterLabel" /></label>
- </td>
- <td class="line" colspan="2">
- <label for="instance"><input id="instance" type="checkbox" checked="true" onclick="mf['instance'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="instanceMembersFilterLabel" /></label><br/>
- <label for="static"><input id="static" type="checkbox" checked="true" onclick="mf['static'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="staticMembersFilterLabel" /></label>
- </td>
- <td class="line" colspan="2">
- <label for="declared"><input id="declared" type="checkbox" checked="true" onclick="mf['declared'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="declaredMembersFilterLabel" /></label><br/>
- <label for="inherited"><input id="inherited" type="checkbox" checked="true" onclick="mf['inherited'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="inheritedMembersFilterLabel" /></label>
- </td>
- </tr>
- </table>
- <table class="members" id="memberList">
- <tr>
- <th class="iconColumn"><include item="memberIconHeader"/></th>
- <th class="nameColumn"><include item="memberNameHeader"/></th>
- <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th>
- </tr>
- <xsl:apply-templates select="element" mode="type">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- <script type="text/javascript"><xsl:text>
- var mt = new ElementCollection('memberTabs');
- var ms = new ElementCollection('memberList');
- var mf = new MemberFilter();
- mt.toggleClass('value','all','activeTab','tab');
- </xsl:text></script>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="overload">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList">
- <tr>
- <th class="iconColumn"><include item="memberIconHeader"/></th>
- <th class="nameColumn"><include item="memberNameHeader"/></th>
- <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th>
- </tr>
- <xsl:apply-templates select="element" mode="type">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="apiIcon">
- <!-- determine visibility prefix -->
- <xsl:variable name="visibility">
- <xsl:choose>
- <xsl:when test="apidata/@group='type'">
- <xsl:choose>
- <xsl:when test="typedata/@visibility='public'">
- <xsl:text>pub</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>priv</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="apidata/@group='member'">
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>pub</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family and assembly'">
- <xsl:text>prot</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>priv</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <!-- determine icon file name -->
- <xsl:variable name="kind">
- <xsl:choose>
- <xsl:when test="apidata/@group='type'">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='class'">
- <xsl:text>class</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='structure'">
- <xsl:text>structure</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='interface'">
- <xsl:text>interface</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='delegate'">
- <xsl:text>delegate</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='enumeration'">
- <xsl:text>enum</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="apidata/@group='member'">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='field'">
- <xsl:text>field</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='property'">
- <xsl:text>property</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='method'">
- <xsl:choose>
- <xsl:when test="apidata/@subsubgroup='operator'">
- <xsl:text>operator</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>method</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='constructor'">
- <xsl:text>method</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='event'">
- <xsl:text>event</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <!-- write out an image tag for the icon -->
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="concat($visibility,$kind,'.gif')"/>
- </parameter>
- </includeAttribute>
- </img>
- <!--
- <xsl:choose>
- <xsl:when test="apidata/@group='type'">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='class'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubclass.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="publicClassAltText" />
- </img>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='structure'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubstructure.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="publicStructureAltText" />
- </img>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='interface'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="publicInterfaceAltText" />
- </img>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='delegate'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubdelegate.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="publicDelegateAltText" />
- </img>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='enumeration'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubenum.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="publicEnumerationAltText" />
- </img>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="apidata/@group='member'">
- <xsl:variable name="memberVisibility">
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>pub</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">
- <xsl:text>prot</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='private'">
- <xsl:text>priv</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>pub</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="memberSubgroup">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='constructor'">
- <xsl:text>method</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="memberIcon" select="concat($memberVisibility,$memberSubgroup,'.gif')" />
- <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- </img>
- </xsl:if>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="$memberIcon" />
- </parameter>
- </includeAttribute>
- </img>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- -->
- <xsl:if test="memberdata/@static='true'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>static.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="staticAltText" />
- </img>
- </xsl:if>
-
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <include item="footer" />
- </xsl:template>
-
- <!-- Assembly information -->
-
- <xsl:template match="library">
- <p><include item="locationInformation">
- <parameter><span data="assembly"><xsl:value-of select="@assembly"/></span></parameter>
- <parameter><xsl:value-of select="@module" /></parameter>
- </include></p>
- </xsl:template>
-
- <!-- Version information -->
-
- <xsl:template match="versions">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="versionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="processVersions" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="processVersions">
- <xsl:choose>
- <xsl:when test="versions">
- <ul>
- <xsl:for-each select="versions">
- <li>
- <include item="{@name}" />
- <xsl:text>: </xsl:text>
- <xsl:call-template name="processVersions" />
- </li>
- </xsl:for-each>
- </ul>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="version">
- <include item="{@name}" />
- <xsl:if test="not(position()=last())">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Interface implementors -->
-
- <xsl:template match="implementors">
- <xsl:call-template name="section">
- <xsl:with-param name="title">
- <include item="implementorsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <ul>
- <xsl:for-each select="type">
- <li>
- <xsl:apply-templates select="self::type" mode="link" />
- </li>
- </xsl:for-each>
- </ul>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Inheritance hierarchy -->
-
- <xsl:template match="family">
- <xsl:call-template name="section">
- <xsl:with-param name="title"><include item="familyTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:variable name="ancestorCount" select="count(ancestors/*)" />
- <xsl:variable name="childCount" select="count(descendents/*)" />
- <xsl:variable name="columnCount">
- <xsl:choose>
- <xsl:when test="$childCount = 0">
- <xsl:value-of select="$ancestorCount + 1" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$ancestorCount + 2" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <table cellspacing="0" cellpadding="0">
- <xsl:for-each select="ancestors/type">
- <xsl:sort select="position()" data-type="number" order="descending" />
- <tr>
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="position() - 2" />
- </xsl:call-template>
-
- <xsl:if test="position() > 1">
- <td>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>LastChild.gif</parameter>
- </includeAttribute>
- </img>
- </td>
- </xsl:if>
-
- <td colspan="{$columnCount - position() + 1}">
- <xsl:apply-templates select="self::type" mode="link" />
- </td>
- </tr>
- </xsl:for-each>
-
- <tr>
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="$ancestorCount - 1" />
- </xsl:call-template>
-
- <xsl:if test="$ancestorCount > 0">
- <td>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>LastChild.gif</parameter>
- </includeAttribute>
- </img>
- </td>
- </xsl:if>
-
- <td>
- <xsl:if test="$childCount > 0">
- <xsl:attribute name="colspan">2</xsl:attribute>
- </xsl:if>
- <referenceLink target="{$key}" />
- </td>
- </tr>
-
- <xsl:for-each select="descendents/type">
-
- <tr>
-
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="$ancestorCount" />
- </xsl:call-template>
-
- <td>
- <xsl:choose>
- <xsl:when test="position()=last()">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>LastChild.gif</parameter>
- </includeAttribute>
- </img>
- </xsl:when>
- <xsl:otherwise>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>NotLastChild.gif</parameter>
- </includeAttribute>
- </img>
- </xsl:otherwise>
- </xsl:choose>
- </td>
-
- <td><xsl:apply-templates select="self::type" mode="link" /></td>
-
- </tr>
-
- </xsl:for-each>
-
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="createTableEntries">
- <xsl:param name="count" />
- <xsl:if test="number($count) > 0">
- <td> </td>
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="number($count)-1" />
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
-
- <!-- Link to create type -->
-<!--
- <xsl:template match="arrayOf">
- <span class="cpp">array<</span>
- <xsl:apply-templates />
- <span class="cpp">
- <xsl:if test="number(@rank) > 1">
- <xsl:text>,</xsl:text>
- <xsl:value-of select="@rank"/>
- </xsl:if>
- <xsl:text>></xsl:text>
- </span>
- <span class="cs">
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </span>
- <span class="vb">
- <xsl:text>(</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>)</xsl:text>
- </span>
- </xsl:template>
-
- <xsl:template match="pointerTo">
- <xsl:apply-templates /><xsl:text>*</xsl:text>
- </xsl:template>
-
- <xsl:template match="referenceTo">
- <xsl:apply-templates />
- <span class="cpp">%</span>
- </xsl:template>
-
- <xsl:template match="type">
- <xsl:param name="qualified" select="false()" />
- <referenceLink target="{@api}">
- <xsl:choose>
- <xsl:when test="specialization">
- <xsl:attribute name="show-templates">false</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="show-templates">true</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="$qualified">
- <xsl:attribute name="show-container">true</xsl:attribute>
- </xsl:if>
- </referenceLink>
- <xsl:apply-templates select="specialization" />
- </xsl:template>
-
- <xsl:template match="template">
- <xsl:value-of select="@name" />
- </xsl:template>
-
- <xsl:template match="specialization">
- <span class="cs"><</span>
- <span class="vb"><xsl:text>(Of </xsl:text></span>
- <span class="cpp"><</span>
- <xsl:for-each select="*">
- <xsl:apply-templates select="." />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <span class="cs">></span>
- <span class="vb">)</span>
- <span class="cpp">></span>
- </xsl:template>
--->
- <xsl:template match="member">
- <xsl:apply-templates select="type" mode="link" />
- <xsl:text>.</xsl:text>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Naming -->
-
- <!-- decorated names -->
-
- <xsl:template name="shortNameDecorated">
- <xsl:choose>
- <!-- type names must be handled specially to account for nested types -->
- <xsl:when test="$group='type'">
- <xsl:for-each select="/document/reference[1]"><xsl:call-template name="typeNameDecorated" /></xsl:for-each>
- </xsl:when>
- <!-- constructors use the type name -->
- <xsl:when test="$subgroup='constructor'">
- <xsl:for-each select="/document/reference/containers/type[1]"><xsl:call-template name="typeNameDecorated" /></xsl:for-each>
- </xsl:when>
- <!-- a normal name is just the name, followed by any generic templates -->
- <xsl:otherwise>
- <xsl:for-each select="/document/reference[1]">
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="decorated" />
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- plain names -->
-
- <xsl:template name="shortNamePlain">
- <xsl:choose>
- <xsl:when test="$group='type'">
- <xsl:for-each select="/document/reference"><xsl:call-template name="typeNamePlain" /></xsl:for-each>
- </xsl:when>
- <xsl:when test="$subgroup='constructor'">
- <xsl:for-each select="/document/reference/containers/type"><xsl:call-template name="typeNamePlain" /></xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-<!--
- <xsl:template name="typeNamePlain">
- <xsl:param name="annotate" select="false()" />
- <xsl:if test="(containers/type)|type">
- <xsl:for-each select="(containers/type)|type">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotate" select="$annotate" />
- </xsl:call-template>
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="$annotate and templates/template">
- <xsl:value-of select="concat('`',count(templates/template))"/>
- </xsl:if>
- </xsl:template>
--->
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" > + + <xsl:import href="../../shared/transforms/utilities_reference.xsl"/> + + <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" /> + + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + <xsl:param name="metadata" value="false" /> + <xsl:param name="languages" /> + + <xsl:include href="utilities_metadata.xsl" /> + + <xsl:template match="/"> + <html> + <head> + <title><xsl:call-template name="topicTitlePlain"/></title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertFilename" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + <script type="text/javascript"> + <xsl:text>var store = new CookieDataStore('docs');</xsl:text> + + <xsl:text>registerEventHandler(window, 'load', function() { var ss = new SplitScreen('control', 'main'); selectLanguage(store.get('lang')); });</xsl:text> + + <!-- + <xsl:text>registerEventHandler(window, 'load', function() { selectLanguage(store.get('lang')); });</xsl:text> + --> + </script> + <xsl:call-template name="control"/> + <xsl:call-template name="main"/> + </body> + </html> + </xsl:template> + + <!-- useful global variables --> + + <xsl:variable name="tgroup" select="/document/reference/topicdata/@group" /> + <xsl:variable name="tsubgroup" select="/document/reference/topicdata/@subgroup" /> + + <xsl:variable name="group" select="/document/reference/apidata/@group" /> + <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" /> + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>StyleUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>SplitScreen.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>ElementCollection.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>MemberFilter.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>CollapsibleSection.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>LanguageFilter.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>CookieDataStore.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + </xsl:template> + + <xsl:template match="parameters"> + <div id="parameters"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="parameter"> + <xsl:variable name="parameterName" select="@name" /> + <dl paramName="{$parameterName}"> + <dt> + <span class="parameter"><xsl:value-of select="$parameterName"/></span> + <xsl:text> (</xsl:text> + <xsl:apply-templates select="*[1]" mode="link" /> + <xsl:text>)</xsl:text> + </dt> + <dd> + <xsl:call-template name="getParameterDescription"> + <xsl:with-param name="name" select="@name" /> + </xsl:call-template> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template match="element" mode="root"> + <tr> + <td> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="getElementDescription" /><br /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="namespace"> + <tr> + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:text>; public</xsl:text> + </xsl:attribute> + <td> + <xsl:call-template name="apiIcon" /> + </td> + <td> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteShort" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <br /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="enumeration"> + <tr> + <xsl:variable name="id" select="@api" /> + <td target="{$id}"> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:call-template name="getElementDescription" /> + <br /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="type"> + <tr> + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>; public</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='family'"> + <xsl:text>; protected</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; public</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="memberdata/@static = 'true'"> + <xsl:text>; static</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; instance</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="string(containers/type/@api) = $key"> + <xsl:text>; declared</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; inherited</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <td> + <xsl:call-template name="apiIcon" /> + </td> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="content"> + <member api="{@api}"> + <xsl:copy-of select="containers/type" /> + </member> + </referenceLink> + <!-- + <referenceLink target="{@api}" display-target="{@display-api}" /> + --> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteShort" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="($group != 'member') and (string(containers/type/@api) != $key)"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:apply-templates select="overrides/member" /> + </parameter> + </include> + </xsl:when> + </xsl:choose> + <br /> + </td> + </tr> + </xsl:template> + + <xsl:template name="insertFilename"> + <meta name="file" content="{/document/reference/file/@name}" /> + </xsl:template> + + <!-- writing templates --> + + <xsl:template name="csTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text><</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>></xsl:text> + </xsl:template> + + <xsl:template name="csTemplatesInIndex" > + <xsl:text>%3C</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:text>%2C </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>%3E</xsl:text> + </xsl:template> + + <xsl:template name="vbTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text>(Of </xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template name="typeTitle"> + <xsl:if test="containers/container[@type]"> + <xsl:for-each select="containers/container[@type]"> + <xsl:call-template name="typeTitle" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="count(templates/template) > 0"> + <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each> + </xsl:if> + </xsl:template> + + <!-- document body --> + + <!-- control window --> + + <xsl:template name="control"> + <div id="control"> + <span class="productTitle"><include item="productTitle" /></span><br/> + <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/> + <div id="toolbar"> + <span id="chickenFeet"><xsl:call-template name="chickenFeet" /></span> + <xsl:if test="count($languages/language) > 0"> + <span id="languageFilter"> + <select id="languageSelector" onchange="var names = this.value.split(' '); toggleVisibleLanguage(names[1]); lfc.switchLanguage(names[0]); store.set('lang',this.value); store.save();"> + <xsl:for-each select="$languages/language"> + <option value="{@name} {@style}"><include item="{@label}Label" /></option> + </xsl:for-each> + </select> + </span> + <script>var sd = getStyleDictionary(); var lfc = new LanguageFilterController();</script> + </xsl:if> + </div> + </div> + </xsl:template> + + <!-- Title in topic --> + + <xsl:template name="topicTitlePlain"> + <include> + <xsl:attribute name="item"> + <xsl:choose> + <xsl:when test="boolean($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:when test="boolean($subgroup)"> + <xsl:value-of select="$subgroup" /> + </xsl:when> + <xsl:when test="boolean($group)"> + <xsl:value-of select="$group" /> + </xsl:when> + <xsl:when test="boolean($tsubgroup)"> + <xsl:value-of select="$tsubgroup" /> + </xsl:when> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNamePlain" /> +<!-- + <xsl:choose> + <xsl:when test="boolean($group='type')"> + <xsl:for-each select="/document/reference"><xsl:call-template name="typeTitle" /></xsl:for-each> + </xsl:when> + <xsl:when test="$subgroup='constructor'"> + <xsl:for-each select="/document/reference/containers/type"><xsl:call-template name="typeTitle"/></xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> +--> + </parameter> + <parameter> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="parameterNames" /> + </xsl:for-each> + </parameter> + </include> + </xsl:template> + + <xsl:template name="topicTitleDecorated"> + <include> + <xsl:attribute name="item"> + <xsl:choose> + <xsl:when test="boolean($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:when test="boolean($subgroup)"> + <xsl:value-of select="$subgroup" /> + </xsl:when> + <xsl:when test="boolean($group)"> + <xsl:value-of select="$group" /> + </xsl:when> + <xsl:when test="boolean($tsubgroup)"> + <xsl:value-of select="$tsubgroup" /> + </xsl:when> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNameDecorated" /> + </parameter> + <parameter> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="parameterNames" /> + </xsl:for-each> + </parameter> + </include> + </xsl:template> + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- chicken feet navigation --> + + <xsl:template name="chickenFeet"> + <include item="rootLink" /> + <xsl:if test="boolean(/document/reference/containers/namespace)"> + <xsl:text> ► </xsl:text> + <referenceLink target="{document/reference/containers/namespace/@api}" /> + </xsl:if> + <xsl:if test="boolean(/document/reference/containers/type)"> + <xsl:text> ► </xsl:text> + <xsl:apply-templates select="/document/reference/containers/type" mode="link" /> + </xsl:if> + <xsl:if test="$group"> + <xsl:text> ► </xsl:text> + <referenceLink target="{$key}" /> + </xsl:if> + </xsl:template> + + <!-- main window --> + + <xsl:template name="main"> + <div id="main"> + <xsl:call-template name="head" /> + <xsl:call-template name="body" /> + <xsl:call-template name="foot" /> + </div> + </xsl:template> + + <xsl:template name="head"> + <include item="header" /> + </xsl:template> + + <xsl:template match="syntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="syntaxTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="syntaxContent" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="usyntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="usyntaxTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="usyntaxContent" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="syntaxContent"> + <table class="filter"> + <tr class="tabs" id="syntaxTabs"> + <xsl:for-each select="div[@codeLanguage]"> + <td class="tab" x-lang="{@codeLanguage}" onclick="st.toggleClass('x-lang','{@codeLanguage}','activeTab','tab'); sb.toggleStyle('x-lang','{@codeLanguage}','display','block','none');" ><include item="{@codeLanguage}Label" /></td> + </xsl:for-each> + </tr> + </table> + <div id="syntaxBlocks"> + <xsl:for-each select="div[@codeLanguage]"> + <div class="code" x-lang="{@codeLanguage}"><pre><xsl:copy-of select="./node()" /></pre></div> + </xsl:for-each> + </div> + <script type="text/javascript"><xsl:text> + var st = new ElementCollection('syntaxTabs'); + var sb = new ElementCollection('syntaxBlocks'); + lfc.registerTabbedArea(st, sb); + st.toggleClass('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','activeTab','tab'); + sb.toggleStyle('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','display','block','none'); + </xsl:text></script> + </xsl:template> + + <xsl:template name="usyntaxContent"> + <table class="filter"> + <tr class="tabs" id="usyntaxTabs"> + <xsl:for-each select="div[@codeLanguage]"> + <td class="tab" x-lang="{@codeLanguage}" onclick="ust.toggleClass('x-lang','{@codeLanguage}','activeTab','tab'); usb.toggleStyle('x-lang','{@codeLanguage}','display','block','none');" > + <include item="{@codeLanguage}Label" /> + </td> + </xsl:for-each> + </tr> + </table> + <div id="usyntaxBlocks"> + <xsl:for-each select="div[@codeLanguage]"> + <div class="code" x-lang="{@codeLanguage}"> + <pre> + <xsl:copy-of select="./node()" /> + </pre> + </div> + </xsl:for-each> + </div> + <script type="text/javascript"> + <xsl:text> + var ust = new ElementCollection('usyntaxTabs'); + var usb = new ElementCollection('usyntaxBlocks'); + lfc.registerTabbedArea(ust, usb); + ust.toggleClass('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','activeTab','tab'); + usb.toggleStyle('x-lang','</xsl:text><xsl:value-of select="div[1]/@codeLanguage" /><xsl:text>','display','block','none'); + </xsl:text> + </script> + </xsl:template> + + <xsl:template match="elements" mode="root"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList"> + <tr> + <th class="nameColumn"><include item="namespaceNameHeader"/></th> + <th class="descriptionColumn"><include item="namespaceDescriptionHeader" /></th> + </tr> + <xsl:apply-templates select="element" mode="root"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="namespace"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="typesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="filter"> + <tr class="tabs" id="typeFilter"> + <td class="tab" value="all" onclick="tt.toggleClass('value','all','activeTab','tab'); tf.subgroup='all'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="allTypesFilterLabel" /></td> + <xsl:if test="element/apidata[@subgroup='class']"> + <td class="tab" value="class" onclick="tt.toggleClass('value','class','activeTab','tab'); tf.subgroup='class'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="classTypesFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='structure']"> + <td class="tab" value="structure" onclick="tt.toggleClass('value','structure','activeTab','tab'); tf.subgroup='structure'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="structureTypesFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='interface']"> + <td class="tab" value="interface" onclick="tt.toggleClass('value','interface','activeTab','tab'); tf.subgroup='interface'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="interfaceTypesFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='enumeration']"> + <td class="tab" value="enumeration" onclick="tt.toggleClass('value','enumeration','activeTab','tab'); tf.subgroup='enumeration'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="enumerationTypesFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='delegate']"> + <td class="tab" value="delegate" onclick="tt.toggleClass('value','delegate','activeTab','tab'); tf.subgroup='delegate'; ts.process(getInstanceDelegate(tf,'filterElement'));"><include item="delegateTypesFilterLabel" /></td> + </xsl:if> + </tr> + </table> + <table id="typeList" class="members"> + <tr> + <th class="iconColumn"><include item="typeIconHeader"/></th> + <th class="nameColumn"><include item="typeNameHeader"/></th> + <th class="descriptionColumn"><include item="typeDescriptionHeader" /></th> + </tr> + <xsl:apply-templates select="element" mode="namespace"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + <script type="text/javascript"><xsl:text> + var tt = new ElementCollection('typeFilter'); + var ts = new ElementCollection('typeList'); + var tf = new TypeFilter(); + tt.toggleClass('value','all','activeTab','tab'); + </xsl:text></script> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="elements" mode="enumeration"> + <xsl:if test="count(element) > 0"> + <div id="enumerationSection"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList"> + <tr> + <th class="nameColumn"><include item="memberNameHeader"/></th> + <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th> + </tr> + <!-- don't sort for enumeration members --> + <xsl:apply-templates select="element" mode="enumeration" /> + </table> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="type"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="filter"> + <tr class="tabs" id="memberTabs"> + <td class="tab" value="all" onclick="mt.toggleClass('value','all','activeTab','tab'); mf.subgroup='all'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="allMembersFilterLabel" /></td> + <xsl:if test="element/apidata[@subgroup='constructor']"> + <td class="tab" value="constructor" onclick="mt.toggleClass('value','constructor','activeTab','tab'); mf.subgroup='constructor'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="constructorMembersFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='method']"> + <td class="tab" value="method" onclick="mt.toggleClass('value','method','activeTab','tab'); mf.subgroup='method'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="methodMembersFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='property']"> + <td class="tab" value="property" onclick="mt.toggleClass('value','property','activeTab','tab'); mf.subgroup='property'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="propertyMembersFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='field']"> + <td class="tab" value="field" onclick="mt.toggleClass('value','field','activeTab','tab'); mf.subgroup='field'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="fieldMembersFilterLabel" /></td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='event']"> + <td class="tab" value="event" onclick="mt.toggleClass('value','event','activeTab','tab'); mf.subgroup='event'; ms.process(getInstanceDelegate(mf,'filterElement'));"><include item="eventMembersFilterLabel" /></td> + </xsl:if> + </tr> + <tr> + <td class="line" colspan="2"> + <label for="public"><input id="public" type="checkbox" checked="true" onclick="mf['public'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="publicMembersFilterLabel" /></label><br/> + <label for="protected"><input id="protected" type="checkbox" checked="true" onclick="mf['protected'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="protectedMembersFilterLabel" /></label> + </td> + <td class="line" colspan="2"> + <label for="instance"><input id="instance" type="checkbox" checked="true" onclick="mf['instance'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="instanceMembersFilterLabel" /></label><br/> + <label for="static"><input id="static" type="checkbox" checked="true" onclick="mf['static'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="staticMembersFilterLabel" /></label> + </td> + <td class="line" colspan="2"> + <label for="declared"><input id="declared" type="checkbox" checked="true" onclick="mf['declared'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="declaredMembersFilterLabel" /></label><br/> + <label for="inherited"><input id="inherited" type="checkbox" checked="true" onclick="mf['inherited'] = this.checked; ms.process(getInstanceDelegate(mf,'filterElement'));" /> <include item="inheritedMembersFilterLabel" /></label> + </td> + </tr> + </table> + <table class="members" id="memberList"> + <tr> + <th class="iconColumn"><include item="memberIconHeader"/></th> + <th class="nameColumn"><include item="memberNameHeader"/></th> + <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th> + </tr> + <xsl:apply-templates select="element" mode="type"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + <script type="text/javascript"><xsl:text> + var mt = new ElementCollection('memberTabs'); + var ms = new ElementCollection('memberList'); + var mf = new MemberFilter(); + mt.toggleClass('value','all','activeTab','tab'); + </xsl:text></script> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="overload"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList"> + <tr> + <th class="iconColumn"><include item="memberIconHeader"/></th> + <th class="nameColumn"><include item="memberNameHeader"/></th> + <th class="descriptionColumn"><include item="memberDescriptionHeader" /></th> + </tr> + <xsl:apply-templates select="element" mode="type"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="apiIcon"> + <!-- determine visibility prefix --> + <xsl:variable name="visibility"> + <xsl:choose> + <xsl:when test="apidata/@group='type'"> + <xsl:choose> + <xsl:when test="typedata/@visibility='public'"> + <xsl:text>pub</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>priv</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="apidata/@group='member'"> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>pub</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family and assembly'"> + <xsl:text>prot</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>priv</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:variable> + <!-- determine icon file name --> + <xsl:variable name="kind"> + <xsl:choose> + <xsl:when test="apidata/@group='type'"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='class'"> + <xsl:text>class</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='structure'"> + <xsl:text>structure</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='interface'"> + <xsl:text>interface</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='delegate'"> + <xsl:text>delegate</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='enumeration'"> + <xsl:text>enum</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="apidata/@group='member'"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='field'"> + <xsl:text>field</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='property'"> + <xsl:text>property</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='method'"> + <xsl:choose> + <xsl:when test="apidata/@subsubgroup='operator'"> + <xsl:text>operator</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>method</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="apidata/@subgroup='constructor'"> + <xsl:text>method</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='event'"> + <xsl:text>event</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:variable> + <!-- write out an image tag for the icon --> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="concat($visibility,$kind,'.gif')"/> + </parameter> + </includeAttribute> + </img> + <!-- + <xsl:choose> + <xsl:when test="apidata/@group='type'"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='class'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubclass.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="publicClassAltText" /> + </img> + </xsl:when> + <xsl:when test="apidata/@subgroup='structure'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubstructure.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="publicStructureAltText" /> + </img> + </xsl:when> + <xsl:when test="apidata/@subgroup='interface'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="publicInterfaceAltText" /> + </img> + </xsl:when> + <xsl:when test="apidata/@subgroup='delegate'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubdelegate.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="publicDelegateAltText" /> + </img> + </xsl:when> + <xsl:when test="apidata/@subgroup='enumeration'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubenum.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="publicEnumerationAltText" /> + </img> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="apidata/@group='member'"> + <xsl:variable name="memberVisibility"> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>pub</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'"> + <xsl:text>prot</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='private'"> + <xsl:text>priv</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>pub</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="memberSubgroup"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='constructor'"> + <xsl:text>method</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="memberIcon" select="concat($memberVisibility,$memberSubgroup,'.gif')" /> + <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + </img> + </xsl:if> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="$memberIcon" /> + </parameter> + </includeAttribute> + </img> + </xsl:if> + </xsl:when> + </xsl:choose> + --> + <xsl:if test="memberdata/@static='true'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>static.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="staticAltText" /> + </img> + </xsl:if> + + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <include item="footer" /> + </xsl:template> + + <!-- Assembly information --> + + <xsl:template match="library"> + <p><include item="locationInformation"> + <parameter><span data="assembly"><xsl:value-of select="@assembly"/></span></parameter> + <parameter><xsl:value-of select="@module" /></parameter> + </include></p> + </xsl:template> + + <!-- Version information --> + + <xsl:template match="versions"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="versionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="processVersions" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="processVersions"> + <xsl:choose> + <xsl:when test="versions"> + <ul> + <xsl:for-each select="versions"> + <li> + <include item="{@name}" /> + <xsl:text>: </xsl:text> + <xsl:call-template name="processVersions" /> + </li> + </xsl:for-each> + </ul> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="version"> + <include item="{@name}" /> + <xsl:if test="not(position()=last())"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Interface implementors --> + + <xsl:template match="implementors"> + <xsl:call-template name="section"> + <xsl:with-param name="title"> + <include item="implementorsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <ul> + <xsl:for-each select="type"> + <li> + <xsl:apply-templates select="self::type" mode="link" /> + </li> + </xsl:for-each> + </ul> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- Inheritance hierarchy --> + + <xsl:template match="family"> + <xsl:call-template name="section"> + <xsl:with-param name="title"><include item="familyTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:variable name="ancestorCount" select="count(ancestors/*)" /> + <xsl:variable name="childCount" select="count(descendents/*)" /> + <xsl:variable name="columnCount"> + <xsl:choose> + <xsl:when test="$childCount = 0"> + <xsl:value-of select="$ancestorCount + 1" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$ancestorCount + 2" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <table cellspacing="0" cellpadding="0"> + <xsl:for-each select="ancestors/type"> + <xsl:sort select="position()" data-type="number" order="descending" /> + <tr> + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="position() - 2" /> + </xsl:call-template> + + <xsl:if test="position() > 1"> + <td> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>LastChild.gif</parameter> + </includeAttribute> + </img> + </td> + </xsl:if> + + <td colspan="{$columnCount - position() + 1}"> + <xsl:apply-templates select="self::type" mode="link" /> + </td> + </tr> + </xsl:for-each> + + <tr> + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="$ancestorCount - 1" /> + </xsl:call-template> + + <xsl:if test="$ancestorCount > 0"> + <td> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>LastChild.gif</parameter> + </includeAttribute> + </img> + </td> + </xsl:if> + + <td> + <xsl:if test="$childCount > 0"> + <xsl:attribute name="colspan">2</xsl:attribute> + </xsl:if> + <referenceLink target="{$key}" /> + </td> + </tr> + + <xsl:for-each select="descendents/type"> + + <tr> + + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="$ancestorCount" /> + </xsl:call-template> + + <td> + <xsl:choose> + <xsl:when test="position()=last()"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>LastChild.gif</parameter> + </includeAttribute> + </img> + </xsl:when> + <xsl:otherwise> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>NotLastChild.gif</parameter> + </includeAttribute> + </img> + </xsl:otherwise> + </xsl:choose> + </td> + + <td><xsl:apply-templates select="self::type" mode="link" /></td> + + </tr> + + </xsl:for-each> + + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="createTableEntries"> + <xsl:param name="count" /> + <xsl:if test="number($count) > 0"> + <td> </td> + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="number($count)-1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + <!-- Link to create type --> +<!-- + <xsl:template match="arrayOf"> + <span class="cpp">array<</span> + <xsl:apply-templates /> + <span class="cpp"> + <xsl:if test="number(@rank) > 1"> + <xsl:text>,</xsl:text> + <xsl:value-of select="@rank"/> + </xsl:if> + <xsl:text>></xsl:text> + </span> + <span class="cs"> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </span> + <span class="vb"> + <xsl:text>(</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>)</xsl:text> + </span> + </xsl:template> + + <xsl:template match="pointerTo"> + <xsl:apply-templates /><xsl:text>*</xsl:text> + </xsl:template> + + <xsl:template match="referenceTo"> + <xsl:apply-templates /> + <span class="cpp">%</span> + </xsl:template> + + <xsl:template match="type"> + <xsl:param name="qualified" select="false()" /> + <referenceLink target="{@api}"> + <xsl:choose> + <xsl:when test="specialization"> + <xsl:attribute name="show-templates">false</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="show-templates">true</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$qualified"> + <xsl:attribute name="show-container">true</xsl:attribute> + </xsl:if> + </referenceLink> + <xsl:apply-templates select="specialization" /> + </xsl:template> + + <xsl:template match="template"> + <xsl:value-of select="@name" /> + </xsl:template> + + <xsl:template match="specialization"> + <span class="cs"><</span> + <span class="vb"><xsl:text>(Of </xsl:text></span> + <span class="cpp"><</span> + <xsl:for-each select="*"> + <xsl:apply-templates select="." /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <span class="cs">></span> + <span class="vb">)</span> + <span class="cpp">></span> + </xsl:template> +--> + <xsl:template match="member"> + <xsl:apply-templates select="type" mode="link" /> + <xsl:text>.</xsl:text> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Naming --> + + <!-- decorated names --> + + <xsl:template name="shortNameDecorated"> + <xsl:choose> + <!-- type names must be handled specially to account for nested types --> + <xsl:when test="$group='type'"> + <xsl:for-each select="/document/reference[1]"><xsl:call-template name="typeNameDecorated" /></xsl:for-each> + </xsl:when> + <!-- constructors use the type name --> + <xsl:when test="$subgroup='constructor'"> + <xsl:for-each select="/document/reference/containers/type[1]"><xsl:call-template name="typeNameDecorated" /></xsl:for-each> + </xsl:when> + <!-- a normal name is just the name, followed by any generic templates --> + <xsl:otherwise> + <xsl:for-each select="/document/reference[1]"> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="decorated" /> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- plain names --> + + <xsl:template name="shortNamePlain"> + <xsl:choose> + <xsl:when test="$group='type'"> + <xsl:for-each select="/document/reference"><xsl:call-template name="typeNamePlain" /></xsl:for-each> + </xsl:when> + <xsl:when test="$subgroup='constructor'"> + <xsl:for-each select="/document/reference/containers/type"><xsl:call-template name="typeNamePlain" /></xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> +<!-- + <xsl:template name="typeNamePlain"> + <xsl:param name="annotate" select="false()" /> + <xsl:if test="(containers/type)|type"> + <xsl:for-each select="(containers/type)|type"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotate" select="$annotate" /> + </xsl:call-template> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="$annotate and templates/template"> + <xsl:value-of select="concat('`',count(templates/template))"/> + </xsl:if> + </xsl:template> +--> +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template.HxF b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template.HxF index 5cbfd28..7a04fb3 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template.HxF +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template.HxF @@ -1,8 +1,8 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpFileList SYSTEM "MS-Help://Hx/Resources/HelpFileList.dtd">
-<HelpFileList DTDVersion="1.0">
- <File Url="icons\*.gif" />
- <File Url="scripts\*.js" />
- <File Url="styles\*.css" />
- <File Url="html\*.htm" />
-</HelpFileList>
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpFileList SYSTEM "MS-Help://Hx/Resources/HelpFileList.dtd"> +<HelpFileList DTDVersion="1.0"> + <File Url="icons\*.gif" /> + <File Url="scripts\*.js" /> + <File Url="styles\*.css" /> + <File Url="html\*.htm" /> +</HelpFileList> diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_A.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_A.HxK index ccd4ff6..4430fba 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_A.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_A.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd"> <HelpIndex Name="A" DTDVersion="1.0" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_B.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_B.HxK index d99ea60..dba159d 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_B.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_B.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd"> <HelpIndex Name="B" DTDVersion="1.0" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_F.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_F.HxK index 9fbb814..1dbf6f4 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_F.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_F.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd"> <HelpIndex Name="F" DTDVersion="1.0" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_K.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_K.HxK index fe6f735..fb9a52d 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_K.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_K.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://hx/resources/HelpIndex.DTD">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://hx/resources/HelpIndex.DTD"> <HelpIndex Name="K" Visible="Yes" DTDVersion="1.0" FileVersion="1.0" LangId="1033" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_N.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_N.HxK index 857eae4..6923ac1 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_N.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_N.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd"> <HelpIndex Name="NamedUrl" DTDVersion="1.0" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_S.HxK b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_S.HxK index bca3010..646b6de 100644 --- a/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_S.HxK +++ b/tools/Sandcastle/Presentation/Shared/HxsTemplate/template_S.HxK @@ -1,3 +1,3 @@ -<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd">
+<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE HelpIndex SYSTEM "MS-Help://Hx/Resources/HelpIndex.dtd"> <HelpIndex Name="S" DTDVersion="1.0" />
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/SharedDocModel.ps1 b/tools/Sandcastle/Presentation/Shared/SharedDocModel.ps1 index c44a298..abbf990 100644 --- a/tools/Sandcastle/Presentation/Shared/SharedDocModel.ps1 +++ b/tools/Sandcastle/Presentation/Shared/SharedDocModel.ps1 @@ -1,44 +1,44 @@ -
-# Shared Sandcastle build script overrides.
-
-function CreateOutputTemplate {
- WriteInfo "Creating output template."
- MakePath $TempDir\Output\html
- MakePath $TempDir\Output\Media
- copy-item -r $DxRoot\Presentation\$Style\icons $TempDir\Output
- copy-item -r $DxRoot\Presentation\$Style\scripts $TempDir\Output
- copy-item -r $DxRoot\Presentation\$Style\styles $TempDir\Output
-}
-
-function CreateChmTemplate {
- WriteInfo "Creating CHM template."
- MakePath $TempDir\Chm\html
- copy-item -r $TempDir\Output\media $TempDir\Chm
- copy-item -r $TempDir\Output\icons $TempDir\Chm
- copy-item -r $TempDir\Output\scripts $TempDir\Chm
- copy-item -r $TempDir\Output\styles $TempDir\Chm
-
- MakePath $TempDir\Intellisense
-}
-
-function CreateHxsTemplate {
- WriteInfo "Creating HxS template."
- $s = "$DxRoot\Presentation\Shared\HxsTemplate"
- $d = "$TempDir\Output\$Name"
- copy-item $s\template.HxF "$($d).HxF"
- copy-item $s\template_A.HxK "$($d)_A.HxK"
- copy-item $s\template_B.HxK "$($d)_B.HxK"
- copy-item $s\template_F.HxK "$($d)_F.HxK"
- copy-item $s\template_K.HxK "$($d)_K.HxK"
- copy-item $s\template_N.HxK "$($d)_N.HxK"
- copy-item $s\template_S.HxK "$($d)_S.HxK"
-}
-
-function CreateWebsiteTemplate {
- WriteInfo "Creating website template."
- MakePath $WebOutputDir
- MakePath $WebOutputDir\api
- copy-item -r $DxRoot\Presentation\$Style\icons $WebOutputDir
- copy-item -r $DxRoot\Presentation\$Style\styles $WebOutputDir
- copy-item -r -force $WebTemplate\* $WebOutputDir
+ +# Shared Sandcastle build script overrides. + +function CreateOutputTemplate { + WriteInfo "Creating output template." + MakePath $TempDir\Output\html + MakePath $TempDir\Output\Media + copy-item -r $DxRoot\Presentation\$Style\icons $TempDir\Output + copy-item -r $DxRoot\Presentation\$Style\scripts $TempDir\Output + copy-item -r $DxRoot\Presentation\$Style\styles $TempDir\Output +} + +function CreateChmTemplate { + WriteInfo "Creating CHM template." + MakePath $TempDir\Chm\html + copy-item -r $TempDir\Output\media $TempDir\Chm + copy-item -r $TempDir\Output\icons $TempDir\Chm + copy-item -r $TempDir\Output\scripts $TempDir\Chm + copy-item -r $TempDir\Output\styles $TempDir\Chm + + MakePath $TempDir\Intellisense +} + +function CreateHxsTemplate { + WriteInfo "Creating HxS template." + $s = "$DxRoot\Presentation\Shared\HxsTemplate" + $d = "$TempDir\Output\$Name" + copy-item $s\template.HxF "$($d).HxF" + copy-item $s\template_A.HxK "$($d)_A.HxK" + copy-item $s\template_B.HxK "$($d)_B.HxK" + copy-item $s\template_F.HxK "$($d)_F.HxK" + copy-item $s\template_K.HxK "$($d)_K.HxK" + copy-item $s\template_N.HxK "$($d)_N.HxK" + copy-item $s\template_S.HxK "$($d)_S.HxK" +} + +function CreateWebsiteTemplate { + WriteInfo "Creating website template." + MakePath $WebOutputDir + MakePath $WebOutputDir\api + copy-item -r $DxRoot\Presentation\$Style\icons $WebOutputDir + copy-item -r $DxRoot\Presentation\$Style\styles $WebOutputDir + copy-item -r -force $WebTemplate\* $WebOutputDir }
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/configuration/xamlSyntax.config b/tools/Sandcastle/Presentation/Shared/configuration/xamlSyntax.config index 5c74a7b..60f3830 100644 --- a/tools/Sandcastle/Presentation/Shared/configuration/xamlSyntax.config +++ b/tools/Sandcastle/Presentation/Shared/configuration/xamlSyntax.config @@ -1,65 +1,65 @@ -<xamlConfiguration>
- <!-- Classes whose subclasses (and members) do NOT get XAML syntax even though they otherwise satisfy the XAML-ness algorithm -->
- <xamlExcludedAncestors>
- <class api="T:System.EventArgs"/>
- <class api="T:System.Exception"/>
- <class api="T:System.Security.Permissions.Permission"/>
- </xamlExcludedAncestors>
-
- <!-- List the assemblies for which XamlGenerator generates XAML syntax or boilerplate.
- The XAML syntax blocks for members of all other assemblies get a generic boilerplate, e.g. "Not applicable." -->
- <xamlAssemblies>
- <assembly name="PresentationFramework">
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation">
- <clrNamespace name="System.Windows.Input"/>
- <clrNamespace name="System.Windows"/>
- <clrNamespace name="System.Windows.Media.Animation"/>
- <clrNamespace name="System.Windows.Controls.Primitives"/>
- <clrNamespace name="System.Windows.Data"/>
- <clrNamespace name="System.Windows.Navigation"/>
- <clrNamespace name="System.Windows.Shapes"/>
- <clrNamespace name="System.Windows.Documents"/>
- <clrNamespace name="System.Windows.Controls"/>
- </xmlns>
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml">
- <clrNamespace name="System.Windows.Markup"/>
- </xmlns>
- </assembly>
- <assembly name="PresentationCore">
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation">
- <clrNamespace name="System.Windows.Input"/>
- <clrNamespace name="System.Windows"/>
- <clrNamespace name="System.Windows.Media.Imaging"/>
- <clrNamespace name="System.Windows.Media.TextFormatting"/>
- <clrNamespace name="System.Windows.Media.Effects"/>
-
- <clrNamespace name="System.Windows.Media"/>
- <clrNamespace name="System.Windows.Media.Animation"/>
- <clrNamespace name="System.Windows.Media.Media3D"/>
- <clrNamespace name="System.Windows.Ink"/>
- <clrNamespace name="System.Windows.Automation"/>
- </xmlns>
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml">
- <clrNamespace name="System.Windows.Markup"/>
- </xmlns>
- </assembly>
- <assembly name="WindowsBase">
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation">
- <clrNamespace name="System.Windows.Input"/>
- <clrNamespace name="System.Windows"/>
- <clrNamespace name="System.Windows.Media"/>
- </xmlns>
- </assembly>
- <assembly name="WindowsFormsIntegration">
- <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation">
- <clrNamespace name="System.Windows.Forms.Integration"/>
- </xmlns>
- </assembly>
- <assembly name="PresentationFramework.Aero"/>
- <assembly name="PresentationFramework.Luna"/>
- <assembly name="PresentationFramework.Classic"/>
- <assembly name="PresentationFramework.Royale"/>
- <assembly name="ReachFramework"/>
- </xamlAssemblies>
-</xamlConfiguration>
-
+<xamlConfiguration> + <!-- Classes whose subclasses (and members) do NOT get XAML syntax even though they otherwise satisfy the XAML-ness algorithm --> + <xamlExcludedAncestors> + <class api="T:System.EventArgs"/> + <class api="T:System.Exception"/> + <class api="T:System.Security.Permissions.Permission"/> + </xamlExcludedAncestors> + + <!-- List the assemblies for which XamlGenerator generates XAML syntax or boilerplate. + The XAML syntax blocks for members of all other assemblies get a generic boilerplate, e.g. "Not applicable." --> + <xamlAssemblies> + <assembly name="PresentationFramework"> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation"> + <clrNamespace name="System.Windows.Input"/> + <clrNamespace name="System.Windows"/> + <clrNamespace name="System.Windows.Media.Animation"/> + <clrNamespace name="System.Windows.Controls.Primitives"/> + <clrNamespace name="System.Windows.Data"/> + <clrNamespace name="System.Windows.Navigation"/> + <clrNamespace name="System.Windows.Shapes"/> + <clrNamespace name="System.Windows.Documents"/> + <clrNamespace name="System.Windows.Controls"/> + </xmlns> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml"> + <clrNamespace name="System.Windows.Markup"/> + </xmlns> + </assembly> + <assembly name="PresentationCore"> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation"> + <clrNamespace name="System.Windows.Input"/> + <clrNamespace name="System.Windows"/> + <clrNamespace name="System.Windows.Media.Imaging"/> + <clrNamespace name="System.Windows.Media.TextFormatting"/> + <clrNamespace name="System.Windows.Media.Effects"/> + + <clrNamespace name="System.Windows.Media"/> + <clrNamespace name="System.Windows.Media.Animation"/> + <clrNamespace name="System.Windows.Media.Media3D"/> + <clrNamespace name="System.Windows.Ink"/> + <clrNamespace name="System.Windows.Automation"/> + </xmlns> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml"> + <clrNamespace name="System.Windows.Markup"/> + </xmlns> + </assembly> + <assembly name="WindowsBase"> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation"> + <clrNamespace name="System.Windows.Input"/> + <clrNamespace name="System.Windows"/> + <clrNamespace name="System.Windows.Media"/> + </xmlns> + </assembly> + <assembly name="WindowsFormsIntegration"> + <xmlns uri="http://schemas.microsoft.com/winfx/xaml/presentation"> + <clrNamespace name="System.Windows.Forms.Integration"/> + </xmlns> + </assembly> + <assembly name="PresentationFramework.Aero"/> + <assembly name="PresentationFramework.Luna"/> + <assembly name="PresentationFramework.Classic"/> + <assembly name="PresentationFramework.Royale"/> + <assembly name="ReachFramework"/> + </xamlAssemblies> +</xamlConfiguration> + diff --git a/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml b/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml index 1f5b4bf..cf4e580 100644 --- a/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml +++ b/tools/Sandcastle/Presentation/Shared/content/syntax_content.xml @@ -1,87 +1,87 @@ -<content xml:space="preserve">
-
- <!-- C# messages -->
- <item id="UnsupportedOperator_CSharp">C# does not support this operator.</item>
-
- <!-- C++ messages -->
- <item id="UnsupportedOperator_ManagedCPlusPlus">Visual C++ does not support this operator.</item>
-
- <!-- VB messages -->
- <item id="UnsupportedUnsafe_VisualBasic">Visual Basic does not support APIs that consume or return unsafe types.</item>
- <item id="UnsupportedOperator_VisualBasic">Visual Basic does not support this operator.</item>
- <item id="UnsupportedStaticClass_VisualBasic">Visual Basic does not support the declaration of static classes.</item>
-
- <!-- J# messages -->
- <item id="UnsupportedUnsafe_JSharp">J# does not support APIs that consume or return unsafe types.</item>
- <item id="UnsupportedGeneric_JSharp">J# supports the use of generic APIs, but not the declaration of new ones.</item>
- <item id="UnsupportedOperator_JSharp">J# does not support overloaded operators.</item>
- <item id="UnsupportedStaticConstructor_JSharp">J# does not support static constructors.</item>
- <item id="UnsupportedExplicit_JSharp">J# supports the use of explicit interface implementations, but not the declaration of new ones.</item>
-
- <!-- JScript messages -->
- <item id="UnsupportedUnsafe_JScript">JScript does not support APIs that consume or return unsafe types.</item>
- <item id="UnsupportedGeneric_JScript">JScript does not support generic types or methods.</item>
- <item id="UnsupportedExplicit_Jscript">JScript does not support explicit interface implementations.</item>
- <item id="UnsupportedOperator_JScript">JScript does not support overloaded operators.</item>
- <item id="UnsupportedEvent_JScript">JScript does not support events.</item>
- <item id="UnsupportedDelegate_JScript">JScript does not support delegates.</item>
- <item id="UnsupportedStructure_JScript">JScript supports the use of structures, but not the declaration of new ones.</item>
- <item id="UnsupportedIndex_JScript">JScript does not support indexed properties.</item>
- <item id="UnsupportedCast_JScript">JScript does not support the declaration of new casting operators.</item>
- <item id="UnsupportedStaticConstructor_JScript">JScript does not support static constructors.</item>
-
- <!-- JavaScript(Script#) messages-->
- <item id="UnsupportedType_ScriptSharp">This type supports the Script# infrastructure and cannot be used directly from JavaScript.</item>
- <!-- VB usages message -->
- <item id="UnsupportedUnsafe_VisualBasicUsage">Visual basic does not support APIs that consume or return unsafe types.</item>
- <item id="UnsupportedOperator_VisualBasicUsage">Visual basic does not support this operator.</item>
- <item id="UnsupportedStaticClass_VisualBasicUsage">You do not need to declare an instance of a static class in order to access its members.</item>
-
- <!-- XAML Syntax Boilerplate -->
- <item id="classXamlSyntax_abstract">This class is abstract; see <a href="#familyToggle" onclick="OpenSection(familyToggle)"><include item="familyTitle"/></a> for derived non-abstract classes usable in XAML.</item>
- <item id="classXamlSyntax_excludedSubClass">This managed class is not typically used in XAML.</item>
- <item id="classXamlSyntax_noDefaultCtor">You cannot directly create an instance of this class in XAML.</item>
- <item id="classXamlSyntax_noDefaultCtorWithTypeConverter"></item> <!-- this item intentionally empty, per spec -->
-
- <item id="structXamlSyntax_nonXaml">You cannot use this managed structure in XAML.</item>
- <item id="structXamlSyntax_attributeUsage"></item> <!-- this item intentionally empty, per spec -->
-
- <item id="eventXamlSyntax_parentIsExcludedSubClass">Members of this class are either not typically used in XAML, or cannot be used in XAML.</item>
- <item id="eventXamlSyntax_noXamlSyntaxForInterfaceMembers">You cannot use this event in XAML.</item>
- <item id="eventXamlSyntax_nonXamlParent">You cannot use this event in XAML.</item>
- <item id="eventXamlSyntax_notPublic">You cannot use this event in XAML.</item>
- <item id="eventXamlSyntax_abstract">You cannot use this event in XAML.</item>
- <item id="eventXamlSyntax_nonXaml">You cannot use this event in XAML.</item> <!-- this id is not currently output by SyntaxBuilder -->
-
- <item id="propertyXamlSyntax_parentIsExcludedSubClass">Members of this class are either not typically used in XAML, or cannot be used in XAML.</item>
- <item id="propertyXamlSyntax_noXamlSyntaxForInterfaceMembers">You cannot set this property in XAML.</item>
- <item id="propertyXamlSyntax_nonXamlParent">You cannot set this property in XAML.</item>
- <item id="propertyXamlSyntax_notPublic">You cannot set this property in XAML.</item>
- <item id="propertyXamlSyntax_abstract">You cannot set this property in XAML.</item>
- <item id="propertyXamlSyntax_readOnly">You cannot set this property in XAML.</item>
- <item id="propertyXamlSyntax_abstractType">For XAML information, see the {0} type.</item>
- <item id="propertyXamlSyntax_nonXaml">You cannot set this property in XAML.</item>
-
- <!-- syntax used with all enums in xaml assemblies -->
- <item id="enumerationOverviewXamlSyntax"><span><<i>object property</i>="<i>enumerationValue</i>" .../></span></item>
-
- <!-- boilerplate used with all method, field, etc. in xaml assemblies -->
- <item id="constructorOverviewXamlSyntax">You cannot use constructors in XAML.</item>
- <item id="methodOverviewXamlSyntax">You cannot use methods in XAML.</item>
- <item id="fieldOverviewXamlSyntax">You cannot use fields in XAML.</item>
- <item id="delegateOverviewXamlSyntax">In XAML, you can use delegates but you cannot define your own.</item>
- <item id="interfaceOverviewXamlSyntax">Interfaces cannot be used directly in XAML; see types that implement this interface.</item>
-
- <!-- boilerplate used with all types and members in all non-xaml assemblies -->
- <item id="nonXamlAssemblyBoilerplate">Not applicable.</item>
-
- <!-- XAML Section Headings -->
- <item id="xamlAttributeUsageHeading">XAML Attribute Usage</item>
- <item id="xamlObjectElementUsageHeading">XAML Object Element Usage</item>
- <item id="xamlImplicitCollectionUsageHeading">XAML Implicit Collection Usage</item>
- <item id="xamlPropertyElementUsageHeading">XAML Property Element Usage</item>
- <item id="xamlContentElementUsageHeading">XAML Content Element Usage</item>
- <item id="xamlValuesSectionHeading">XAML Values</item>
- <item id="xamlSyntaxBoilerplateHeading">XAML</item>
-
+<content xml:space="preserve"> + + <!-- C# messages --> + <item id="UnsupportedOperator_CSharp">C# does not support this operator.</item> + + <!-- C++ messages --> + <item id="UnsupportedOperator_ManagedCPlusPlus">Visual C++ does not support this operator.</item> + + <!-- VB messages --> + <item id="UnsupportedUnsafe_VisualBasic">Visual Basic does not support APIs that consume or return unsafe types.</item> + <item id="UnsupportedOperator_VisualBasic">Visual Basic does not support this operator.</item> + <item id="UnsupportedStaticClass_VisualBasic">Visual Basic does not support the declaration of static classes.</item> + + <!-- J# messages --> + <item id="UnsupportedUnsafe_JSharp">J# does not support APIs that consume or return unsafe types.</item> + <item id="UnsupportedGeneric_JSharp">J# supports the use of generic APIs, but not the declaration of new ones.</item> + <item id="UnsupportedOperator_JSharp">J# does not support overloaded operators.</item> + <item id="UnsupportedStaticConstructor_JSharp">J# does not support static constructors.</item> + <item id="UnsupportedExplicit_JSharp">J# supports the use of explicit interface implementations, but not the declaration of new ones.</item> + + <!-- JScript messages --> + <item id="UnsupportedUnsafe_JScript">JScript does not support APIs that consume or return unsafe types.</item> + <item id="UnsupportedGeneric_JScript">JScript does not support generic types or methods.</item> + <item id="UnsupportedExplicit_Jscript">JScript does not support explicit interface implementations.</item> + <item id="UnsupportedOperator_JScript">JScript does not support overloaded operators.</item> + <item id="UnsupportedEvent_JScript">JScript does not support events.</item> + <item id="UnsupportedDelegate_JScript">JScript does not support delegates.</item> + <item id="UnsupportedStructure_JScript">JScript supports the use of structures, but not the declaration of new ones.</item> + <item id="UnsupportedIndex_JScript">JScript does not support indexed properties.</item> + <item id="UnsupportedCast_JScript">JScript does not support the declaration of new casting operators.</item> + <item id="UnsupportedStaticConstructor_JScript">JScript does not support static constructors.</item> + + <!-- JavaScript(Script#) messages--> + <item id="UnsupportedType_ScriptSharp">This type supports the Script# infrastructure and cannot be used directly from JavaScript.</item> + <!-- VB usages message --> + <item id="UnsupportedUnsafe_VisualBasicUsage">Visual basic does not support APIs that consume or return unsafe types.</item> + <item id="UnsupportedOperator_VisualBasicUsage">Visual basic does not support this operator.</item> + <item id="UnsupportedStaticClass_VisualBasicUsage">You do not need to declare an instance of a static class in order to access its members.</item> + + <!-- XAML Syntax Boilerplate --> + <item id="classXamlSyntax_abstract">This class is abstract; see <a href="#familyToggle" onclick="OpenSection(familyToggle)"><include item="familyTitle"/></a> for derived non-abstract classes usable in XAML.</item> + <item id="classXamlSyntax_excludedSubClass">This managed class is not typically used in XAML.</item> + <item id="classXamlSyntax_noDefaultCtor">You cannot directly create an instance of this class in XAML.</item> + <item id="classXamlSyntax_noDefaultCtorWithTypeConverter"></item> <!-- this item intentionally empty, per spec --> + + <item id="structXamlSyntax_nonXaml">You cannot use this managed structure in XAML.</item> + <item id="structXamlSyntax_attributeUsage"></item> <!-- this item intentionally empty, per spec --> + + <item id="eventXamlSyntax_parentIsExcludedSubClass">Members of this class are either not typically used in XAML, or cannot be used in XAML.</item> + <item id="eventXamlSyntax_noXamlSyntaxForInterfaceMembers">You cannot use this event in XAML.</item> + <item id="eventXamlSyntax_nonXamlParent">You cannot use this event in XAML.</item> + <item id="eventXamlSyntax_notPublic">You cannot use this event in XAML.</item> + <item id="eventXamlSyntax_abstract">You cannot use this event in XAML.</item> + <item id="eventXamlSyntax_nonXaml">You cannot use this event in XAML.</item> <!-- this id is not currently output by SyntaxBuilder --> + + <item id="propertyXamlSyntax_parentIsExcludedSubClass">Members of this class are either not typically used in XAML, or cannot be used in XAML.</item> + <item id="propertyXamlSyntax_noXamlSyntaxForInterfaceMembers">You cannot set this property in XAML.</item> + <item id="propertyXamlSyntax_nonXamlParent">You cannot set this property in XAML.</item> + <item id="propertyXamlSyntax_notPublic">You cannot set this property in XAML.</item> + <item id="propertyXamlSyntax_abstract">You cannot set this property in XAML.</item> + <item id="propertyXamlSyntax_readOnly">You cannot set this property in XAML.</item> + <item id="propertyXamlSyntax_abstractType">For XAML information, see the {0} type.</item> + <item id="propertyXamlSyntax_nonXaml">You cannot set this property in XAML.</item> + + <!-- syntax used with all enums in xaml assemblies --> + <item id="enumerationOverviewXamlSyntax"><span><<i>object property</i>="<i>enumerationValue</i>" .../></span></item> + + <!-- boilerplate used with all method, field, etc. in xaml assemblies --> + <item id="constructorOverviewXamlSyntax">You cannot use constructors in XAML.</item> + <item id="methodOverviewXamlSyntax">You cannot use methods in XAML.</item> + <item id="fieldOverviewXamlSyntax">You cannot use fields in XAML.</item> + <item id="delegateOverviewXamlSyntax">In XAML, you can use delegates but you cannot define your own.</item> + <item id="interfaceOverviewXamlSyntax">Interfaces cannot be used directly in XAML; see types that implement this interface.</item> + + <!-- boilerplate used with all types and members in all non-xaml assemblies --> + <item id="nonXamlAssemblyBoilerplate">Not applicable.</item> + + <!-- XAML Section Headings --> + <item id="xamlAttributeUsageHeading">XAML Attribute Usage</item> + <item id="xamlObjectElementUsageHeading">XAML Object Element Usage</item> + <item id="xamlImplicitCollectionUsageHeading">XAML Implicit Collection Usage</item> + <item id="xamlPropertyElementUsageHeading">XAML Property Element Usage</item> + <item id="xamlContentElementUsageHeading">XAML Content Element Usage</item> + <item id="xamlValuesSectionHeading">XAML Values</item> + <item id="xamlSyntaxBoilerplateHeading">XAML</item> + </content>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/copyHavana.bat b/tools/Sandcastle/Presentation/Shared/copyHavana.bat index adc32d9..b692a81 100644 --- a/tools/Sandcastle/Presentation/Shared/copyHavana.bat +++ b/tools/Sandcastle/Presentation/Shared/copyHavana.bat @@ -1,7 +1,7 @@ -copy "%DXROOT%\Presentation\shared\HxsTemplate\template.HxF" Output\%1.HxF
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_A.HxK" Output\%1_A.Hxk
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_B.HxK" Output\%1_B.Hxk
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_F.HxK" Output\%1_F.Hxk
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_K.HxK" Output\%1_K.Hxk
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_N.HxK" Output\%1_N.Hxk
-copy "%DXROOT%\Presentation\shared\HxsTemplate\template_S.HxK" Output\%1_S.Hxk
+copy "%DXROOT%\Presentation\shared\HxsTemplate\template.HxF" Output\%1.HxF +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_A.HxK" Output\%1_A.Hxk +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_B.HxK" Output\%1_B.Hxk +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_F.HxK" Output\%1_F.Hxk +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_K.HxK" Output\%1_K.Hxk +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_N.HxK" Output\%1_N.Hxk +copy "%DXROOT%\Presentation\shared\HxsTemplate\template_S.HxK" Output\%1_S.Hxk diff --git a/tools/Sandcastle/Presentation/Shared/scripts/copycode.js b/tools/Sandcastle/Presentation/Shared/scripts/copycode.js index 169da50..73671ab 100644 --- a/tools/Sandcastle/Presentation/Shared/scripts/copycode.js +++ b/tools/Sandcastle/Presentation/Shared/scripts/copycode.js @@ -1,34 +1,34 @@ -function CopyCode(key)
-{
- var trElements = document.getElementsByTagName("tr");
- var i;
- for(i = 0; i < trElements.length; ++i)
- {
- if(key.parentNode.parentNode.parentNode == trElements[i].parentNode)
- {
- window.clipboardData.setData("Text", trElements[i].innerText);
- }
- }
-}
-
-function ChangeCopyCodeIcon(key)
-{
- var i;
- var imageElements = document.getElementsByName("ccImage")
- for(i=0; i<imageElements.length; ++i)
- {
- if(imageElements[i].parentNode == key)
- {
- if(imageElements[i].src == copyImage.src)
- {
- imageElements[i].src = copyHoverImage.src;
- imageElements[i].alt = copyHoverImage.alt;
- }
- else
- {
- imageElements[i].src = copyImage.src;
- imageElements[i].alt = copyImage.alt;
- }
- }
- }
-}
+function CopyCode(key) +{ + var trElements = document.getElementsByTagName("tr"); + var i; + for(i = 0; i < trElements.length; ++i) + { + if(key.parentNode.parentNode.parentNode == trElements[i].parentNode) + { + window.clipboardData.setData("Text", trElements[i].innerText); + } + } +} + +function ChangeCopyCodeIcon(key) +{ + var i; + var imageElements = document.getElementsByName("ccImage") + for(i=0; i<imageElements.length; ++i) + { + if(imageElements[i].parentNode == key) + { + if(imageElements[i].src == copyImage.src) + { + imageElements[i].src = copyHoverImage.src; + imageElements[i].alt = copyHoverImage.alt; + } + else + { + imageElements[i].src = copyImage.src; + imageElements[i].alt = copyImage.alt; + } + } + } +} diff --git a/tools/Sandcastle/Presentation/Shared/scripts/samples.js b/tools/Sandcastle/Presentation/Shared/scripts/samples.js index bed90bc..f0c8527 100644 --- a/tools/Sandcastle/Presentation/Shared/scripts/samples.js +++ b/tools/Sandcastle/Presentation/Shared/scripts/samples.js @@ -1,67 +1,67 @@ -
-function closeMe()
-{
- window.close();
-}
-
-function ChangeViewCodeIcon(key)
-{
- var i;
- var imageElements = document.getElementsByName("vcImage");
- for(i=0; i<imageElements.length; ++i)
- {
- if(imageElements[i].parentElement == key)
- {
- if(imageElements[i].src == viewImage.src)
- imageElements[i].src = viewHoverImage.src;
- else
- imageElements[i].src = viewImage.src;
- }
- }
-}
-
-function ChangeDownloadCodeIcon(key)
-{
- var i;
- var imageElements = document.getElementsByName("dcImage");
- for(i=0; i<imageElements.length; ++i)
- {
- if(imageElements[i].parentElement == key)
- {
- if(imageElements[i].src == downloadImage.src)
- imageElements[i].src = downloadHoverImage.src;
- else
- imageElements[i].src = downloadImage.src;
- }
- }
-}
-
-function ViewSampleSource(name)
-{
- // variables
- var wConfig;
- var oSelectBox = document.all.item(name);
- var url;
- var sIndex;
-
- // Get the selectedIndex
- sIndex = oSelectBox.selectedIndex;
-
- if (sIndex >= 0)
- {
- // Get the URL to the file
- url = oSelectBox.options[sIndex].value;
-
- // Set the configuration
- wConfig += 'directories=0,';
- wConfig += 'location=0,';
- wConfig += 'menubar=0,';
- wConfig += 'resizable=1,';
- wConfig += 'scrollbars=1,';
- wConfig += 'status=0,';
- wConfig += 'toolbar=0';
-
- // Launch the window
- window.open(url, 'ViewSampleSource', wConfig);
- }
+ +function closeMe() +{ + window.close(); +} + +function ChangeViewCodeIcon(key) +{ + var i; + var imageElements = document.getElementsByName("vcImage"); + for(i=0; i<imageElements.length; ++i) + { + if(imageElements[i].parentElement == key) + { + if(imageElements[i].src == viewImage.src) + imageElements[i].src = viewHoverImage.src; + else + imageElements[i].src = viewImage.src; + } + } +} + +function ChangeDownloadCodeIcon(key) +{ + var i; + var imageElements = document.getElementsByName("dcImage"); + for(i=0; i<imageElements.length; ++i) + { + if(imageElements[i].parentElement == key) + { + if(imageElements[i].src == downloadImage.src) + imageElements[i].src = downloadHoverImage.src; + else + imageElements[i].src = downloadImage.src; + } + } +} + +function ViewSampleSource(name) +{ + // variables + var wConfig; + var oSelectBox = document.all.item(name); + var url; + var sIndex; + + // Get the selectedIndex + sIndex = oSelectBox.selectedIndex; + + if (sIndex >= 0) + { + // Get the URL to the file + url = oSelectBox.options[sIndex].value; + + // Set the configuration + wConfig += 'directories=0,'; + wConfig += 'location=0,'; + wConfig += 'menubar=0,'; + wConfig += 'resizable=1,'; + wConfig += 'scrollbars=1,'; + wConfig += 'status=0,'; + wConfig += 'toolbar=0'; + + // Launch the window + window.open(url, 'ViewSampleSource', wConfig); + } }
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl index b9c46c8..633a2da 100644 --- a/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl +++ b/tools/Sandcastle/Presentation/Shared/transforms/utilities_dduexml.xsl @@ -1,280 +1,280 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp" >
-
- <!-- sections -->
-
- <xsl:template match="ddue:summary">
- <div class="summary">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="@address">
- <a name="{string(.)}" />
- </xsl:template>
-
- <!-- block elements -->
-
- <xsl:template match="ddue:para">
- <p><xsl:apply-templates /></p>
- </xsl:template>
-
- <xsl:template match="ddue:list">
- <xsl:choose>
- <xsl:when test="@class='bullet'">
- <ul>
- <xsl:apply-templates select="ddue:listItem" />
- </ul>
- </xsl:when>
- <xsl:when test="@class='ordered'">
- <ol>
- <xsl:apply-templates select="ddue:listItem" />
- </ol>
- </xsl:when>
- <xsl:otherwise>
- <span class="processingError">Unknown List Class</span>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:listItem">
- <li>
- <xsl:apply-templates />
- </li>
- </xsl:template>
-
- <!-- inline elements -->
-
- <xsl:template match="ddue:parameterReference">
- <xsl:if test="normalize-space(.)">
- <span class="parameter" data="paramReference">
- <xsl:value-of select="." />
- </span>
- </xsl:if> </xsl:template>
-
- <xsl:template match="ddue:ui">
- <xsl:if test="normalize-space(.)">
- <span class="ui"><xsl:value-of select="." /></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:userInput | ddue:userInputLocalizable">
- <xsl:if test="normalize-space(.)">
- <span class="input"><xsl:value-of select="." />
- </span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:newTerm">
- <xsl:if test="normalize-space(.)">
- <span class="term"><xsl:value-of select="." /></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:math">
- <xsl:if test="normalize-space(.)">
- <span class="math"><xsl:value-of select="." /></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeInline">
- <xsl:if test="normalize-space(.)">
- <span class="code"><xsl:value-of select="." /></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:subscript | ddue:subscriptType">
- <xsl:if test="normalize-space(.)">
- <sub><xsl:value-of select="." /></sub>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:superscript | ddue:superscriptType">
- <xsl:if test="normalize-space(.)">
- <sup><xsl:value-of select="." /></sup>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:legacyBold">
- <xsl:if test="normalize-space(.)">
- <b><xsl:apply-templates /></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:legacyItalic">
- <xsl:if test="normalize-space(.)">
- <i><xsl:apply-templates /></i>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:legacyUnderline">
- <xsl:if test="normalize-space(.)">
- <u><xsl:apply-templates /></u>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:embeddedLabel">
- <xsl:if test="normalize-space(.)">
- <span class="label"><xsl:value-of select="." /></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:quote">
- <xsl:if test="normalize-space(.)">
- <blockQuote><xsl:apply-templates/></blockQuote>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:quoteInline">
- <xsl:if test="normalize-space(.)">
- <q><xsl:apply-templates/></q>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:date">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:foreignPhrase">
- <xsl:if test="normalize-space(.)">
- <span class="foreignPhrase"><xsl:apply-templates/></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:phrase">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:system">
- <xsl:if test="normalize-space(.)">
- <b><xsl:apply-templates/></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:placeholder">
- <xsl:if test="normalize-space(.)">
- <span class="placeholder"><xsl:apply-templates/></span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:copyright">
- <p>
- &copyright; <xsl:value-of select="holder"/> <xsl:value-of select="trademark"/>
- <xsl:for-each select="year">
- <xsl:value-of select="."/>
- </xsl:for-each>
- </p>
- </xsl:template>
-
- <xsl:template match="ddue:corporation">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:country">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:unmanagedCodeEntityReference">
- <xsl:if test="normalize-space(.)">
- <b><xsl:apply-templates/></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:localizedText">
- <xsl:apply-templates/>
- </xsl:template>
-
- <!-- links -->
-
- <xsl:template match="ddue:externalLink">
- <a>
- <xsl:attribute name="href"><xsl:value-of select="ddue:linkUri" /></xsl:attribute>
- <xsl:value-of select="ddue:linkText" />
- </a>
- </xsl:template>
-
- <xsl:template match="ddue:link">
- <span data="link">
- <xsl:choose>
- <xsl:when test="starts-with(@xlink:href,'#')">
- <!-- in-page link -->
- <a href="{@xlink:href}">
- <xsl:apply-templates />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <!-- verified, external link -->
- <conceptualLink target="{@xlink:href}">
- <xsl:apply-templates />
- </conceptualLink>
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
- <xsl:template match="ddue:legacyLink">
- <xsl:choose>
- <xsl:when test="starts-with(@xlink:href,'#')">
- <!-- in-page link -->
- <a href="{@xlink:href}">
- <xsl:apply-templates />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <!-- unverified, external link -->
- <mshelp:link keywords="{@xlink:href}" tabindex="0">
- <xsl:apply-templates />
- </mshelp:link>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:codeEntityReference">
- <span data="cer" target="{string(.)}">
- <referenceLink target="{string(.)}">
- <xsl:if test="@qualifyHint">
- <xsl:attribute name="show-container">
- <xsl:value-of select="@qualifyHint" />
- </xsl:attribute>
- <xsl:attribute name="show-parameters">
- <xsl:value-of select="@qualifyHint" />
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@autoUpgrade">
- <xsl:attribute name="prefer-overload">
- <xsl:value-of select="@autoUpgrade" />
- </xsl:attribute>
- </xsl:if>
- </referenceLink>
- </span>
- </xsl:template>
- <!-- capture authored glossary <link> nodes -->
- <!-- LEAVE THIS TEMPORARILY to support oldstyle GTMT link tagging -->
- <xsl:template match="ddue:link[starts-with(.,'GTMT#')]">
- <!-- not supporting popup definitions; just show the display text -->
- <span data="link">
- <xsl:value-of select="substring-after(.,'GTMT#')"/>
- </span>
- </xsl:template>
-
- <!-- capture authored glossary <link> nodes -->
- <!-- THIS IS THE NEW STYLE GTMT link tagging -->
- <xsl:template match="ddue:legacyLink[starts-with(@xlink:href,'GTMT#')]">
- <!-- not supporting popup definitions; just show the display text -->
- <xsl:value-of select="."/>
- </xsl:template>
-
- <!-- fail if any unknown elements are encountered -->
-<!--
- <xsl:template match="*">
- <xsl:message terminate="yes">
- <xsl:text>An unknown element was encountered.</xsl:text>
- </xsl:message>
- </xsl:template>
--->
-
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" > + + <!-- sections --> + + <xsl:template match="ddue:summary"> + <div class="summary"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="@address"> + <a name="{string(.)}" /> + </xsl:template> + + <!-- block elements --> + + <xsl:template match="ddue:para"> + <p><xsl:apply-templates /></p> + </xsl:template> + + <xsl:template match="ddue:list"> + <xsl:choose> + <xsl:when test="@class='bullet'"> + <ul> + <xsl:apply-templates select="ddue:listItem" /> + </ul> + </xsl:when> + <xsl:when test="@class='ordered'"> + <ol> + <xsl:apply-templates select="ddue:listItem" /> + </ol> + </xsl:when> + <xsl:otherwise> + <span class="processingError">Unknown List Class</span> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:listItem"> + <li> + <xsl:apply-templates /> + </li> + </xsl:template> + + <!-- inline elements --> + + <xsl:template match="ddue:parameterReference"> + <xsl:if test="normalize-space(.)"> + <span class="parameter" data="paramReference"> + <xsl:value-of select="." /> + </span> + </xsl:if> </xsl:template> + + <xsl:template match="ddue:ui"> + <xsl:if test="normalize-space(.)"> + <span class="ui"><xsl:value-of select="." /></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:userInput | ddue:userInputLocalizable"> + <xsl:if test="normalize-space(.)"> + <span class="input"><xsl:value-of select="." /> + </span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:newTerm"> + <xsl:if test="normalize-space(.)"> + <span class="term"><xsl:value-of select="." /></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:math"> + <xsl:if test="normalize-space(.)"> + <span class="math"><xsl:value-of select="." /></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeInline"> + <xsl:if test="normalize-space(.)"> + <span class="code"><xsl:value-of select="." /></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:subscript | ddue:subscriptType"> + <xsl:if test="normalize-space(.)"> + <sub><xsl:value-of select="." /></sub> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:superscript | ddue:superscriptType"> + <xsl:if test="normalize-space(.)"> + <sup><xsl:value-of select="." /></sup> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:legacyBold"> + <xsl:if test="normalize-space(.)"> + <b><xsl:apply-templates /></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:legacyItalic"> + <xsl:if test="normalize-space(.)"> + <i><xsl:apply-templates /></i> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:legacyUnderline"> + <xsl:if test="normalize-space(.)"> + <u><xsl:apply-templates /></u> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:embeddedLabel"> + <xsl:if test="normalize-space(.)"> + <span class="label"><xsl:value-of select="." /></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:quote"> + <xsl:if test="normalize-space(.)"> + <blockQuote><xsl:apply-templates/></blockQuote> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:quoteInline"> + <xsl:if test="normalize-space(.)"> + <q><xsl:apply-templates/></q> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:date"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:foreignPhrase"> + <xsl:if test="normalize-space(.)"> + <span class="foreignPhrase"><xsl:apply-templates/></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:phrase"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:system"> + <xsl:if test="normalize-space(.)"> + <b><xsl:apply-templates/></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:placeholder"> + <xsl:if test="normalize-space(.)"> + <span class="placeholder"><xsl:apply-templates/></span> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:copyright"> + <p> + &copyright; <xsl:value-of select="holder"/> <xsl:value-of select="trademark"/> + <xsl:for-each select="year"> + <xsl:value-of select="."/> + </xsl:for-each> + </p> + </xsl:template> + + <xsl:template match="ddue:corporation"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:country"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:unmanagedCodeEntityReference"> + <xsl:if test="normalize-space(.)"> + <b><xsl:apply-templates/></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:localizedText"> + <xsl:apply-templates/> + </xsl:template> + + <!-- links --> + + <xsl:template match="ddue:externalLink"> + <a> + <xsl:attribute name="href"><xsl:value-of select="ddue:linkUri" /></xsl:attribute> + <xsl:value-of select="ddue:linkText" /> + </a> + </xsl:template> + + <xsl:template match="ddue:link"> + <span data="link"> + <xsl:choose> + <xsl:when test="starts-with(@xlink:href,'#')"> + <!-- in-page link --> + <a href="{@xlink:href}"> + <xsl:apply-templates /> + </a> + </xsl:when> + <xsl:otherwise> + <!-- verified, external link --> + <conceptualLink target="{@xlink:href}"> + <xsl:apply-templates /> + </conceptualLink> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + <xsl:template match="ddue:legacyLink"> + <xsl:choose> + <xsl:when test="starts-with(@xlink:href,'#')"> + <!-- in-page link --> + <a href="{@xlink:href}"> + <xsl:apply-templates /> + </a> + </xsl:when> + <xsl:otherwise> + <!-- unverified, external link --> + <mshelp:link keywords="{@xlink:href}" tabindex="0"> + <xsl:apply-templates /> + </mshelp:link> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:codeEntityReference"> + <span data="cer" target="{string(.)}"> + <referenceLink target="{string(.)}"> + <xsl:if test="@qualifyHint"> + <xsl:attribute name="show-container"> + <xsl:value-of select="@qualifyHint" /> + </xsl:attribute> + <xsl:attribute name="show-parameters"> + <xsl:value-of select="@qualifyHint" /> + </xsl:attribute> + </xsl:if> + <xsl:if test="@autoUpgrade"> + <xsl:attribute name="prefer-overload"> + <xsl:value-of select="@autoUpgrade" /> + </xsl:attribute> + </xsl:if> + </referenceLink> + </span> + </xsl:template> + <!-- capture authored glossary <link> nodes --> + <!-- LEAVE THIS TEMPORARILY to support oldstyle GTMT link tagging --> + <xsl:template match="ddue:link[starts-with(.,'GTMT#')]"> + <!-- not supporting popup definitions; just show the display text --> + <span data="link"> + <xsl:value-of select="substring-after(.,'GTMT#')"/> + </span> + </xsl:template> + + <!-- capture authored glossary <link> nodes --> + <!-- THIS IS THE NEW STYLE GTMT link tagging --> + <xsl:template match="ddue:legacyLink[starts-with(@xlink:href,'GTMT#')]"> + <!-- not supporting popup definitions; just show the display text --> + <xsl:value-of select="."/> + </xsl:template> + + <!-- fail if any unknown elements are encountered --> +<!-- + <xsl:template match="*"> + <xsl:message terminate="yes"> + <xsl:text>An unknown element was encountered.</xsl:text> + </xsl:message> + </xsl:template> +--> + + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Shared/transforms/utilities_metadata.xsl b/tools/Sandcastle/Presentation/Shared/transforms/utilities_metadata.xsl index 4e8c904..6d92746 100644 --- a/tools/Sandcastle/Presentation/Shared/transforms/utilities_metadata.xsl +++ b/tools/Sandcastle/Presentation/Shared/transforms/utilities_metadata.xsl @@ -1,238 +1,238 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt" >
-
- <xsl:template name="typeNameWithTicks">
- <xsl:for-each select="type|(containers/type)">
- <xsl:call-template name="typeNameWithTicks" />
- <xsl:text>.</xsl:text>
- </xsl:for-each>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="boolean(templates/template)">
- <xsl:text>`</xsl:text>
- <xsl:value-of select="count(templates/template)"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="qualifiedTextNames">
- <xsl:choose>
- <!-- explicit interface implementations -->
- <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- <xsl:variable name="left">
- <xsl:for-each select="containers/type">
- <xsl:call-template name="textNames"/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="right">
- <xsl:for-each select="implements/member">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:call-template name="combineTextNames">
- <xsl:with-param name="left" select="msxsl:node-set($left)" />
- <xsl:with-param name="right" select="msxsl:node-set($right)" />
- </xsl:call-template>
- </xsl:when>
- <!-- members get qualified by type name -->
- <xsl:when test="apidata/@group='member' and containers/type">
- <xsl:variable name="left">
- <xsl:for-each select="containers/type">
- <xsl:call-template name="textNames"/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="right">
- <xsl:call-template name="simpleTextNames" />
- </xsl:variable>
- <xsl:call-template name="combineTextNames">
- <xsl:with-param name="left" select="msxsl:node-set($left)" />
- <xsl:with-param name="right" select="msxsl:node-set($right)" />
- </xsl:call-template>
- </xsl:when>
- <!-- types get qualified by namespace name -->
- <xsl:when test="typedata and containers/namespace/apidata/@name">
- <xsl:variable name="left">
- <xsl:for-each select="containers/namespace">
- <xsl:call-template name="simpleTextNames"/>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="right">
- <xsl:call-template name="textNames" />
- </xsl:variable>
- <xsl:call-template name="combineTextNames">
- <xsl:with-param name="left" select="msxsl:node-set($left)" />
- <xsl:with-param name="right" select="msxsl:node-set($right)" />
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <!-- given two XML lists of API names (produced by textNames template below), produces an XML list
- that dot-concatenates them, respecting the @language attributes -->
- <xsl:template name="combineTextNames">
- <xsl:param name="left" />
- <xsl:param name="right" />
- <xsl:choose>
- <xsl:when test="count($left/name) > 1">
- <xsl:choose>
- <xsl:when test="count($right/name) > 1">
- <!-- both left and right are multi-language -->
- <xsl:for-each select="$left/name">
- <xsl:variable name="language" select="@language" />
- <name language="{$language}">
- <xsl:apply-templates select="." />
- <xsl:value-of select="'.'"/>
- <xsl:apply-templates select="$right/name[@language=$language]" />
- </name>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- left is multi-language, right is not -->
- <xsl:for-each select="$left/name">
- <xsl:variable name="language" select="@language" />
- <name language="{$language}">
- <xsl:apply-templates select="." />
- <xsl:value-of select="concat('.', $right/name)"/>
- </name>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="count($right/name) > 1">
- <!-- right is multi-language, left is not -->
- <xsl:for-each select="$right/name">
- <xsl:variable name="language" select="@language" />
- <name language="{.}">
- <xsl:value-of select="concat($left/name, '.')"/>
- <xsl:apply-templates select="." />
- </name>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- neiter is multi-language -->
- <name>
- <xsl:value-of select="concat($left/name,'.',$right/name)" />
- </name>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- produces an XML list of API names; context is parent of apidata element -->
- <!-- if there are no templates: <name>Blah</name> -->
- <!-- if there are templates: <name langauge="c">Blah<T></name><name language="v">Blah(Of T)</name> -->
- <xsl:template name="simpleTextNames">
- <xsl:choose>
- <xsl:when test="specialization | templates">
- <xsl:apply-templates select="specialization | templates" mode="index">
- <xsl:with-param name="name" select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <name>
- <xsl:choose>
- <xsl:when test="apidata/@subgroup = 'constructor'">
- <xsl:value-of select="containers/type/apidata/@name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </name>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="textNames">
- <xsl:choose>
- <xsl:when test="typedata and (containers/type | type)">
- <xsl:variable name="left">
- <xsl:apply-templates select="type | (containers/type)" mode="index" />
- </xsl:variable>
- <xsl:variable name="right">
- <xsl:call-template name="simpleTextNames" />
- </xsl:variable>
- <xsl:call-template name="combineTextNames">
- <xsl:with-param name="left" select="msxsl:node-set($left)" />
- <xsl:with-param name="right" select="msxsl:node-set($right)" />
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="type">
- <xsl:variable name="left">
- <xsl:apply-templates select="type" mode="index" />
- </xsl:variable>
- <xsl:variable name="right">
- <xsl:call-template name="simpleTextNames" />
- </xsl:variable>
- <xsl:call-template name="combineTextNames">
- <xsl:with-param name="left" select="msxsl:node-set($left)" />
- <xsl:with-param name="right" select="msxsl:node-set($right)" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="simpleTextNames" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- produces a C#/C++ style generic template parameter list for inclusion in the index -->
- <xsl:template name="csTemplateText">
- <xsl:text>%3C</xsl:text>
- <xsl:call-template name="templateText" />
- <xsl:text>%3E</xsl:text>
- </xsl:template>
-
- <!-- produces a VB-style generic template parameter list for inclusion in the index -->
- <xsl:template name="vbTemplateText">
- <xsl:text>(Of </xsl:text>
- <xsl:call-template name="templateText" />
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <!-- produces a comma-seperated list of generic template parameter names -->
- <!-- comma character is URL-encoded so as not to create sub-index entries -->
- <xsl:template name="templateText">
- <xsl:for-each select="*">
- <xsl:apply-templates select="." mode="index" />
- <xsl:if test="not(position()=last())">
- <xsl:text>%2C </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
-
- <xsl:template match="specialization | templates" mode="index" >
- <xsl:param name="name" />
- <name language="c">
- <xsl:value-of select="$name" />
- <xsl:call-template name="csTemplateText" />
- </name>
- <name language="v">
- <xsl:value-of select="$name" />
- <xsl:call-template name="vbTemplateText" />
- </name>
- </xsl:template>
-
- <xsl:template match="template" mode="index">
- <xsl:value-of select="@name" />
- </xsl:template>
-
- <xsl:template match="type" mode="index">
- <xsl:call-template name="textNames" />
- </xsl:template>
-
- <xsl:template match="name/name">
- <xsl:variable name="lang" select="ancestor::*/@language"/>
-
- <xsl:if test="@language = $lang">
- <xsl:value-of select="."/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="name/text()">
- <xsl:value-of select="."/>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" > + + <xsl:template name="typeNameWithTicks"> + <xsl:for-each select="type|(containers/type)"> + <xsl:call-template name="typeNameWithTicks" /> + <xsl:text>.</xsl:text> + </xsl:for-each> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="boolean(templates/template)"> + <xsl:text>`</xsl:text> + <xsl:value-of select="count(templates/template)"/> + </xsl:if> + </xsl:template> + + <xsl:template name="qualifiedTextNames"> + <xsl:choose> + <!-- explicit interface implementations --> + <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + <xsl:variable name="left"> + <xsl:for-each select="containers/type"> + <xsl:call-template name="textNames"/> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="right"> + <xsl:for-each select="implements/member"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:call-template name="combineTextNames"> + <xsl:with-param name="left" select="msxsl:node-set($left)" /> + <xsl:with-param name="right" select="msxsl:node-set($right)" /> + </xsl:call-template> + </xsl:when> + <!-- members get qualified by type name --> + <xsl:when test="apidata/@group='member' and containers/type"> + <xsl:variable name="left"> + <xsl:for-each select="containers/type"> + <xsl:call-template name="textNames"/> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="right"> + <xsl:call-template name="simpleTextNames" /> + </xsl:variable> + <xsl:call-template name="combineTextNames"> + <xsl:with-param name="left" select="msxsl:node-set($left)" /> + <xsl:with-param name="right" select="msxsl:node-set($right)" /> + </xsl:call-template> + </xsl:when> + <!-- types get qualified by namespace name --> + <xsl:when test="typedata and containers/namespace/apidata/@name"> + <xsl:variable name="left"> + <xsl:for-each select="containers/namespace"> + <xsl:call-template name="simpleTextNames"/> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="right"> + <xsl:call-template name="textNames" /> + </xsl:variable> + <xsl:call-template name="combineTextNames"> + <xsl:with-param name="left" select="msxsl:node-set($left)" /> + <xsl:with-param name="right" select="msxsl:node-set($right)" /> + </xsl:call-template> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- given two XML lists of API names (produced by textNames template below), produces an XML list + that dot-concatenates them, respecting the @language attributes --> + <xsl:template name="combineTextNames"> + <xsl:param name="left" /> + <xsl:param name="right" /> + <xsl:choose> + <xsl:when test="count($left/name) > 1"> + <xsl:choose> + <xsl:when test="count($right/name) > 1"> + <!-- both left and right are multi-language --> + <xsl:for-each select="$left/name"> + <xsl:variable name="language" select="@language" /> + <name language="{$language}"> + <xsl:apply-templates select="." /> + <xsl:value-of select="'.'"/> + <xsl:apply-templates select="$right/name[@language=$language]" /> + </name> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- left is multi-language, right is not --> + <xsl:for-each select="$left/name"> + <xsl:variable name="language" select="@language" /> + <name language="{$language}"> + <xsl:apply-templates select="." /> + <xsl:value-of select="concat('.', $right/name)"/> + </name> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="count($right/name) > 1"> + <!-- right is multi-language, left is not --> + <xsl:for-each select="$right/name"> + <xsl:variable name="language" select="@language" /> + <name language="{.}"> + <xsl:value-of select="concat($left/name, '.')"/> + <xsl:apply-templates select="." /> + </name> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- neiter is multi-language --> + <name> + <xsl:value-of select="concat($left/name,'.',$right/name)" /> + </name> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- produces an XML list of API names; context is parent of apidata element --> + <!-- if there are no templates: <name>Blah</name> --> + <!-- if there are templates: <name langauge="c">Blah<T></name><name language="v">Blah(Of T)</name> --> + <xsl:template name="simpleTextNames"> + <xsl:choose> + <xsl:when test="specialization | templates"> + <xsl:apply-templates select="specialization | templates" mode="index"> + <xsl:with-param name="name" select="apidata/@name" /> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <name> + <xsl:choose> + <xsl:when test="apidata/@subgroup = 'constructor'"> + <xsl:value-of select="containers/type/apidata/@name"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </name> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="textNames"> + <xsl:choose> + <xsl:when test="typedata and (containers/type | type)"> + <xsl:variable name="left"> + <xsl:apply-templates select="type | (containers/type)" mode="index" /> + </xsl:variable> + <xsl:variable name="right"> + <xsl:call-template name="simpleTextNames" /> + </xsl:variable> + <xsl:call-template name="combineTextNames"> + <xsl:with-param name="left" select="msxsl:node-set($left)" /> + <xsl:with-param name="right" select="msxsl:node-set($right)" /> + </xsl:call-template> + </xsl:when> + <xsl:when test="type"> + <xsl:variable name="left"> + <xsl:apply-templates select="type" mode="index" /> + </xsl:variable> + <xsl:variable name="right"> + <xsl:call-template name="simpleTextNames" /> + </xsl:variable> + <xsl:call-template name="combineTextNames"> + <xsl:with-param name="left" select="msxsl:node-set($left)" /> + <xsl:with-param name="right" select="msxsl:node-set($right)" /> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="simpleTextNames" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- produces a C#/C++ style generic template parameter list for inclusion in the index --> + <xsl:template name="csTemplateText"> + <xsl:text>%3C</xsl:text> + <xsl:call-template name="templateText" /> + <xsl:text>%3E</xsl:text> + </xsl:template> + + <!-- produces a VB-style generic template parameter list for inclusion in the index --> + <xsl:template name="vbTemplateText"> + <xsl:text>(Of </xsl:text> + <xsl:call-template name="templateText" /> + <xsl:text>)</xsl:text> + </xsl:template> + + <!-- produces a comma-seperated list of generic template parameter names --> + <!-- comma character is URL-encoded so as not to create sub-index entries --> + <xsl:template name="templateText"> + <xsl:for-each select="*"> + <xsl:apply-templates select="." mode="index" /> + <xsl:if test="not(position()=last())"> + <xsl:text>%2C </xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:template> + + + <xsl:template match="specialization | templates" mode="index" > + <xsl:param name="name" /> + <name language="c"> + <xsl:value-of select="$name" /> + <xsl:call-template name="csTemplateText" /> + </name> + <name language="v"> + <xsl:value-of select="$name" /> + <xsl:call-template name="vbTemplateText" /> + </name> + </xsl:template> + + <xsl:template match="template" mode="index"> + <xsl:value-of select="@name" /> + </xsl:template> + + <xsl:template match="type" mode="index"> + <xsl:call-template name="textNames" /> + </xsl:template> + + <xsl:template match="name/name"> + <xsl:variable name="lang" select="ancestor::*/@language"/> + + <xsl:if test="@language = $lang"> + <xsl:value-of select="."/> + </xsl:if> + </xsl:template> + + <xsl:template match="name/text()"> + <xsl:value-of select="."/> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl index 35acfc1..bfe8fcc 100644 --- a/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl +++ b/tools/Sandcastle/Presentation/Shared/transforms/utilities_reference.xsl @@ -1,335 +1,335 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" >
-
- <!-- *** GLOBAL VARIABLES *** -->
-
- <xsl:variable name="topic-group" select="/document/reference/topicdata/@group" />
- <xsl:variable name="topic-subgroup" select="/document/reference/topicdata/@subgroup" />
-
- <xsl:variable name="api-group" select="/document/reference/apidata/@group" />
- <xsl:variable name="api-subgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="api-subsubgroup" select="/document/reference/apidata/@subsubgroup" />
-
- <!-- *** LOGIC FOR GENERATING ELEMENT LISTS *** -->
- <!-- Seperate logic for namespace lists, type lists, member lists, enumeration member lists, and overload lists -->
-
- <!-- *** LOGIC FOR GENERATING LINKS *** -->
-
- <xsl:template match="type" mode="link">
- <xsl:param name="qualified" select="false()" />
- <!-- we don't display outer types, because the link will show them -->
- <referenceLink target="{@api}" prefer-overload="false">
- <xsl:choose>
- <xsl:when test="specialization">
- <xsl:attribute name="show-templates">false</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="show-templates">true</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="$qualified">
- <xsl:attribute name="show-container">true</xsl:attribute>
- </xsl:if>
- </referenceLink>
- <xsl:apply-templates select="specialization" mode="link"/>
- </xsl:template>
-
- <xsl:template match="specialization" mode="link">
- <span class="languageSpecificText">
- <span class="cs"><</span>
- <span class="vb">
- <xsl:text>(Of </xsl:text>
- </span>
- <span class="cpp"><</span>
- <span class="nu">(</span>
- </span>
- <xsl:for-each select="*">
- <xsl:apply-templates select="." mode="link" />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <span class="languageSpecificText">
- <span class="cs">></span>
- <span class="vb">)</span>
- <span class="cpp">></span>
- <span class="nu">)</span>
- </span>
- </xsl:template>
-
- <xsl:template match="arrayOf" mode="link">
- <xsl:param name="qualified" select="false()" />
- <span class="languageSpecificText">
- <span class="cpp">array<</span>
- </span>
- <xsl:apply-templates mode="link">
- <xsl:with-param name="qualified" select="$qualified" />
- </xsl:apply-templates>
- <span class="languageSpecificText">
- <span class="cpp">
- <xsl:if test="number(@rank) > 1">
- <xsl:text>,</xsl:text>
- <xsl:value-of select="@rank"/>
- </xsl:if>
- <xsl:text>></xsl:text>
- </span>
- <span class="cs">
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </span>
- <span class="vb">
- <xsl:text>(</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>)</xsl:text>
- </span>
- <span class="nu">
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </span>
- </span>
- </xsl:template>
-
- <xsl:template match="pointerTo" mode="link">
- <xsl:param name="qualified" select="false()" />
- <xsl:apply-templates mode="link">
- <xsl:with-param name="qualified" select="$qualified" />
- </xsl:apply-templates>
- <xsl:text>*</xsl:text>
- </xsl:template>
-
- <xsl:template match="referenceTo" mode="link">
- <xsl:param name="qualified" select="false()" />
- <xsl:apply-templates mode="link">
- <xsl:with-param name="qualified" select="$qualified" />
- </xsl:apply-templates>
- <span class="cpp">%</span>
- </xsl:template>
-
- <xsl:template match="template" mode="link">
- <xsl:choose>
- <xsl:when test="@api">
- <referenceLink target="{@api}">
- <span class="typeparam"><xsl:value-of select="@name" /></span>
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <span class="typeparam"><xsl:value-of select="@name" /></span>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="member" mode="link">
- <xsl:param name="qualified" select="true()" />
- <xsl:if test="$qualified">
- <xsl:apply-templates select="type" mode="link" />
- <span class="languageSpecificText">
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <span class="nu">.</span>
- </span>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- *** LOGIC FOR GENERATING TITLES *** -->
-
- <!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter types -->
- <xsl:template name="parameterTypesPlain">
- <xsl:if test="parameters/parameter">
- <xsl:text>(</xsl:text>
- <xsl:for-each select="parameters/parameter">
- <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="plain" />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- when position on a type api, produces a (plain) name; outer types are indicated by dot-seperators; -->
- <!-- generic types are indicated by a keyword, because we can't show templates in a language-independent way -->
- <xsl:template name="typeNamePlain">
- <xsl:if test="type|(containers/type)">
- <xsl:apply-templates select="type|(containers/type)" mode="plain" />
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:choose>
- <xsl:when test="specialization">
- <xsl:apply-templates select="specialization" mode="plain" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="templates" mode="plain" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="type" mode="plain">
- <xsl:call-template name="typeNamePlain" />
- </xsl:template>
-
- <xsl:template match="specialization|templates" mode="plain">
- <xsl:text>(</xsl:text>
- <xsl:for-each select="*">
- <xsl:apply-templates select="." mode="plain" />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <xsl:template match="arrayOf" mode="plain">
- <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="plain"/>
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </xsl:template>
-
- <xsl:template match="pointerTo" mode="plain">
- <xsl:apply-templates mode="plain"/>
- <xsl:text>*</xsl:text>
- </xsl:template>
-
- <xsl:template match="referenceTo" mode="plain">
- <xsl:apply-templates mode="plain"/>
- </xsl:template>
-
- <xsl:template match="template" mode="plain">
- <xsl:value-of select="@name" />
- </xsl:template>
-
- <!-- when positioned on a generic api, produces a (decorated) comma-seperated list of template names -->
- <xsl:template name="parameterTypesDecorated">
- <xsl:if test="parameters/parameter">
- <xsl:text>(</xsl:text>
- <xsl:for-each select="parameters/parameter">
- <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="decorated"/>
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- when position on a type api, produces a (decorated) name, including outer types and templates -->
- <xsl:template name="typeNameDecorated">
- <xsl:if test="type|(containers/type)">
- <xsl:apply-templates select="type|(containers/type)" mode="decorated" />
- <span class="languageSpecificText">
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <span class="nu">.</span>
- </span>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:choose>
- <xsl:when test="specialization">
- <xsl:apply-templates select="specialization" mode="decorated" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="templates" mode="decorated" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="type" mode="decorated">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:template>
-
- <xsl:template match="specialization|templates" mode="decorated">
- <span class="languageSpecificText">
- <span class="cs"><</span>
- <span class="vb">
- <xsl:text>(Of </xsl:text>
- </span>
- <span class="cpp"><</span>
- <span class="nu">(</span>
- </span>
- <xsl:for-each select="*">
- <xsl:apply-templates select="." mode="decorated" />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <span class="languageSpecificText">
- <span class="cs">></span>
- <span class="vb">)</span>
- <span class="cpp">></span>
- <span class="nu">)</span>
- </span>
- </xsl:template>
-
- <xsl:template match="arrayOf" mode="decorated">
- <span class="languageSpecificText">
- <span class="cpp">array<</span>
- </span>
- <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="decorated" />
- <span class="languageSpecificText">
- <span class="cpp">
- <xsl:if test="number(@rank) > 1">
- <xsl:text>,</xsl:text>
- <xsl:value-of select="@rank"/>
- </xsl:if>
- <xsl:text>></xsl:text>
- </span>
- <span class="cs">
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </span>
- <span class="vb">
- <xsl:text>(</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>)</xsl:text>
- </span>
- <span class="nu">
- <xsl:text>[</xsl:text>
- <xsl:if test="number(@rank) > 1">,</xsl:if>
- <xsl:text>]</xsl:text>
- </span>
- </span>
- </xsl:template>
-
- <xsl:template match="pointerTo" mode="decorated">
- <xsl:apply-templates mode="decorated"/>
- <xsl:text>*</xsl:text>
- </xsl:template>
-
- <xsl:template match="referenceTo" mode="decorated">
- <xsl:apply-templates mode="decorated"/>
- <span class="cpp">%</span>
- </xsl:template>
-
- <xsl:template match="template" mode="decorated">
- <span class="typeparameter"><xsl:value-of select="@name" /></span>
- </xsl:template>
-
- <!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter names-->
- <xsl:template name="parameterNames">
- <xsl:if test="parameters/parameter">
- <xsl:text>(</xsl:text>
- <xsl:for-each select="parameters/parameter">
- <xsl:value-of select="@name" />
- <xsl:if test="position() != last()">
- <xsl:text>, </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" > + + <!-- *** GLOBAL VARIABLES *** --> + + <xsl:variable name="topic-group" select="/document/reference/topicdata/@group" /> + <xsl:variable name="topic-subgroup" select="/document/reference/topicdata/@subgroup" /> + + <xsl:variable name="api-group" select="/document/reference/apidata/@group" /> + <xsl:variable name="api-subgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="api-subsubgroup" select="/document/reference/apidata/@subsubgroup" /> + + <!-- *** LOGIC FOR GENERATING ELEMENT LISTS *** --> + <!-- Seperate logic for namespace lists, type lists, member lists, enumeration member lists, and overload lists --> + + <!-- *** LOGIC FOR GENERATING LINKS *** --> + + <xsl:template match="type" mode="link"> + <xsl:param name="qualified" select="false()" /> + <!-- we don't display outer types, because the link will show them --> + <referenceLink target="{@api}" prefer-overload="false"> + <xsl:choose> + <xsl:when test="specialization"> + <xsl:attribute name="show-templates">false</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="show-templates">true</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="$qualified"> + <xsl:attribute name="show-container">true</xsl:attribute> + </xsl:if> + </referenceLink> + <xsl:apply-templates select="specialization" mode="link"/> + </xsl:template> + + <xsl:template match="specialization" mode="link"> + <span class="languageSpecificText"> + <span class="cs"><</span> + <span class="vb"> + <xsl:text>(Of </xsl:text> + </span> + <span class="cpp"><</span> + <span class="nu">(</span> + </span> + <xsl:for-each select="*"> + <xsl:apply-templates select="." mode="link" /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <span class="languageSpecificText"> + <span class="cs">></span> + <span class="vb">)</span> + <span class="cpp">></span> + <span class="nu">)</span> + </span> + </xsl:template> + + <xsl:template match="arrayOf" mode="link"> + <xsl:param name="qualified" select="false()" /> + <span class="languageSpecificText"> + <span class="cpp">array<</span> + </span> + <xsl:apply-templates mode="link"> + <xsl:with-param name="qualified" select="$qualified" /> + </xsl:apply-templates> + <span class="languageSpecificText"> + <span class="cpp"> + <xsl:if test="number(@rank) > 1"> + <xsl:text>,</xsl:text> + <xsl:value-of select="@rank"/> + </xsl:if> + <xsl:text>></xsl:text> + </span> + <span class="cs"> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </span> + <span class="vb"> + <xsl:text>(</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>)</xsl:text> + </span> + <span class="nu"> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </span> + </span> + </xsl:template> + + <xsl:template match="pointerTo" mode="link"> + <xsl:param name="qualified" select="false()" /> + <xsl:apply-templates mode="link"> + <xsl:with-param name="qualified" select="$qualified" /> + </xsl:apply-templates> + <xsl:text>*</xsl:text> + </xsl:template> + + <xsl:template match="referenceTo" mode="link"> + <xsl:param name="qualified" select="false()" /> + <xsl:apply-templates mode="link"> + <xsl:with-param name="qualified" select="$qualified" /> + </xsl:apply-templates> + <span class="cpp">%</span> + </xsl:template> + + <xsl:template match="template" mode="link"> + <xsl:choose> + <xsl:when test="@api"> + <referenceLink target="{@api}"> + <span class="typeparam"><xsl:value-of select="@name" /></span> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <span class="typeparam"><xsl:value-of select="@name" /></span> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="member" mode="link"> + <xsl:param name="qualified" select="true()" /> + <xsl:if test="$qualified"> + <xsl:apply-templates select="type" mode="link" /> + <span class="languageSpecificText"> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <span class="nu">.</span> + </span> + </xsl:if> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- *** LOGIC FOR GENERATING TITLES *** --> + + <!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter types --> + <xsl:template name="parameterTypesPlain"> + <xsl:if test="parameters/parameter"> + <xsl:text>(</xsl:text> + <xsl:for-each select="parameters/parameter"> + <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="plain" /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:if> + </xsl:template> + + <!-- when position on a type api, produces a (plain) name; outer types are indicated by dot-seperators; --> + <!-- generic types are indicated by a keyword, because we can't show templates in a language-independent way --> + <xsl:template name="typeNamePlain"> + <xsl:if test="type|(containers/type)"> + <xsl:apply-templates select="type|(containers/type)" mode="plain" /> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:choose> + <xsl:when test="specialization"> + <xsl:apply-templates select="specialization" mode="plain" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="templates" mode="plain" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="type" mode="plain"> + <xsl:call-template name="typeNamePlain" /> + </xsl:template> + + <xsl:template match="specialization|templates" mode="plain"> + <xsl:text>(</xsl:text> + <xsl:for-each select="*"> + <xsl:apply-templates select="." mode="plain" /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template match="arrayOf" mode="plain"> + <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="plain"/> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </xsl:template> + + <xsl:template match="pointerTo" mode="plain"> + <xsl:apply-templates mode="plain"/> + <xsl:text>*</xsl:text> + </xsl:template> + + <xsl:template match="referenceTo" mode="plain"> + <xsl:apply-templates mode="plain"/> + </xsl:template> + + <xsl:template match="template" mode="plain"> + <xsl:value-of select="@name" /> + </xsl:template> + + <!-- when positioned on a generic api, produces a (decorated) comma-seperated list of template names --> + <xsl:template name="parameterTypesDecorated"> + <xsl:if test="parameters/parameter"> + <xsl:text>(</xsl:text> + <xsl:for-each select="parameters/parameter"> + <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template" mode="decorated"/> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:if> + </xsl:template> + + <!-- when position on a type api, produces a (decorated) name, including outer types and templates --> + <xsl:template name="typeNameDecorated"> + <xsl:if test="type|(containers/type)"> + <xsl:apply-templates select="type|(containers/type)" mode="decorated" /> + <span class="languageSpecificText"> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <span class="nu">.</span> + </span> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:choose> + <xsl:when test="specialization"> + <xsl:apply-templates select="specialization" mode="decorated" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="templates" mode="decorated" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="type" mode="decorated"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:template> + + <xsl:template match="specialization|templates" mode="decorated"> + <span class="languageSpecificText"> + <span class="cs"><</span> + <span class="vb"> + <xsl:text>(Of </xsl:text> + </span> + <span class="cpp"><</span> + <span class="nu">(</span> + </span> + <xsl:for-each select="*"> + <xsl:apply-templates select="." mode="decorated" /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <span class="languageSpecificText"> + <span class="cs">></span> + <span class="vb">)</span> + <span class="cpp">></span> + <span class="nu">)</span> + </span> + </xsl:template> + + <xsl:template match="arrayOf" mode="decorated"> + <span class="languageSpecificText"> + <span class="cpp">array<</span> + </span> + <xsl:apply-templates select="type|arrayOf|pointerTo|referenceTo|template|specialization|templates" mode="decorated" /> + <span class="languageSpecificText"> + <span class="cpp"> + <xsl:if test="number(@rank) > 1"> + <xsl:text>,</xsl:text> + <xsl:value-of select="@rank"/> + </xsl:if> + <xsl:text>></xsl:text> + </span> + <span class="cs"> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </span> + <span class="vb"> + <xsl:text>(</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>)</xsl:text> + </span> + <span class="nu"> + <xsl:text>[</xsl:text> + <xsl:if test="number(@rank) > 1">,</xsl:if> + <xsl:text>]</xsl:text> + </span> + </span> + </xsl:template> + + <xsl:template match="pointerTo" mode="decorated"> + <xsl:apply-templates mode="decorated"/> + <xsl:text>*</xsl:text> + </xsl:template> + + <xsl:template match="referenceTo" mode="decorated"> + <xsl:apply-templates mode="decorated"/> + <span class="cpp">%</span> + </xsl:template> + + <xsl:template match="template" mode="decorated"> + <span class="typeparameter"><xsl:value-of select="@name" /></span> + </xsl:template> + + <!-- when positioned on a parameterized api, produces a (plain) comma-seperated list of parameter names--> + <xsl:template name="parameterNames"> + <xsl:if test="parameters/parameter"> + <xsl:text>(</xsl:text> + <xsl:for-each select="parameters/parameter"> + <xsl:value-of select="@name" /> + <xsl:if test="position() != last()"> + <xsl:text>, </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/Content/conceptual_content.xml b/tools/Sandcastle/Presentation/hana/Content/conceptual_content.xml index fcd4311..3869c90 100644 --- a/tools/Sandcastle/Presentation/hana/Content/conceptual_content.xml +++ b/tools/Sandcastle/Presentation/hana/Content/conceptual_content.xml @@ -1,68 +1,68 @@ -<content xml:space="preserve">
-
- <!-- control window stuff -->
- <item id="productTitle">.NET Framework Developer's Guide</item>
-
- <!-- main window stuff -->
-
- <!-- body -->
-
- <!-- section titles -->
- <item id="inThisSectionTitle">In This Section</item>
- <item id="buildInstructionsTitle">Compiling the Code</item>
- <item id="nextStepsTitle">Next Steps</item>
- <item id="requirementsTitle">Requirements</item>
- <item id="relatedSectionsTitle">Related Sections</item>
- <item id="relatedTopicsTitle">See Also</item>
- <item id="syntaxTitle">Syntax</item>
- <item id="parametersTitle">Parameters</item>
- <item id="returnValueTitle">Return Value</item>
- <item id="attributesAndElements">Attributes and Elements</item>
- <item id="attributes">Attributes</item>
- <item id="childElement">Child Elements</item>
- <item id="parentElement">Parent Elements</item>
- <item id="elementInformation">Element Information</item>
- <item id="textValue">Text Value</item>
- <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item>
- <item id="prerequisites">Prerequisites</item>
- <item id="robustProgramming">Robust Programming</item>
- <item id="securitySection">Security</item>
- <item id="externalResources">External Resources</item>
- <item id="demonstrates">Demonstrates</item>
- <item id="appliesTo">Applies To</item>
- <item id="conclusion">Conclusion</item>
- <item id="background">Background</item>
- <item id="whatsNew">What's New</item>
- <item id="reference">Reference</item>
- <item id="errorMessage">Error Message</item>
-
- <!-- language filter -->
- <item id="languageFilter">Language Filter: {0}</item>
- <item id="all">All</item>
- <item id="multiple">Multiple</item>
- <item id="VisualBasic">Visual Basic</item>
- <item id="VBScript">Visual Basic Script</item>
- <item id="CSharp">C#</item>
- <item id="ManagedCPlusPlus">Visual C++</item>
- <item id="JSharp">J#</item>
- <item id="JScript">JScript</item>
- <item id="xmlLang">Xml</item>
- <item id="html">Html</item>
- <item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item>
- <item id="other"></item>
- <item id="XAML">XAML</item>
- <item id="usage">Usage</item>
-
- <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item>
- <item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item>
-
- <item id="collapseAll">Collapse All</item>
- <item id="expandAll">Expand All</item>
- <item id="Example">Example</item>
-
- <!-- Sample Topics -->
- <item id="downloadSample">Download</item>
- <item id="sampleFiles">Sample Files:</item>
- <item id="viewSampleSource">View Source</item>
-
-</content>
+<content xml:space="preserve"> + + <!-- control window stuff --> + <item id="productTitle">.NET Framework Developer's Guide</item> + + <!-- main window stuff --> + + <!-- body --> + + <!-- section titles --> + <item id="inThisSectionTitle">In This Section</item> + <item id="buildInstructionsTitle">Compiling the Code</item> + <item id="nextStepsTitle">Next Steps</item> + <item id="requirementsTitle">Requirements</item> + <item id="relatedSectionsTitle">Related Sections</item> + <item id="relatedTopicsTitle">See Also</item> + <item id="syntaxTitle">Syntax</item> + <item id="parametersTitle">Parameters</item> + <item id="returnValueTitle">Return Value</item> + <item id="attributesAndElements">Attributes and Elements</item> + <item id="attributes">Attributes</item> + <item id="childElement">Child Elements</item> + <item id="parentElement">Parent Elements</item> + <item id="elementInformation">Element Information</item> + <item id="textValue">Text Value</item> + <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item> + <item id="prerequisites">Prerequisites</item> + <item id="robustProgramming">Robust Programming</item> + <item id="securitySection">Security</item> + <item id="externalResources">External Resources</item> + <item id="demonstrates">Demonstrates</item> + <item id="appliesTo">Applies To</item> + <item id="conclusion">Conclusion</item> + <item id="background">Background</item> + <item id="whatsNew">What's New</item> + <item id="reference">Reference</item> + <item id="errorMessage">Error Message</item> + + <!-- language filter --> + <item id="languageFilter">Language Filter: {0}</item> + <item id="all">All</item> + <item id="multiple">Multiple</item> + <item id="VisualBasic">Visual Basic</item> + <item id="VBScript">Visual Basic Script</item> + <item id="CSharp">C#</item> + <item id="ManagedCPlusPlus">Visual C++</item> + <item id="JSharp">J#</item> + <item id="JScript">JScript</item> + <item id="xmlLang">Xml</item> + <item id="html">Html</item> + <item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item> + <item id="other"></item> + <item id="XAML">XAML</item> + <item id="usage">Usage</item> + + <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item> + <item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item> + + <item id="collapseAll">Collapse All</item> + <item id="expandAll">Expand All</item> + <item id="Example">Example</item> + + <!-- Sample Topics --> + <item id="downloadSample">Download</item> + <item id="sampleFiles">Sample Files:</item> + <item id="viewSampleSource">View Source</item> + +</content> diff --git a/tools/Sandcastle/Presentation/hana/Content/reference_content.xml b/tools/Sandcastle/Presentation/hana/Content/reference_content.xml index b8e21a0..2cfee10 100644 --- a/tools/Sandcastle/Presentation/hana/Content/reference_content.xml +++ b/tools/Sandcastle/Presentation/hana/Content/reference_content.xml @@ -1,482 +1,482 @@ -<content xml:space="preserve">
-
- <!-- note text -->
- <item id="notDocumentedText">This API is not documented.</item>
- <item id="preliminaryText">This API is preliminary and subject to change.</item>
- <!-- topic titles -->
- <item id="tocTitle">{0}</item>
- <item id="rlTitle">{0} ({1})</item>
- <item id="rootTopicTitle">Namespaces</item>
- <item id="namespaceTopicTitle">{0} Namespace</item>
- <item id="classTopicTitle">{0} Class</item>
- <item id="structureTopicTitle">{0} Structure</item>
- <item id="interfaceTopicTitle">{0} Interface</item>
- <item id="DerivedTypeListTopicTitle">{0} Derived Classes</item>
-
- <item id="delegateTopicTitle">{0} Delegate</item>
- <item id="enumerationTopicTitle">{0} Enumeration</item>
- <item id="fieldTopicTitle">{0} Field</item>
- <item id="methodTopicTitle">{0} Method {1}</item>
- <item id="constructorTopicTitle">{0} Constructor {1}</item>
- <item id="propertyTopicTitle">{0} Property {1}</item>
- <item id="eventTopicTitle">{0} Event</item>
- <item id="operatorTopicTitle">{0} Operator</item>
-
- <item id="attachedPropertyTopicTitle">{0} Attached Property</item>
- <item id="attachedEventTopicTitle">{0} Attached Event</item>
-
- <item id="generic_classTopicTitle">{0} Generic Class</item>
- <item id="generic_structureTopicTitle">{0} Generic Structure</item>
- <item id="generic_interfaceTopicTitle">{0} Generic Interface</item>
- <item id="generic_delegateTopicTitle">{0} Generic Delegate</item>
- <item id="generic_methodTopicTitle">{0} Generic Method</item>
-
- <!-- list topic titles -->
- <item id="FieldsTopicTitle">{0} Fields</item>
- <item id="MethodsTopicTitle">{0} Methods {1}</item>
- <item id="ConstructorsTopicTitle">{0} Constructors {1}</item>
- <item id="PropertiesTopicTitle">{0} Properties {1}</item>
- <item id="EventsTopicTitle">{0} Events</item>
- <item id="AttachedPropertiesTopicTitle">{0} Attached Properties</item>
- <item id="AttachedEventsTopicTitle">{0} Attached Events</item>
- <item id="membersTopicTitle">{0} Members</item>
-
- <!-- member titles -->
- <item id="enumMembersTitle">Members</item>
-
- <!-- index entries -->
- <item id="rootIndexEntry">namespaces</item>
- <item id="namespaceIndexEntry">{0} namespace</item>
- <item id="classIndexEntry">{0} class</item>
- <item id="structureIndexEntry">{0} structure</item>
- <item id="interfaceIndexEntry">{0} interface</item>
- <item id="delegateIndexEntry">{0} delegate</item>
- <item id="enumerationIndexEntry">{0} enumeration</item>
- <item id="enumerationMemberIndexEntry">{0} enumeration member</item>
- <item id="aboutTypeIndexEntry">{0}, about {0}</item>
- <item id="derivedTypesIndexEntry">{0}, derived types</item>
- <item id="membersIndexEntry">{0}, all members</item>
- <item id="methodsIndexEntry">{0}, methods</item>
- <item id="propertiesIndexEntry">{0}, properties</item>
- <item id="fieldsIndexEntry">{0}, fields</item>
- <item id="eventsIndexEntry">{0}, events</item>
- <item id="constructorsIndexEntry">{0}, constructors</item>
- <item id="constructorIndexEntry">{0}, constructor</item>
- <item id="constructorTypeIndexEntry">{0} constructor</item>
- <item id="methodIndexEntry">{0} method</item>
- <item id="propertyIndexEntry">{0} property</item>
- <item id="eventIndexEntry">{0} event</item>
- <item id="fieldIndexEntry">{0} field</item>
- <item id="operatorIndexEntry">{0} operator</item>
- <item id="attachedPropertyIndexEntry">{0} attached property</item>
- <item id="attachedEventIndexEntry">{0} attached event</item>
-
- <!-- index entries like: "FileClassifier class" or "Execute method" or "Microsoft.Build.Tasks.Windows.FileClassifier class"
- {0} is API's name, which is shortname in some cases, or FQName in others
- {1} is API's subgroup, e.g. 'class', 'method', etc.
- <item id="nameSubgroupIndexEntry">{0} <include item="{1}IndexEntry"/></item>
--->
- <!-- index entries like: "FileClassifier class, about FileClassifier class"
- {0} is API's name, which is shortname in some cases, or FQName in others
- {1} is API's subgroup, e.g. 'class', 'method', etc.
- <item id="aboutTypeIndexEntry">{0} <include item="{1}IndexEntry"/>, about {0} <include item="{1}IndexEntry"/></item>
- -->
- <!-- index entries like: "FileClassifier class, methods"
- {0} is type's name;
- {1} is type's subgroup, e.g. 'class';
- {2} is the kind of list, e.g. 'AllMembers', 'Methods', etc.
- <item id="listTopicIndexEntry">{0} <include item="{1}IndexEntry"/>, <include item="{2}IndexEntry"/></item>
- -->
- <!-- main window stuff -->
-
- <!-- body -->
-
- <!-- section titles -->
- <item id="syntaxTitle">Syntax</item>
- <item id="templatesTitle">Type Parameters</item>
- <item id="parametersTitle">Parameters</item>
- <item id="valueTitle">Value</item>
- <item id="delegateValueTitle">Return Value</item>
- <item id="methodValueTitle">Return Value</item>
- <item id="propertyValueTitle">Property Value</item>
- <item id="fieldValueTitle">Field Value</item>
- <item id="implementsTitle">Implements</item>
- <item id="examplesTitle">Examples</item>
- <item id="threadSafetyTitle">Thread Safety</item>
- <item id="exceptionsTitle">Exceptions</item>
- <item id="permissionsTitle">Permissions</item>
- <item id="namespacesTitle">Namespaces</item>
- <item id="typesTitle">Types</item>
- <item id="allMembersTitle">Members</item>
- <item id="membersTitle">Overload List</item>
- <item id="familyTitle">Inheritance Hierarchy</item>
- <item id="versionsTitle">Version Information</item>
- <item id="platformsTitle">Platforms</item>
- <item id="relatedTitle">See Also</item>
-
- <!-- table headers -->
- <item id="namespaceNameHeader">Namespace</item>
- <item id="namespaceDescriptionHeader">Description</item>
- <item id="typeIconHeader">Icon</item>
- <item id="classNameHeader">Class</item>
- <item id="structureNameHeader">Structure</item>
- <item id="interfaceNameHeader">Interface</item>
- <item id="delegateNameHeader">Delegate</item>
- <item id="enumerationNameHeader">Enumeration</item>
- <item id="typeNameHeader">Name</item>
- <item id="typeDescriptionHeader">Description</item>
- <item id="memberIconHeader">Icon</item>
- <item id="memberNameHeader">Member</item>
- <item id="memberDescriptionHeader">Description</item>
- <item id="exceptionNameHeader">Exception</item>
- <item id="exceptionConditionHeader">Condition</item>
- <item id="permissionNameHeader">Permission</item>
- <item id="permissionDescriptionHeader">Description</item>
-
- <!-- filter control text -->
- <item id="allTypesFilterLabel">All Types</item>
- <item id="classTypesFilterLabel">Classes</item>
- <item id="structureTypesFilterLabel">Structures</item>
- <item id="interfaceTypesFilterLabel">Interfaces</item>
- <item id="delegateTypesFilterLabel">Delegates</item>
- <item id="enumerationTypesFilterLabel">Enumerations</item>
- <item id="allMembersFilterLabel">All Members</item>
- <item id="constructorMembersFilterLabel">Constructors</item>
- <item id="methodMembersFilterLabel">Methods</item>
- <item id="propertyMembersFilterLabel">Properties</item>
- <item id="attachedPropertyMembersFilterLabel">Attached Properties</item>
- <item id="fieldMembersFilterLabel">Fields</item>
- <item id="eventMembersFilterLabel">Events</item>
- <item id="operatorMembersFilterLabel">Operators</item>
- <item id="attachedEventMembersFilterLabel">Attached Events</item>
- <item id="explicitInterfaceMembersFilterLabel">Explicit Interface Implementations</item>
- <item id="publicMembersFilterLabel">Public</item>
- <item id="protectedMembersFilterLabel">Protected</item>
- <item id="instanceMembersFilterLabel">Instance</item>
- <item id="staticMembersFilterLabel">Static</item>
- <item id="declaredMembersFilterLabel">Declared</item>
- <item id="inheritedMembersFilterLabel">Inherited</item>
- <item id=".NETCompactFilterLabel">.NET Compact Framework Only</item>
- <item id="XNAFilterLabel">XNA Framework Only</item>
- <!-- member list stuff -->
- <item id="Publicconstructor">Public Constructors</item>
- <item id="Protectedconstructor">Protected Constructors</item>
- <item id="constructorsTable">Constructors</item>
- <item id="Privateconstructor">Private Constructors</item>
- <item id="Publicmethod">Public Methods</item>
- <item id="Protectedmethod">Protected Methods</item>
- <item id="Privatemethod">Private Methods</item>
- <item id="Publicfield">Public Fields</item>
- <item id="Protectedfield">Protected Fields</item>
- <item id="Privatefield">Private Fields</item>
- <item id="Publicproperty">Public Properties</item>
- <item id="Protectedproperty">Protected Properties</item>
- <item id="Privateproperty">Private Properties</item>
- <item id="Publicevent">Public Events</item>
- <item id="Protectedevent">Protected Events</item>
- <item id="Privateevent">Private Events</item>
- <item id="PublicattachedProperty">Public Attached Properties</item>
- <item id="ProtectedattachedProperty">Protected Attached Properties</item>
- <item id="PrivateattachedProperty">Private Attached Properties</item>
- <item id="PublicattachedEvent">Public Attached Events</item>
- <item id="ProtectedattachedEvent">Protected Attached Events</item>
- <item id="PrivateattachedEvent">Private Attached Events</item>
- <item id="seeMemberGroup"> (see also {0})</item>
-
- <!-- Thread Safety -->
- <item id="ThreadSafety">Thread Safety</item>
- <item id="ThreadSafetyBP">Any public static (<b>Shared</b> in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.</item>
-
- <item id="NotesForImplementers">Notes to Implementers: </item>
- <item id="NotesForCallers">Notes to Callers: </item>
- <item id="NotesForInheritors">Notes to Inheritors: </item>
-
- <!-- Used for Platform Notes -->
- <item id="PlatformNote">
- <b>{0} Platform Note:</b> {1}
- </item>
- <item id="Win95">Windows 95</item>
- <item id="Win98Se">Windows 98 Second Edition</item>
-
- <item id="WinNT4">Windows NT 4.0</item>
- <item id="WinNT4Svr">Windows NT Server 4.0</item>
- <item id="WinNT4Wks">Windows NT Workstation 4.0</item>
-
- <item id="Win2kFamily">Windows 2000</item>
- <item id="Win2kProfessional">Windows 2000 Professional</item>
- <item id="Win2kServer">Windows 2000 Server</item>
- <item id="Win2kDatacenter">Windows 2000 Advanced Server</item>
-
- <item id="WinXPPersonal">Windows XP Home Edition</item>
- <item id="WinXPPro">Windows XP Professional x64 Edition</item>
- <item id="WinXPSvr"><include item="WinSvr2003"/></item>
- <item id="WinXpTablet">Windows XP Tablet PC Edition</item>
- <item id="WinXpEmbedded">Windows XP Embedded</item>
-
- <item id="ECMACLI">Common Language Infrastructure (CLI) Standard</item>
-
- <item id="MSTV">Microsoft TV</item>
-
- <item id="Win9xFamily"><include item="Win95"/>, <include item="Win98"/>, <include item="Win98Se"/>, <include item="WinME"/></item>
- <item id="WinNt4Family"><include item="WinNT4"/></item>
- <item id="WinXpFamily"><include item="WinXPPersonal"/>, <include item="WinXPPro"/>, <include item="WinXPSvr"/></item>
- <item id="WinCE"><include item="WindowsCE"/></item>
- <item id="Win2K"><include item="WinSvr2000"/></item>
- <item id="Win2KSvr"><include item="Win2kServer"/></item>
- <item id="Win2KADC"><include item="Win2kDatacenter"/></item>
-
- <item id="WinNt4Server"><include item="WinNT4Svr"/></item>
- <item id="WinNt4Workstation"><include item="WinNT4Wks"/></item>
- <item id="Win2kAdvanced"><include item="Win2kDatacenter"/></item>
- <item id="Win2kServerApplianceKit"></item>
- <item id="WinXpHome"><include item="WinXPPersonal"/></item>
- <item id="WinXpProfessional"><include item="WinXPPro"/></item>
- <item id="Win2003Server"><include item="WinXPSvr"/></item>
- <item id="NETCF"><include item="PocketPC"/>, <include item="SmartPhone"/>, <include item="WindowsCE"/></item>
- <!-- Platform Notes -->
-
- <item id="Platforms">Platforms</item>
- <!-- Platforms Information -->
- <item id="developmentPlatformsLayout">
- <p/>
- <span>
- The .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.
- </span>
- </item>
-
- <!-- inserted boilerplate -->
- <item id="runningHeaderText">.NET Framework Class Library</item>
- <item id="rootLink"><referenceLink target="R:Project">Namespaces</referenceLink></item>
- <item id="obsoleteShort"><span class="obsolete">Obsolete.</span></item>
- <item id="obsoleteLong"><span class="obsolete">This API is obsolete.</span></item>
- <item id="nonobsoleteAlternative">The non-obsolete alternative is {0}.</item>
- <item id="obsoleteRed"><font color="red"><b>Obsolete. </b></font></item>
- <item id="ObsoleteBoilerPlate">
- <font color="red"><b>NOTE: This API is now obsolete.</b></font>
- </item>
- <item id="inheritedFrom">(Inherited from {0}.)</item>
- <item id="overridesMember">(Overrides {0}.)</item>
- <item id="locationInformation">Assembly: {0} (Module: {1})</item>
- <item id="hostProtectionAttributeShort">HostProtectionAttribute.</item>
- <item id="hostProtectionAttributeLong">The <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> attribute applied to this <include item="{0}"/> has the following <referenceLink target="P:System.Security.Permissions.HostProtectionAttribute.Resources" prefer-overload="true" /> property value: {1}. The <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> class or <conceptualLink target="7dfa36b4-e773-4c75-a3ff-ff1af3ce4c4f" />.</item>
- <item id="classLower">class</item>
- <item id="delegateLower">delegate</item>
- <item id="structureLower">structure</item>
- <item id="interfaceLower">interface</item>
- <item id="enumerationLower">enumeration</item>
- <!-- thread safety boilerplate -->
- <item id="staticThreadSafe">Static members of this type are safe for multi-threaded operations. </item>
- <item id="staticNotThreadSafe">Static members of this type are not safe for multi-threaded operations. </item>
- <item id="instanceThreadSafe">Instance members of this type are safe for multi-threaded operations. </item>
- <item id="instanceNotThreadSafe">Instance members of this type are not safe for multi-threaded operations. </item>
-
- <!-- alt text for images -->
- <item id="pubClassAltText">Public class</item>
- <item id="pubStructureAltText">Public structure</item>
- <item id="pubInterfaceAltText">Public interface</item>
- <item id="pubDelegateAltText">Public delegate</item>
- <item id="pubEnumerationAltText">Public enumeration</item>
- <item id="protClassAltText">Protected class</item>
- <item id="protStructureAltText">Protected structure</item>
- <item id="protInterfaceAltText">Protected interface</item>
- <item id="protDelegateAltText">Protected delegate</item>
- <item id="protEnumerationAltText">Protected enumeration</item>
- <item id="privClassAltText">Private class</item>
- <item id="privStructureAltText">Private structure</item>
- <item id="privInterfaceAltText">Private interface</item>
- <item id="privDelegateAltText">Private delegate</item>
- <item id="privEnumerationAltText">Private enumeration</item>
-
- <item id="pubConstructorAltText">Public constructor</item>
- <item id="pubMethodAltText">Public method</item>
- <item id="pubFieldAltText">Public field</item>
- <item id="pubPropertyAltText">Public property</item>
- <item id="pubEventAltText">Public event</item>
- <item id="pubOperatorAltText">Public operator</item>
- <item id="pubAttachedPropertyAltText">Public attached property</item>
- <item id="pubAttachedEventAltText">Public attached event</item>
- <item id="protConstructorAltText">Protected constructor</item>
- <item id="protMethodAltText">Protected method</item>
- <item id="protFieldAltText">Protected field</item>
- <item id="protPropertyAltText">Protected property</item>
- <item id="protEventAltText">Protected event</item>
- <item id="protOperatorAltText">Protected operator</item>
- <item id="protAttachedPropertyAltText">Protected attached property</item>
- <item id="protAttachedEventAltText">Protected attached event</item>
- <item id="privConstructorAltText">Private constructor</item>
- <item id="privMethodAltText">Private method</item>
- <item id="privFieldAltText">Private field</item>
- <item id="privPropertyAltText">Private property</item>
- <item id="privEventAltText">Private event</item>
- <item id="privOperatorAltText">Private operator</item>
- <item id="privtAttachedPropertyAltText">Private attached property</item>
- <item id="privAttachedEventAltText">Private attached event</item>
- <item id="staticAltText">Static member</item>
-
- <!-- language filter -->
- <item id="languageFilter">Language Filter: {0}</item>
- <item id="all">All</item>
- <item id="multiple">Multiple</item>
- <item id="VisualBasic">Visual Basic</item>
- <item id="VBScript">Visual Basic Script</item>
- <item id="CSharp">C#</item>
- <item id="ManagedCPlusPlus">Visual C++</item>
- <item id="JSharp">J#</item>
- <item id="JScript">JScript</item>
- <item id="xmlLang">Xml</item>
- <item id="html">Html</item>
- <item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item>
- <item id="other"></item>
- <item id="XAML">XAML</item>
- <item id="usage">Usage</item>
-
- <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item>
- <item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item>
- <!-- labels for links at the top of the All Members topic -->
- <item id="constructorGroup">Constructors</item>
- <item id="methodGroup">Methods</item>
- <item id="propertyGroup">Properties</item>
- <item id="eventGroup">Events</item>
- <item id="fieldGroup">Fields</item>
- <item id="operatorGroup">Operators</item>
- <item id="attachedPropertyGroup">Attached Properties</item>
- <item id="attachedEventGroup">Attached Events</item>
- <item id="Group"></item>
- <item id="collapseAll">Collapse All</item>
- <item id="expandAll">Expand All</item>
-
- <item id="Example">Example</item>
- <item id="SeeAlsoNamespaceLinkText">{0} Namespace</item>
- <item id="SeeAlsoTypeLinkText">{0} <include item="{1}SubGroup"/></item>
- <item id="SeeAlsoMembersLinkText">{0} Members</item>
-
- <item id="SubGroup"></item>
- <item id="classSubGroup">Class</item>
- <item id="structureSubGroup">Structure</item>
- <item id="interfaceSubGroup">Interface</item>
- <item id="delegateSubGroup">Delegate</item>
- <item id="enumerationSubGroup">Enumeration</item>
-
- <item id="membersOptionsShowAll">Members Options: Show All</item>
- <item id="membersOptionsFiltered">Members Options: Filtered</item>
- <item id="includeInheritedMembers">Include Inherited Members</item>
- <item id="includeProtectedMembers">Include Protected Members</item>
- <item id="netcfMembersOnly">.NET Compact Framework Members Only</item>
- <item id="netXnaMembersOnly">XNA Framework Members Only</item>
-
- <item id="requirementsNamespaceLayout">
- <b>Namespace:</b>
- </item>
-
- <item id="requirementsPlatformsLayout">
- <b>Platforms:</b> {0}
- </item>
-
- <item id="requirementsAssembliesLabel">
- <b>Assemblies:</b>
- </item>
-
- <item id="requirementsAssemblyLabel">
- <b>Assembly:</b>
- </item>
-
- <item id="assemblyNameAndModule">{0} (in {1}.{2})</item>
-
- <item id="requirementsAssemblyLayout">
- <b>Assembly:</b> {0} (in {1}.dll)
- </item>
-
- <!-- Used for Version Information Section -->
- <item id="supportedIn_1">Supported in: {0}</item>
- <item id="supportedIn_2">Supported in: {0}, {1}</item>
- <item id="supportedIn_3">Supported in: {0}, {1}, {2}</item>
- <item id="supportedIn_4">Supported in: {0}, {1}, {2}, {3}</item>
- <item id="supportedIn_5">Supported in: {0}, {1}, {2}, {3}, {4}</item>
- <item id="obsoleteWarning">Obsolete (compiler warning) in {0}</item>
- <item id="obsoleteError">Obsolete (does not compile) in {0} and later</item>
-
-
- <item id="ReturnValue">Return Value</item>
- <item id="PropertyValue">Property Value</item>
- <item id="FieldValue">Field Value</item>
-
- <item id="derivedClasses">Derived Classes</item>
- <item id="CompactFrameworkAltText">Supported by the .NET Compact Framework</item>
- <item id="XNAFrameworkAltText">Supported by the XNA Framework</item>
- <item id="ExplicitInterfaceImplementation">Explicit Interface Implementations</item>
- <item id="ExplicitInterfaceAltText">Explicit interface implemetation</item>
-
- <!-- boilerplate intro to member list tables -->
- <item id="genericExposedMembersTableText">The {0} generic type exposes the following <include item="{1}"/>.</item>
- <item id="exposedMembersTableText">The {0} type exposes the following <include item="{1}"/>.</item>
- <item id="membersSubgroup">members</item>
- <item id="MethodsSubgroup">methods</item>
- <item id="PropertiesSubgroup">properties</item>
- <item id="EventsSubgroup">events</item>
- <item id="FieldsSubgroup">fields</item>
- <item id="OperatorsSubgroup">operators</item>
- <item id="AttachedPropertiesSubgroup">attached properties</item>
- <item id="AttachedEventsSubgroup">attached events</item>
-
- <item id="dependencyPropertyInfoHeading">Dependency Property Information</item>
- <item id="routedEventInfoHeading">Routed Event Information</item>
- <item id="mrefTaskMoreCodeHeading">More Code</item>
-
- <item id="Overloaded">Overloaded. </item>
- <item id="defaultNamespace">( Default Namespace )</item>
-
- <!-- First line of a param or retval description is a link to the type of the param or retval.
- This boilerplate is used if the type is a type parameter of the member's type. -->
- <item id="typeLinkToTypeParameter"><b>{0}</b> type parameter of {1}.</item>
-
- <!-- Internal only Boilerplate text -->
- <item id="internalOnly">This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.</item>
- <item id="infraStructure">Infrastructure. </item>
-
- <!-- platform names that appear in the Platforms section on mref type and member pages
- The id values must be in sync with the platform/@name values used in the manifold platformFilters.xml filter files.
- These values are also used in <platformNotes>
- -->
- <item id="Win98">Windows 98</item>
- <item id="WinME">Windows Millennium Edition</item>
- <item id="WinSvr2000">Windows Server 2000 SP4</item>
- <item id="WinXPPro64">Windows XP Professional x64 Edition</item>
- <item id="WinXP">Windows XP SP2</item>
- <item id="WindowsCE">Windows CE</item>
- <item id="PocketPC">Windows Mobile for Pocket PC</item>
- <item id="SmartPhone">Windows Mobile for Smartphone</item>
- <item id="WinSvr2003">Windows Server 2003</item>
- <item id="WinXpMediaCenter">Windows XP Media Center Edition</item>
- <item id="WinXPSE">Windows XP Starter Edition</item>
- <item id="WinVista">Windows Vista</item>
-
- <!-- framework ids:
- These shared content item strings are used for the headings in the Version Information section
- These ids must be in sync with the ids used in the config file for VersionBuilder.
- -->
- <item id="netfw">.NET Framework</item>
- <item id="netcfw">.NET Compact Framework</item>
- <item id="xnafw">XNA Framework</item>
-
- <!-- framework version ids
- These shared content item strings are used in the Version Information section.
- These ids must be in sync with the ids used in the config file for VersionBuilder.
- The ids are also used in the platformFilters.xml filter files to indicate the framework version supported by each platform
- -->
- <item id="netfw35">3.5</item>
- <item id="netfw30">3.0</item>
- <item id="netfw20">2.0</item>
- <item id="netfw11">1.1</item>
- <item id="netfw10">1.0</item>
-
- <item id="netcfw35">3.5</item>
- <item id="netcfw20">2.0</item>
- <item id="netcfw10">1.0</item>
-
- <item id="xnafw10">1.0</item>
-
- <!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML -->
- <item id="xamlXmlnsRequirementsLayout"><b>XMLNS for XAML:</b> {0}</item>
- <item id="unmappedXamlXmlns">Not mapped to an xmlns.</item>
-
-</content>
+<content xml:space="preserve"> + + <!-- note text --> + <item id="notDocumentedText">This API is not documented.</item> + <item id="preliminaryText">This API is preliminary and subject to change.</item> + <!-- topic titles --> + <item id="tocTitle">{0}</item> + <item id="rlTitle">{0} ({1})</item> + <item id="rootTopicTitle">Namespaces</item> + <item id="namespaceTopicTitle">{0} Namespace</item> + <item id="classTopicTitle">{0} Class</item> + <item id="structureTopicTitle">{0} Structure</item> + <item id="interfaceTopicTitle">{0} Interface</item> + <item id="DerivedTypeListTopicTitle">{0} Derived Classes</item> + + <item id="delegateTopicTitle">{0} Delegate</item> + <item id="enumerationTopicTitle">{0} Enumeration</item> + <item id="fieldTopicTitle">{0} Field</item> + <item id="methodTopicTitle">{0} Method {1}</item> + <item id="constructorTopicTitle">{0} Constructor {1}</item> + <item id="propertyTopicTitle">{0} Property {1}</item> + <item id="eventTopicTitle">{0} Event</item> + <item id="operatorTopicTitle">{0} Operator</item> + + <item id="attachedPropertyTopicTitle">{0} Attached Property</item> + <item id="attachedEventTopicTitle">{0} Attached Event</item> + + <item id="generic_classTopicTitle">{0} Generic Class</item> + <item id="generic_structureTopicTitle">{0} Generic Structure</item> + <item id="generic_interfaceTopicTitle">{0} Generic Interface</item> + <item id="generic_delegateTopicTitle">{0} Generic Delegate</item> + <item id="generic_methodTopicTitle">{0} Generic Method</item> + + <!-- list topic titles --> + <item id="FieldsTopicTitle">{0} Fields</item> + <item id="MethodsTopicTitle">{0} Methods {1}</item> + <item id="ConstructorsTopicTitle">{0} Constructors {1}</item> + <item id="PropertiesTopicTitle">{0} Properties {1}</item> + <item id="EventsTopicTitle">{0} Events</item> + <item id="AttachedPropertiesTopicTitle">{0} Attached Properties</item> + <item id="AttachedEventsTopicTitle">{0} Attached Events</item> + <item id="membersTopicTitle">{0} Members</item> + + <!-- member titles --> + <item id="enumMembersTitle">Members</item> + + <!-- index entries --> + <item id="rootIndexEntry">namespaces</item> + <item id="namespaceIndexEntry">{0} namespace</item> + <item id="classIndexEntry">{0} class</item> + <item id="structureIndexEntry">{0} structure</item> + <item id="interfaceIndexEntry">{0} interface</item> + <item id="delegateIndexEntry">{0} delegate</item> + <item id="enumerationIndexEntry">{0} enumeration</item> + <item id="enumerationMemberIndexEntry">{0} enumeration member</item> + <item id="aboutTypeIndexEntry">{0}, about {0}</item> + <item id="derivedTypesIndexEntry">{0}, derived types</item> + <item id="membersIndexEntry">{0}, all members</item> + <item id="methodsIndexEntry">{0}, methods</item> + <item id="propertiesIndexEntry">{0}, properties</item> + <item id="fieldsIndexEntry">{0}, fields</item> + <item id="eventsIndexEntry">{0}, events</item> + <item id="constructorsIndexEntry">{0}, constructors</item> + <item id="constructorIndexEntry">{0}, constructor</item> + <item id="constructorTypeIndexEntry">{0} constructor</item> + <item id="methodIndexEntry">{0} method</item> + <item id="propertyIndexEntry">{0} property</item> + <item id="eventIndexEntry">{0} event</item> + <item id="fieldIndexEntry">{0} field</item> + <item id="operatorIndexEntry">{0} operator</item> + <item id="attachedPropertyIndexEntry">{0} attached property</item> + <item id="attachedEventIndexEntry">{0} attached event</item> + + <!-- index entries like: "FileClassifier class" or "Execute method" or "Microsoft.Build.Tasks.Windows.FileClassifier class" + {0} is API's name, which is shortname in some cases, or FQName in others + {1} is API's subgroup, e.g. 'class', 'method', etc. + <item id="nameSubgroupIndexEntry">{0} <include item="{1}IndexEntry"/></item> +--> + <!-- index entries like: "FileClassifier class, about FileClassifier class" + {0} is API's name, which is shortname in some cases, or FQName in others + {1} is API's subgroup, e.g. 'class', 'method', etc. + <item id="aboutTypeIndexEntry">{0} <include item="{1}IndexEntry"/>, about {0} <include item="{1}IndexEntry"/></item> + --> + <!-- index entries like: "FileClassifier class, methods" + {0} is type's name; + {1} is type's subgroup, e.g. 'class'; + {2} is the kind of list, e.g. 'AllMembers', 'Methods', etc. + <item id="listTopicIndexEntry">{0} <include item="{1}IndexEntry"/>, <include item="{2}IndexEntry"/></item> + --> + <!-- main window stuff --> + + <!-- body --> + + <!-- section titles --> + <item id="syntaxTitle">Syntax</item> + <item id="templatesTitle">Type Parameters</item> + <item id="parametersTitle">Parameters</item> + <item id="valueTitle">Value</item> + <item id="delegateValueTitle">Return Value</item> + <item id="methodValueTitle">Return Value</item> + <item id="propertyValueTitle">Property Value</item> + <item id="fieldValueTitle">Field Value</item> + <item id="implementsTitle">Implements</item> + <item id="examplesTitle">Examples</item> + <item id="threadSafetyTitle">Thread Safety</item> + <item id="exceptionsTitle">Exceptions</item> + <item id="permissionsTitle">Permissions</item> + <item id="namespacesTitle">Namespaces</item> + <item id="typesTitle">Types</item> + <item id="allMembersTitle">Members</item> + <item id="membersTitle">Overload List</item> + <item id="familyTitle">Inheritance Hierarchy</item> + <item id="versionsTitle">Version Information</item> + <item id="platformsTitle">Platforms</item> + <item id="relatedTitle">See Also</item> + + <!-- table headers --> + <item id="namespaceNameHeader">Namespace</item> + <item id="namespaceDescriptionHeader">Description</item> + <item id="typeIconHeader">Icon</item> + <item id="classNameHeader">Class</item> + <item id="structureNameHeader">Structure</item> + <item id="interfaceNameHeader">Interface</item> + <item id="delegateNameHeader">Delegate</item> + <item id="enumerationNameHeader">Enumeration</item> + <item id="typeNameHeader">Name</item> + <item id="typeDescriptionHeader">Description</item> + <item id="memberIconHeader">Icon</item> + <item id="memberNameHeader">Member</item> + <item id="memberDescriptionHeader">Description</item> + <item id="exceptionNameHeader">Exception</item> + <item id="exceptionConditionHeader">Condition</item> + <item id="permissionNameHeader">Permission</item> + <item id="permissionDescriptionHeader">Description</item> + + <!-- filter control text --> + <item id="allTypesFilterLabel">All Types</item> + <item id="classTypesFilterLabel">Classes</item> + <item id="structureTypesFilterLabel">Structures</item> + <item id="interfaceTypesFilterLabel">Interfaces</item> + <item id="delegateTypesFilterLabel">Delegates</item> + <item id="enumerationTypesFilterLabel">Enumerations</item> + <item id="allMembersFilterLabel">All Members</item> + <item id="constructorMembersFilterLabel">Constructors</item> + <item id="methodMembersFilterLabel">Methods</item> + <item id="propertyMembersFilterLabel">Properties</item> + <item id="attachedPropertyMembersFilterLabel">Attached Properties</item> + <item id="fieldMembersFilterLabel">Fields</item> + <item id="eventMembersFilterLabel">Events</item> + <item id="operatorMembersFilterLabel">Operators</item> + <item id="attachedEventMembersFilterLabel">Attached Events</item> + <item id="explicitInterfaceMembersFilterLabel">Explicit Interface Implementations</item> + <item id="publicMembersFilterLabel">Public</item> + <item id="protectedMembersFilterLabel">Protected</item> + <item id="instanceMembersFilterLabel">Instance</item> + <item id="staticMembersFilterLabel">Static</item> + <item id="declaredMembersFilterLabel">Declared</item> + <item id="inheritedMembersFilterLabel">Inherited</item> + <item id=".NETCompactFilterLabel">.NET Compact Framework Only</item> + <item id="XNAFilterLabel">XNA Framework Only</item> + <!-- member list stuff --> + <item id="Publicconstructor">Public Constructors</item> + <item id="Protectedconstructor">Protected Constructors</item> + <item id="constructorsTable">Constructors</item> + <item id="Privateconstructor">Private Constructors</item> + <item id="Publicmethod">Public Methods</item> + <item id="Protectedmethod">Protected Methods</item> + <item id="Privatemethod">Private Methods</item> + <item id="Publicfield">Public Fields</item> + <item id="Protectedfield">Protected Fields</item> + <item id="Privatefield">Private Fields</item> + <item id="Publicproperty">Public Properties</item> + <item id="Protectedproperty">Protected Properties</item> + <item id="Privateproperty">Private Properties</item> + <item id="Publicevent">Public Events</item> + <item id="Protectedevent">Protected Events</item> + <item id="Privateevent">Private Events</item> + <item id="PublicattachedProperty">Public Attached Properties</item> + <item id="ProtectedattachedProperty">Protected Attached Properties</item> + <item id="PrivateattachedProperty">Private Attached Properties</item> + <item id="PublicattachedEvent">Public Attached Events</item> + <item id="ProtectedattachedEvent">Protected Attached Events</item> + <item id="PrivateattachedEvent">Private Attached Events</item> + <item id="seeMemberGroup"> (see also {0})</item> + + <!-- Thread Safety --> + <item id="ThreadSafety">Thread Safety</item> + <item id="ThreadSafetyBP">Any public static (<b>Shared</b> in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.</item> + + <item id="NotesForImplementers">Notes to Implementers: </item> + <item id="NotesForCallers">Notes to Callers: </item> + <item id="NotesForInheritors">Notes to Inheritors: </item> + + <!-- Used for Platform Notes --> + <item id="PlatformNote"> + <b>{0} Platform Note:</b> {1} + </item> + <item id="Win95">Windows 95</item> + <item id="Win98Se">Windows 98 Second Edition</item> + + <item id="WinNT4">Windows NT 4.0</item> + <item id="WinNT4Svr">Windows NT Server 4.0</item> + <item id="WinNT4Wks">Windows NT Workstation 4.0</item> + + <item id="Win2kFamily">Windows 2000</item> + <item id="Win2kProfessional">Windows 2000 Professional</item> + <item id="Win2kServer">Windows 2000 Server</item> + <item id="Win2kDatacenter">Windows 2000 Advanced Server</item> + + <item id="WinXPPersonal">Windows XP Home Edition</item> + <item id="WinXPPro">Windows XP Professional x64 Edition</item> + <item id="WinXPSvr"><include item="WinSvr2003"/></item> + <item id="WinXpTablet">Windows XP Tablet PC Edition</item> + <item id="WinXpEmbedded">Windows XP Embedded</item> + + <item id="ECMACLI">Common Language Infrastructure (CLI) Standard</item> + + <item id="MSTV">Microsoft TV</item> + + <item id="Win9xFamily"><include item="Win95"/>, <include item="Win98"/>, <include item="Win98Se"/>, <include item="WinME"/></item> + <item id="WinNt4Family"><include item="WinNT4"/></item> + <item id="WinXpFamily"><include item="WinXPPersonal"/>, <include item="WinXPPro"/>, <include item="WinXPSvr"/></item> + <item id="WinCE"><include item="WindowsCE"/></item> + <item id="Win2K"><include item="WinSvr2000"/></item> + <item id="Win2KSvr"><include item="Win2kServer"/></item> + <item id="Win2KADC"><include item="Win2kDatacenter"/></item> + + <item id="WinNt4Server"><include item="WinNT4Svr"/></item> + <item id="WinNt4Workstation"><include item="WinNT4Wks"/></item> + <item id="Win2kAdvanced"><include item="Win2kDatacenter"/></item> + <item id="Win2kServerApplianceKit"></item> + <item id="WinXpHome"><include item="WinXPPersonal"/></item> + <item id="WinXpProfessional"><include item="WinXPPro"/></item> + <item id="Win2003Server"><include item="WinXPSvr"/></item> + <item id="NETCF"><include item="PocketPC"/>, <include item="SmartPhone"/>, <include item="WindowsCE"/></item> + <!-- Platform Notes --> + + <item id="Platforms">Platforms</item> + <!-- Platforms Information --> + <item id="developmentPlatformsLayout"> + <p/> + <span> + The .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1. + </span> + </item> + + <!-- inserted boilerplate --> + <item id="runningHeaderText">.NET Framework Class Library</item> + <item id="rootLink"><referenceLink target="R:Project">Namespaces</referenceLink></item> + <item id="obsoleteShort"><span class="obsolete">Obsolete.</span></item> + <item id="obsoleteLong"><span class="obsolete">This API is obsolete.</span></item> + <item id="nonobsoleteAlternative">The non-obsolete alternative is {0}.</item> + <item id="obsoleteRed"><font color="red"><b>Obsolete. </b></font></item> + <item id="ObsoleteBoilerPlate"> + <font color="red"><b>NOTE: This API is now obsolete.</b></font> + </item> + <item id="inheritedFrom">(Inherited from {0}.)</item> + <item id="overridesMember">(Overrides {0}.)</item> + <item id="locationInformation">Assembly: {0} (Module: {1})</item> + <item id="hostProtectionAttributeShort">HostProtectionAttribute.</item> + <item id="hostProtectionAttributeLong">The <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> attribute applied to this <include item="{0}"/> has the following <referenceLink target="P:System.Security.Permissions.HostProtectionAttribute.Resources" prefer-overload="true" /> property value: {1}. The <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the <referenceLink target="T:System.Security.Permissions.HostProtectionAttribute" prefer-overload="true" /> class or <conceptualLink target="7dfa36b4-e773-4c75-a3ff-ff1af3ce4c4f" />.</item> + <item id="classLower">class</item> + <item id="delegateLower">delegate</item> + <item id="structureLower">structure</item> + <item id="interfaceLower">interface</item> + <item id="enumerationLower">enumeration</item> + <!-- thread safety boilerplate --> + <item id="staticThreadSafe">Static members of this type are safe for multi-threaded operations. </item> + <item id="staticNotThreadSafe">Static members of this type are not safe for multi-threaded operations. </item> + <item id="instanceThreadSafe">Instance members of this type are safe for multi-threaded operations. </item> + <item id="instanceNotThreadSafe">Instance members of this type are not safe for multi-threaded operations. </item> + + <!-- alt text for images --> + <item id="pubClassAltText">Public class</item> + <item id="pubStructureAltText">Public structure</item> + <item id="pubInterfaceAltText">Public interface</item> + <item id="pubDelegateAltText">Public delegate</item> + <item id="pubEnumerationAltText">Public enumeration</item> + <item id="protClassAltText">Protected class</item> + <item id="protStructureAltText">Protected structure</item> + <item id="protInterfaceAltText">Protected interface</item> + <item id="protDelegateAltText">Protected delegate</item> + <item id="protEnumerationAltText">Protected enumeration</item> + <item id="privClassAltText">Private class</item> + <item id="privStructureAltText">Private structure</item> + <item id="privInterfaceAltText">Private interface</item> + <item id="privDelegateAltText">Private delegate</item> + <item id="privEnumerationAltText">Private enumeration</item> + + <item id="pubConstructorAltText">Public constructor</item> + <item id="pubMethodAltText">Public method</item> + <item id="pubFieldAltText">Public field</item> + <item id="pubPropertyAltText">Public property</item> + <item id="pubEventAltText">Public event</item> + <item id="pubOperatorAltText">Public operator</item> + <item id="pubAttachedPropertyAltText">Public attached property</item> + <item id="pubAttachedEventAltText">Public attached event</item> + <item id="protConstructorAltText">Protected constructor</item> + <item id="protMethodAltText">Protected method</item> + <item id="protFieldAltText">Protected field</item> + <item id="protPropertyAltText">Protected property</item> + <item id="protEventAltText">Protected event</item> + <item id="protOperatorAltText">Protected operator</item> + <item id="protAttachedPropertyAltText">Protected attached property</item> + <item id="protAttachedEventAltText">Protected attached event</item> + <item id="privConstructorAltText">Private constructor</item> + <item id="privMethodAltText">Private method</item> + <item id="privFieldAltText">Private field</item> + <item id="privPropertyAltText">Private property</item> + <item id="privEventAltText">Private event</item> + <item id="privOperatorAltText">Private operator</item> + <item id="privtAttachedPropertyAltText">Private attached property</item> + <item id="privAttachedEventAltText">Private attached event</item> + <item id="staticAltText">Static member</item> + + <!-- language filter --> + <item id="languageFilter">Language Filter: {0}</item> + <item id="all">All</item> + <item id="multiple">Multiple</item> + <item id="VisualBasic">Visual Basic</item> + <item id="VBScript">Visual Basic Script</item> + <item id="CSharp">C#</item> + <item id="ManagedCPlusPlus">Visual C++</item> + <item id="JSharp">J#</item> + <item id="JScript">JScript</item> + <item id="xmlLang">Xml</item> + <item id="html">Html</item> + <item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item> + <item id="other"></item> + <item id="XAML">XAML</item> + <item id="usage">Usage</item> + + <item id="VisualBasicDeclaration"><include item="VisualBasic"/> (Declaration)</item> + <item id="VisualBasicUsage"><include item="VisualBasic"/> (<include item="usage"/>)</item> + <!-- labels for links at the top of the All Members topic --> + <item id="constructorGroup">Constructors</item> + <item id="methodGroup">Methods</item> + <item id="propertyGroup">Properties</item> + <item id="eventGroup">Events</item> + <item id="fieldGroup">Fields</item> + <item id="operatorGroup">Operators</item> + <item id="attachedPropertyGroup">Attached Properties</item> + <item id="attachedEventGroup">Attached Events</item> + <item id="Group"></item> + <item id="collapseAll">Collapse All</item> + <item id="expandAll">Expand All</item> + + <item id="Example">Example</item> + <item id="SeeAlsoNamespaceLinkText">{0} Namespace</item> + <item id="SeeAlsoTypeLinkText">{0} <include item="{1}SubGroup"/></item> + <item id="SeeAlsoMembersLinkText">{0} Members</item> + + <item id="SubGroup"></item> + <item id="classSubGroup">Class</item> + <item id="structureSubGroup">Structure</item> + <item id="interfaceSubGroup">Interface</item> + <item id="delegateSubGroup">Delegate</item> + <item id="enumerationSubGroup">Enumeration</item> + + <item id="membersOptionsShowAll">Members Options: Show All</item> + <item id="membersOptionsFiltered">Members Options: Filtered</item> + <item id="includeInheritedMembers">Include Inherited Members</item> + <item id="includeProtectedMembers">Include Protected Members</item> + <item id="netcfMembersOnly">.NET Compact Framework Members Only</item> + <item id="netXnaMembersOnly">XNA Framework Members Only</item> + + <item id="requirementsNamespaceLayout"> + <b>Namespace:</b> + </item> + + <item id="requirementsPlatformsLayout"> + <b>Platforms:</b> {0} + </item> + + <item id="requirementsAssembliesLabel"> + <b>Assemblies:</b> + </item> + + <item id="requirementsAssemblyLabel"> + <b>Assembly:</b> + </item> + + <item id="assemblyNameAndModule">{0} (in {1}.{2})</item> + + <item id="requirementsAssemblyLayout"> + <b>Assembly:</b> {0} (in {1}.dll) + </item> + + <!-- Used for Version Information Section --> + <item id="supportedIn_1">Supported in: {0}</item> + <item id="supportedIn_2">Supported in: {0}, {1}</item> + <item id="supportedIn_3">Supported in: {0}, {1}, {2}</item> + <item id="supportedIn_4">Supported in: {0}, {1}, {2}, {3}</item> + <item id="supportedIn_5">Supported in: {0}, {1}, {2}, {3}, {4}</item> + <item id="obsoleteWarning">Obsolete (compiler warning) in {0}</item> + <item id="obsoleteError">Obsolete (does not compile) in {0} and later</item> + + + <item id="ReturnValue">Return Value</item> + <item id="PropertyValue">Property Value</item> + <item id="FieldValue">Field Value</item> + + <item id="derivedClasses">Derived Classes</item> + <item id="CompactFrameworkAltText">Supported by the .NET Compact Framework</item> + <item id="XNAFrameworkAltText">Supported by the XNA Framework</item> + <item id="ExplicitInterfaceImplementation">Explicit Interface Implementations</item> + <item id="ExplicitInterfaceAltText">Explicit interface implemetation</item> + + <!-- boilerplate intro to member list tables --> + <item id="genericExposedMembersTableText">The {0} generic type exposes the following <include item="{1}"/>.</item> + <item id="exposedMembersTableText">The {0} type exposes the following <include item="{1}"/>.</item> + <item id="membersSubgroup">members</item> + <item id="MethodsSubgroup">methods</item> + <item id="PropertiesSubgroup">properties</item> + <item id="EventsSubgroup">events</item> + <item id="FieldsSubgroup">fields</item> + <item id="OperatorsSubgroup">operators</item> + <item id="AttachedPropertiesSubgroup">attached properties</item> + <item id="AttachedEventsSubgroup">attached events</item> + + <item id="dependencyPropertyInfoHeading">Dependency Property Information</item> + <item id="routedEventInfoHeading">Routed Event Information</item> + <item id="mrefTaskMoreCodeHeading">More Code</item> + + <item id="Overloaded">Overloaded. </item> + <item id="defaultNamespace">( Default Namespace )</item> + + <!-- First line of a param or retval description is a link to the type of the param or retval. + This boilerplate is used if the type is a type parameter of the member's type. --> + <item id="typeLinkToTypeParameter"><b>{0}</b> type parameter of {1}.</item> + + <!-- Internal only Boilerplate text --> + <item id="internalOnly">This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.</item> + <item id="infraStructure">Infrastructure. </item> + + <!-- platform names that appear in the Platforms section on mref type and member pages + The id values must be in sync with the platform/@name values used in the manifold platformFilters.xml filter files. + These values are also used in <platformNotes> + --> + <item id="Win98">Windows 98</item> + <item id="WinME">Windows Millennium Edition</item> + <item id="WinSvr2000">Windows Server 2000 SP4</item> + <item id="WinXPPro64">Windows XP Professional x64 Edition</item> + <item id="WinXP">Windows XP SP2</item> + <item id="WindowsCE">Windows CE</item> + <item id="PocketPC">Windows Mobile for Pocket PC</item> + <item id="SmartPhone">Windows Mobile for Smartphone</item> + <item id="WinSvr2003">Windows Server 2003</item> + <item id="WinXpMediaCenter">Windows XP Media Center Edition</item> + <item id="WinXPSE">Windows XP Starter Edition</item> + <item id="WinVista">Windows Vista</item> + + <!-- framework ids: + These shared content item strings are used for the headings in the Version Information section + These ids must be in sync with the ids used in the config file for VersionBuilder. + --> + <item id="netfw">.NET Framework</item> + <item id="netcfw">.NET Compact Framework</item> + <item id="xnafw">XNA Framework</item> + + <!-- framework version ids + These shared content item strings are used in the Version Information section. + These ids must be in sync with the ids used in the config file for VersionBuilder. + The ids are also used in the platformFilters.xml filter files to indicate the framework version supported by each platform + --> + <item id="netfw35">3.5</item> + <item id="netfw30">3.0</item> + <item id="netfw20">2.0</item> + <item id="netfw11">1.1</item> + <item id="netfw10">1.0</item> + + <item id="netcfw35">3.5</item> + <item id="netcfw20">2.0</item> + <item id="netcfw10">1.0</item> + + <item id="xnafw10">1.0</item> + + <!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML --> + <item id="xamlXmlnsRequirementsLayout"><b>XMLNS for XAML:</b> {0}</item> + <item id="unmappedXamlXmlns">Not mapped to an xmlns.</item> + +</content> diff --git a/tools/Sandcastle/Presentation/hana/Content/shared_content.xml b/tools/Sandcastle/Presentation/hana/Content/shared_content.xml index 7abd8dd..57ed291 100644 --- a/tools/Sandcastle/Presentation/hana/Content/shared_content.xml +++ b/tools/Sandcastle/Presentation/hana/Content/shared_content.xml @@ -1,139 +1,139 @@ -<content xml:space="preserve"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp">
-
- <!-- paths -->
- <item id="iconPath">../icons/{0}</item>
- <item id="scriptPath">../scripts/{0}</item>
- <item id="artPath">../art/{0}</item>
- <item id="stylePath">../styles/{0}</item>
-
- <!-- locale -->
- <item id="locale">en-us</item>
-
- <item id="desktopTechnologyAttribute">kbNetFramewk</item>
- <item id="netcfTechnologyAttribute">kbNetCompactFramewk</item>
- <item id="netcfDocSetAttribute">NetCompactFramework</item>
-
- <!-- header -->
- <item id="header"><font color="DarkGray">[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]</font>
- <p/> </item>
-
- <!-- alert titles -->
- <item id="tipTitle"><b>Tip:</b></item>
- <item id="cautionTitle"><b>Caution:</b></item>
- <item id="securityTitle"><b>Security Note:</b></item>
- <item id="noteTitle"><b>Note:</b></item>
- <item id="importantTitle"><b>Important Note:</b></item>
- <item id="visualBasicTitle"><b>Visual Basic Note:</b></item>
- <item id="visualC#Title"><b>C# Note:</b></item>
- <item id="visualC++Title"><b>C++ Note:</b></item>
- <item id="visualJ#Title"><b>J# Note:</b></item>
-
- <!-- alert alt text -->
- <item id="tipAltText">Tip</item>
- <item id="cautionAltText">Caution note</item>
- <item id="securityAltText">Security note</item>
- <item id="noteAltText">Note</item>
- <item id="importantAltText">Important note</item>
- <item id="visualBasicAltText">Visual Basic note</item>
- <item id="visualC#AltText">C# note</item>
- <item id="visualC++AltText">C++ note</item>
- <item id="visualJ#AltText">J# note</item>
-
- <!-- code labels -->
- <item id="CSharpLabel">C#</item>
- <item id="VisualBasicLabel">Visual Basic</item>
- <item id="VisualBasicUsageLabel">Visual Basic Usage</item>
- <item id="ManagedCPlusPlusLabel">Visual C++</item>
- <item id="JSharpLabel">J#</item>
- <item id="JScriptLabel">JScript</item>
- <item id="XAMLLabel">XAML</item>
- <item id="declarationLabel">Declaration</item>
- <item id="usageLabel">Usage</item>
-
- <item id="SeeAlso">See Also</item>
- <item id="SeeAlsoTasks">Tasks</item>
- <item id="SeeAlsoReference">Reference</item>
- <item id="SeeAlsoConcepts">Concepts</item>
- <item id="SeeAlsoOtherResources">Other Resources</item>
-
- <!-- tool tips -->
- <item id="collapseAllImage">CollapseAll image</item>
- <item id="expandAllImage">ExpandAll image</item>
- <item id="dropDownImage">DropDown image</item>
- <item id="dropDownHoverImage">DropDownHover image</item>
- <item id="collapseImage">Collapse image</item>
- <item id="expandImage">Expand Image</item>
- <item id="copyHoverImage">CopyHover image</item>
- <item id="copyImage">Copy image</item>
- <item id="footerImage">Footer image</item>
-
- <!-- product labels -->
- <item id="framework">.NET Framework</item>
- <item id="compact">.NET Compact Framework</item>
- <item id="everett">1.1</item>
- <item id="whidbey">2.0</item>
-
- <item id="copyCode">Copy Code</item>
-
-
- <!-- dynamic Link Information -->
- <item id="mshelpKTable"><MSHelp:ktable keywords='{0}' locHeader='Location' topicHeader = 'Topic' disambiguator='table' indexMoniker='!DefaultDynamicLinkIndex' /></item>
-
- <item id="dynamicLinkInlinePreFixText">For more information, see </item>
- <item id="dynamicLinkInlinePostFixText">.</item>
- <item id="dynamicLinkInlineSeperatorText"> and </item>
-
- <item id="remarksTitle">Remarks</item>
-
- <!-- transforms insert K Index Technology qualifiers based on a conceptual topic's //metadata/attribute[@name='DocSet'] value />-->
- <!-- If you add new docset values, the item/@id must = "kIndexTechTag_" + the lower-case DocSet name. -->
- <item id="kIndexTermWithTechQualifier">{0}<include item="kIndexTechTag_{1}" />{2}</item>
- <item id="kIndexTechTag_avalon"> [Windows Presentation Foundation]</item>
- <item id="kIndexTechTag_wpf"> [Windows Presentation Foundation]</item>
- <item id="kIndexTechTag_wcf"> [Windows Communication Foundation]</item>
- <item id="kindextechtag_windowsforms"> [Windows Forms]</item>
-
- <!-- values for MSHelp:Attr Name="TopicType" -->
- <item id="TT_developerConceptualDocument">kbArticle</item>
- <item id="TT_developerErrorMessageDocument">kbRef</item>
- <item id="TT_developerGlossaryDocument">kbRef</item>
- <item id="TT_developerHowToDocument">kbHowTo</item>
- <item id="TT_developerOrientationDocument">kbOrient</item>
- <item id="TT_developerReferenceWithSyntaxDocument">kbSyntax</item>
- <item id="TT_developerReferenceWithoutSyntaxDocument">kbRef</item>
- <item id="TT_developerSampleDocument">kbSampleProd</item>
- <item id="TT_developerSDKTechnologyOverviewArchitectureDocument">kbArticle</item>
- <item id="TT_developerSDKTechnologyOverviewCodeDirectoryDocument">kbOrient</item>
- <item id="TT_developerSDKTechnologyOverviewOrientationDocument">kbOrient</item>
- <item id="TT_developerSDKTechnologyOverviewScenariosDocument">kbHowTo</item>
- <item id="TT_developerSDKTechnologyOverviewTechnologySummaryDocument">kbRef</item>
- <item id="TT_developerTroubleshootingDocument">kbHowTo</item>
- <item id="TT_developerUIReferenceDocument">kbRef</item>
- <item id="TT_developerWalkthroughDocument">kbHowTo</item>
- <item id="TT_developerWhitePaperDocument">kbArticle</item>
- <item id="TT_developerXmlReference">kbSyntax</item>
- <item id="TT_ManagedReference">apiref</item>
-
- <item id="top">Top</item>
-
- <!-- footer -->
-
- <item id="footer">
- <p/>
- <span>
- Send
- <a>
- <includeAttribute name="href" item="MailToLink">
- <parameter>{0}</parameter>
- <parameter>{1}</parameter>
- </includeAttribute>
- comments
- </a>
- about this topic to Microsoft.
- </span>
- </item>
-
- <item id="MailToLink">javascript:sendfeedback('Documentation Feedback (Sandcastle CTP): ', '{1}', '');</item>
-
-</content>
+<content xml:space="preserve" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp"> + + <!-- paths --> + <item id="iconPath">../icons/{0}</item> + <item id="scriptPath">../scripts/{0}</item> + <item id="artPath">../art/{0}</item> + <item id="stylePath">../styles/{0}</item> + + <!-- locale --> + <item id="locale">en-us</item> + + <item id="desktopTechnologyAttribute">kbNetFramewk</item> + <item id="netcfTechnologyAttribute">kbNetCompactFramewk</item> + <item id="netcfDocSetAttribute">NetCompactFramework</item> + + <!-- header --> + <item id="header"><font color="DarkGray">[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.]</font> + <p/> </item> + + <!-- alert titles --> + <item id="tipTitle"><b>Tip:</b></item> + <item id="cautionTitle"><b>Caution:</b></item> + <item id="securityTitle"><b>Security Note:</b></item> + <item id="noteTitle"><b>Note:</b></item> + <item id="importantTitle"><b>Important Note:</b></item> + <item id="visualBasicTitle"><b>Visual Basic Note:</b></item> + <item id="visualC#Title"><b>C# Note:</b></item> + <item id="visualC++Title"><b>C++ Note:</b></item> + <item id="visualJ#Title"><b>J# Note:</b></item> + + <!-- alert alt text --> + <item id="tipAltText">Tip</item> + <item id="cautionAltText">Caution note</item> + <item id="securityAltText">Security note</item> + <item id="noteAltText">Note</item> + <item id="importantAltText">Important note</item> + <item id="visualBasicAltText">Visual Basic note</item> + <item id="visualC#AltText">C# note</item> + <item id="visualC++AltText">C++ note</item> + <item id="visualJ#AltText">J# note</item> + + <!-- code labels --> + <item id="CSharpLabel">C#</item> + <item id="VisualBasicLabel">Visual Basic</item> + <item id="VisualBasicUsageLabel">Visual Basic Usage</item> + <item id="ManagedCPlusPlusLabel">Visual C++</item> + <item id="JSharpLabel">J#</item> + <item id="JScriptLabel">JScript</item> + <item id="XAMLLabel">XAML</item> + <item id="declarationLabel">Declaration</item> + <item id="usageLabel">Usage</item> + + <item id="SeeAlso">See Also</item> + <item id="SeeAlsoTasks">Tasks</item> + <item id="SeeAlsoReference">Reference</item> + <item id="SeeAlsoConcepts">Concepts</item> + <item id="SeeAlsoOtherResources">Other Resources</item> + + <!-- tool tips --> + <item id="collapseAllImage">CollapseAll image</item> + <item id="expandAllImage">ExpandAll image</item> + <item id="dropDownImage">DropDown image</item> + <item id="dropDownHoverImage">DropDownHover image</item> + <item id="collapseImage">Collapse image</item> + <item id="expandImage">Expand Image</item> + <item id="copyHoverImage">CopyHover image</item> + <item id="copyImage">Copy image</item> + <item id="footerImage">Footer image</item> + + <!-- product labels --> + <item id="framework">.NET Framework</item> + <item id="compact">.NET Compact Framework</item> + <item id="everett">1.1</item> + <item id="whidbey">2.0</item> + + <item id="copyCode">Copy Code</item> + + + <!-- dynamic Link Information --> + <item id="mshelpKTable"><MSHelp:ktable keywords='{0}' locHeader='Location' topicHeader = 'Topic' disambiguator='table' indexMoniker='!DefaultDynamicLinkIndex' /></item> + + <item id="dynamicLinkInlinePreFixText">For more information, see </item> + <item id="dynamicLinkInlinePostFixText">.</item> + <item id="dynamicLinkInlineSeperatorText"> and </item> + + <item id="remarksTitle">Remarks</item> + + <!-- transforms insert K Index Technology qualifiers based on a conceptual topic's //metadata/attribute[@name='DocSet'] value />--> + <!-- If you add new docset values, the item/@id must = "kIndexTechTag_" + the lower-case DocSet name. --> + <item id="kIndexTermWithTechQualifier">{0}<include item="kIndexTechTag_{1}" />{2}</item> + <item id="kIndexTechTag_avalon"> [Windows Presentation Foundation]</item> + <item id="kIndexTechTag_wpf"> [Windows Presentation Foundation]</item> + <item id="kIndexTechTag_wcf"> [Windows Communication Foundation]</item> + <item id="kindextechtag_windowsforms"> [Windows Forms]</item> + + <!-- values for MSHelp:Attr Name="TopicType" --> + <item id="TT_developerConceptualDocument">kbArticle</item> + <item id="TT_developerErrorMessageDocument">kbRef</item> + <item id="TT_developerGlossaryDocument">kbRef</item> + <item id="TT_developerHowToDocument">kbHowTo</item> + <item id="TT_developerOrientationDocument">kbOrient</item> + <item id="TT_developerReferenceWithSyntaxDocument">kbSyntax</item> + <item id="TT_developerReferenceWithoutSyntaxDocument">kbRef</item> + <item id="TT_developerSampleDocument">kbSampleProd</item> + <item id="TT_developerSDKTechnologyOverviewArchitectureDocument">kbArticle</item> + <item id="TT_developerSDKTechnologyOverviewCodeDirectoryDocument">kbOrient</item> + <item id="TT_developerSDKTechnologyOverviewOrientationDocument">kbOrient</item> + <item id="TT_developerSDKTechnologyOverviewScenariosDocument">kbHowTo</item> + <item id="TT_developerSDKTechnologyOverviewTechnologySummaryDocument">kbRef</item> + <item id="TT_developerTroubleshootingDocument">kbHowTo</item> + <item id="TT_developerUIReferenceDocument">kbRef</item> + <item id="TT_developerWalkthroughDocument">kbHowTo</item> + <item id="TT_developerWhitePaperDocument">kbArticle</item> + <item id="TT_developerXmlReference">kbSyntax</item> + <item id="TT_ManagedReference">apiref</item> + + <item id="top">Top</item> + + <!-- footer --> + + <item id="footer"> + <p/> + <span> + Send + <a> + <includeAttribute name="href" item="MailToLink"> + <parameter>{0}</parameter> + <parameter>{1}</parameter> + </includeAttribute> + comments + </a> + about this topic to Microsoft. + </span> + </item> + + <item id="MailToLink">javascript:sendfeedback('Documentation Feedback (Sandcastle CTP): ', '{1}', '');</item> + +</content> diff --git a/tools/Sandcastle/Presentation/hana/Content/token_content.xml b/tools/Sandcastle/Presentation/hana/Content/token_content.xml index 13b8cb2..1ccae34 100644 --- a/tools/Sandcastle/Presentation/hana/Content/token_content.xml +++ b/tools/Sandcastle/Presentation/hana/Content/token_content.xml @@ -1,4 +1,4 @@ -<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
- <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item>
- <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item>
-</items>
+<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> + <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item> + <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item> +</items> diff --git a/tools/Sandcastle/Presentation/hana/DocModel.ps1 b/tools/Sandcastle/Presentation/hana/DocModel.ps1 index 8f8aa55..dade8e2 100644 --- a/tools/Sandcastle/Presentation/hana/DocModel.ps1 +++ b/tools/Sandcastle/Presentation/hana/DocModel.ps1 @@ -1,22 +1,22 @@ -
-# Sandcastle build script overrides for vsorcas doc model.
-
-. $DxRoot\Presentation\Shared\SharedDocModel.ps1
-
-function PostProcessReflectionData($sourceFile, $targetFile) {
- WriteInfo "Post processing reflection data."
- &$XslTransform $sourceFile `
- /xsl:$DxRoot\ProductionTransforms\ApplyVSDocModel.xsl `
- /xsl:$DxRoot\ProductionTransforms\AddFriendlyFilenames.xsl `
- /arg:IncludeAllMembersTopic=false `
- /arg:IncludeInheritedOverloadTopics=true `
- /out:$targetFile
-}
-
-function CreateToc {
- WriteInfo "Creating TOC."
- &$XslTransform $TempDir\ReflectionData\targets.xml `
- /xsl:$DxRoot\ProductionTransforms\createvstoc.xsl `
- /out:$TempDir\toc.xml
-}
-
+ +# Sandcastle build script overrides for vsorcas doc model. + +. $DxRoot\Presentation\Shared\SharedDocModel.ps1 + +function PostProcessReflectionData($sourceFile, $targetFile) { + WriteInfo "Post processing reflection data." + &$XslTransform $sourceFile ` + /xsl:$DxRoot\ProductionTransforms\ApplyVSDocModel.xsl ` + /xsl:$DxRoot\ProductionTransforms\AddFriendlyFilenames.xsl ` + /arg:IncludeAllMembersTopic=false ` + /arg:IncludeInheritedOverloadTopics=true ` + /out:$targetFile +} + +function CreateToc { + WriteInfo "Creating TOC." + &$XslTransform $TempDir\ReflectionData\targets.xml ` + /xsl:$DxRoot\ProductionTransforms\createvstoc.xsl ` + /out:$TempDir\toc.xml +} + diff --git a/tools/Sandcastle/Presentation/hana/Scripts/CommonUtilities.js b/tools/Sandcastle/Presentation/hana/Scripts/CommonUtilities.js index 347e028..431eb96 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/CommonUtilities.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/CommonUtilities.js @@ -1,314 +1,314 @@ -function codeBlockHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections)
-{
- var names = value.split(' ');
-
- //Blocks
- for(var blockCount = 0; blockCount < blockCollections.length; blockCount++)
- {
- toggleStyle(blockCollections[blockCount], 'x-lang', names[0], 'display', 'block', 'none');
- }
-
- //curvedTabs
- for(var curvedTabCount = 0; curvedTabCount < curvedTabCollections.length; curvedTabCount++)
- {
- curvedToggleClass(curvedTabCollections[curvedTabCount], 'x-lang',names[0]);
- }
-
- //Tabs
- for(var tabCount = 0; tabCount < tabCollections.length; tabCount++)
- {
- toggleClass(tabCollections[tabCount], 'x-lang', names[0], 'activeTab', 'tab');
- }
-}
-
-function styleSheetHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections)
-{
- var names = value.split(' ');
- var name = names[1];
- toggleInlineStyle(name);
-}
-
-function persistenceHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections)
-{
- data.set('lang', value);
- data.save();
-}
-
-function languageHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections)
-{
- var names = value.split(' ');
- toggleLanguage(id, 'x-lang', names[0]);
-}
-
-toggleInlineStyle = function(name)
-{
- var sd = getStyleDictionary();
- if (name == 'cs') {
- sd['span.cs'].display = 'inline';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'none';
- } else if (name == 'vb') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'inline';
- sd['span.cpp'].display = 'none';
- } else if (name == 'cpp') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'inline';
- } else {
- }
-}
-
-toggleLanguage = function(id, data, value)
-{
- var tNodes = getChildNodes('languageFilterToolTip');
-
- for(var labelCount=0; labelCount < tNodes.length; labelCount++)
- {
- if(tNodes[labelCount].tagName != 'IMG' && tNodes[labelCount].tagName != '/IMG')
- {
- if(tNodes[labelCount].getAttribute('id').indexOf(value) >= 0)
- {
- tNodes[labelCount].style['display'] = 'inline';
- }
- else
- {
- tNodes[labelCount].style['display'] = 'none';
- }
- }
- }
-
- var languageNodes = getChildNodes(id);
-
- for(var languageCount=0; languageCount < languageNodes.length; languageCount++)
- {
- if(languageNodes[languageCount].tagName == 'DIV');
- {
- if(languageNodes[languageCount].getAttribute('id'))
- {
- var imageNodes = getChildNodes(languageNodes[languageCount].getAttribute('id'))[0];
- if (languageNodes[languageCount].getAttribute('id') == value)
- {
- imageNodes.src = radioSelectImage.src;
- }
- else
- {
- imageNodes.src = radioUnSelectImage.src;
- }
- }
- }
- }
-}
-
-toggleStyle = function(blocks, attributeName, attributeValue, styleName, trueStyleValue, falseStyleValue)
-{
- var blockNodes = getChildNodes(blocks);
-
- for(var blockCount=0; blockCount < blockNodes.length; blockCount++)
- {
- var blockElement = blockNodes[blockCount].getAttribute(attributeName);
- if (blockElement == attributeValue) blockNodes[blockCount].style[styleName] = trueStyleValue;
- else blockNodes[blockCount].style[styleName] = falseStyleValue;
- }
-}
-
-curvedToggleClass = function(curvedTabs, attributeName, attributeValue)
-{
- var curvedTabNodes = getChildNodes(curvedTabs);
-
- for(var curvedTabCount=0; curvedTabCount < curvedTabNodes.length; curvedTabCount++)
- {
- var curvedTabElement = curvedTabNodes[curvedTabCount].getAttribute(attributeName);
- if (curvedTabElement == attributeValue)
- {
- if (curvedTabNodes[curvedTabCount].className == 'leftTab' || curvedTabNodes[curvedTabCount].className == 'activeLeftTab')
- {
- curvedTabNodes[curvedTabCount].className = 'activeLeftTab';
- }
- else if(curvedTabNodes[curvedTabCount].className == 'rightTab' || curvedTabNodes[curvedTabCount].className == 'activeRightTab')
- {
- curvedTabNodes[curvedTabCount].className = 'activeRightTab';
- }
- else if(curvedTabNodes[curvedTabCount].className == 'middleTab' || curvedTabNodes[curvedTabCount].className == 'activeMiddleTab')
- {
- curvedTabNodes[curvedTabCount].className = 'activeMiddleTab';
- }
- }
- else
- {
- if (curvedTabNodes[curvedTabCount].className == 'leftTab' || curvedTabNodes[curvedTabCount].className == 'activeLeftTab')
- {
- curvedTabNodes[curvedTabCount].className = 'leftTab';
- }
- else if(curvedTabNodes[curvedTabCount].className == 'rightTab' || curvedTabNodes[curvedTabCount].className == 'activeRightTab')
- {
- curvedTabNodes[curvedTabCount].className = 'rightTab';
- }
- else if(curvedTabNodes[curvedTabCount].className == 'middleTab' || curvedTabNodes[curvedTabCount].className == 'activeMiddleTab')
- {
- curvedTabNodes[curvedTabCount].className = 'middleTab';
- }
- }
- }
-}
-
-toggleClass = function(tabs, attributeName, attributeValue, trueClass, falseClass)
-{
- var tabNodes = getChildNodes(tabs);
-
- for(var tabCount=0; tabCount < tabNodes.length; tabCount++)
- {
- var tabElement = tabNodes[tabCount].getAttribute(attributeName);
-
- if (tabElement == attributeValue)
- {
- if(tabNodes[tabCount].className == 'leftGrad' || tabNodes[tabCount].className == 'activeLeftGrad')
- {
- tabNodes[tabCount].className = 'activeLeftGrad';
- }
- else if (tabNodes[tabCount].className == 'rightGrad' || tabNodes[tabCount].className == 'activeRightGrad')
- {
- tabNodes[tabCount].className = 'activeRightGrad';
- }
- else tabNodes[tabCount].className = trueClass;
- }
- else
- {
- if(tabNodes[tabCount].className == 'leftGrad' || tabNodes[tabCount].className == 'activeLeftGrad')
- {
- tabNodes[tabCount].className = 'leftGrad';
- }
- else if (tabNodes[tabCount].className == 'rightGrad' || tabNodes[tabCount].className == 'activeRightGrad')
- {
- tabNodes[tabCount].className = 'rightGrad';
- }
- else tabNodes[tabCount].className = falseClass;
- }
- }
-}
-
-getChildNodes = function(node)
-{
- var element = document.getElementById(node);
-
- // get the children
- if (element.tagName == 'TABLE')
- {
- // special handling for tables
- var bodies = element.tBodies;
- for(i = 0; i < bodies.length; i++)
- {
- var nodes = bodies[i].rows;
- return nodes;
- }
- }
- else
- {
- // all other cases
- var nodes = element.childNodes;
- return nodes;
- }
-}
-
-process = function(list, processFunction)
-{
- var listNodes = getChildNodes(list);
-
- for(var i=0; i < listNodes.length; i++)
- {
- var listElement = listNodes[i];
- processFunction(listElement);
- }
-}
-
-function getStyleDictionary() {
- var styleDictionary = new Array();
-
- // iterate through stylesheets
- var sheets = document.styleSheets;
-
- for(var i=0; i<sheets.length;i++) {
- var sheet = sheets[i];
-
- // Ignore sheets at ms-help Urls
- if (sheet.href.substr(0,8) == 'ms-help:') continue;
-
- // get sheet rules
- var rules = sheet.cssRules;
-
- if (rules == null) rules = sheet.rules;
-
- // iterate through rules
- for(j=0; j<rules.length; j++) {
- var rule = rules[j];
-
- // Ignore ones that aren't defined
- if(rule.selectorText == null)
- continue;
-
- // add rule to dictionary
- styleDictionary[rule.selectorText.toLowerCase()] = rule.style;
- }
- }
-
- return(styleDictionary);
-}
-
-function toggleCheck(imageElement)
-{
- if(imageElement.src == checkBoxSelectImage.src)
- {
- imageElement.src = checkBoxUnSelectImage.src;
- return false;
- }
- else
- {
- imageElement.src = checkBoxSelectImage.src;
- return true;
- }
-}
-
-function mouseOverCheck(imageElement, selected, unselected, selected_hover, unselected_hover)
-{
- if(imageElement.src == selected.src)
- {
- imageElement.src = selected_hover.src;
- }
- else if(imageElement.src == unselected.src)
- {
- imageElement.src = unselected_hover.src;
- }
-}
-
-
-function mouseOutCheck(imageElement, selected, unselected, selected_hover, unselected_hover)
-{
- if(imageElement.src == selected_hover.src)
- {
- imageElement.src = selected.src;
- }
- else if(imageElement.src == unselected_hover.src)
- {
- imageElement.src = unselected.src;
- }
-}
-
-function toggleSelect(imageElement, section)
-{
- if(imageElement.src == twirlSelectImage.src)
- {
- imageElement.src = twirlUnSelectImage.src;
- section.style['display'] = 'none';
- }
- else
- {
- imageElement.src = twirlSelectImage.src;
- section.style['display'] = 'block';
- }
-}
-
-
-
-
-
-
+function codeBlockHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections) +{ + var names = value.split(' '); + + //Blocks + for(var blockCount = 0; blockCount < blockCollections.length; blockCount++) + { + toggleStyle(blockCollections[blockCount], 'x-lang', names[0], 'display', 'block', 'none'); + } + + //curvedTabs + for(var curvedTabCount = 0; curvedTabCount < curvedTabCollections.length; curvedTabCount++) + { + curvedToggleClass(curvedTabCollections[curvedTabCount], 'x-lang',names[0]); + } + + //Tabs + for(var tabCount = 0; tabCount < tabCollections.length; tabCount++) + { + toggleClass(tabCollections[tabCount], 'x-lang', names[0], 'activeTab', 'tab'); + } +} + +function styleSheetHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections) +{ + var names = value.split(' '); + var name = names[1]; + toggleInlineStyle(name); +} + +function persistenceHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections) +{ + data.set('lang', value); + data.save(); +} + +function languageHandler(id, data, value, curvedTabCollections, tabCollections, blockCollections) +{ + var names = value.split(' '); + toggleLanguage(id, 'x-lang', names[0]); +} + +toggleInlineStyle = function(name) +{ + var sd = getStyleDictionary(); + if (name == 'cs') { + sd['span.cs'].display = 'inline'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'none'; + } else if (name == 'vb') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'inline'; + sd['span.cpp'].display = 'none'; + } else if (name == 'cpp') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'inline'; + } else { + } +} + +toggleLanguage = function(id, data, value) +{ + var tNodes = getChildNodes('languageFilterToolTip'); + + for(var labelCount=0; labelCount < tNodes.length; labelCount++) + { + if(tNodes[labelCount].tagName != 'IMG' && tNodes[labelCount].tagName != '/IMG') + { + if(tNodes[labelCount].getAttribute('id').indexOf(value) >= 0) + { + tNodes[labelCount].style['display'] = 'inline'; + } + else + { + tNodes[labelCount].style['display'] = 'none'; + } + } + } + + var languageNodes = getChildNodes(id); + + for(var languageCount=0; languageCount < languageNodes.length; languageCount++) + { + if(languageNodes[languageCount].tagName == 'DIV'); + { + if(languageNodes[languageCount].getAttribute('id')) + { + var imageNodes = getChildNodes(languageNodes[languageCount].getAttribute('id'))[0]; + if (languageNodes[languageCount].getAttribute('id') == value) + { + imageNodes.src = radioSelectImage.src; + } + else + { + imageNodes.src = radioUnSelectImage.src; + } + } + } + } +} + +toggleStyle = function(blocks, attributeName, attributeValue, styleName, trueStyleValue, falseStyleValue) +{ + var blockNodes = getChildNodes(blocks); + + for(var blockCount=0; blockCount < blockNodes.length; blockCount++) + { + var blockElement = blockNodes[blockCount].getAttribute(attributeName); + if (blockElement == attributeValue) blockNodes[blockCount].style[styleName] = trueStyleValue; + else blockNodes[blockCount].style[styleName] = falseStyleValue; + } +} + +curvedToggleClass = function(curvedTabs, attributeName, attributeValue) +{ + var curvedTabNodes = getChildNodes(curvedTabs); + + for(var curvedTabCount=0; curvedTabCount < curvedTabNodes.length; curvedTabCount++) + { + var curvedTabElement = curvedTabNodes[curvedTabCount].getAttribute(attributeName); + if (curvedTabElement == attributeValue) + { + if (curvedTabNodes[curvedTabCount].className == 'leftTab' || curvedTabNodes[curvedTabCount].className == 'activeLeftTab') + { + curvedTabNodes[curvedTabCount].className = 'activeLeftTab'; + } + else if(curvedTabNodes[curvedTabCount].className == 'rightTab' || curvedTabNodes[curvedTabCount].className == 'activeRightTab') + { + curvedTabNodes[curvedTabCount].className = 'activeRightTab'; + } + else if(curvedTabNodes[curvedTabCount].className == 'middleTab' || curvedTabNodes[curvedTabCount].className == 'activeMiddleTab') + { + curvedTabNodes[curvedTabCount].className = 'activeMiddleTab'; + } + } + else + { + if (curvedTabNodes[curvedTabCount].className == 'leftTab' || curvedTabNodes[curvedTabCount].className == 'activeLeftTab') + { + curvedTabNodes[curvedTabCount].className = 'leftTab'; + } + else if(curvedTabNodes[curvedTabCount].className == 'rightTab' || curvedTabNodes[curvedTabCount].className == 'activeRightTab') + { + curvedTabNodes[curvedTabCount].className = 'rightTab'; + } + else if(curvedTabNodes[curvedTabCount].className == 'middleTab' || curvedTabNodes[curvedTabCount].className == 'activeMiddleTab') + { + curvedTabNodes[curvedTabCount].className = 'middleTab'; + } + } + } +} + +toggleClass = function(tabs, attributeName, attributeValue, trueClass, falseClass) +{ + var tabNodes = getChildNodes(tabs); + + for(var tabCount=0; tabCount < tabNodes.length; tabCount++) + { + var tabElement = tabNodes[tabCount].getAttribute(attributeName); + + if (tabElement == attributeValue) + { + if(tabNodes[tabCount].className == 'leftGrad' || tabNodes[tabCount].className == 'activeLeftGrad') + { + tabNodes[tabCount].className = 'activeLeftGrad'; + } + else if (tabNodes[tabCount].className == 'rightGrad' || tabNodes[tabCount].className == 'activeRightGrad') + { + tabNodes[tabCount].className = 'activeRightGrad'; + } + else tabNodes[tabCount].className = trueClass; + } + else + { + if(tabNodes[tabCount].className == 'leftGrad' || tabNodes[tabCount].className == 'activeLeftGrad') + { + tabNodes[tabCount].className = 'leftGrad'; + } + else if (tabNodes[tabCount].className == 'rightGrad' || tabNodes[tabCount].className == 'activeRightGrad') + { + tabNodes[tabCount].className = 'rightGrad'; + } + else tabNodes[tabCount].className = falseClass; + } + } +} + +getChildNodes = function(node) +{ + var element = document.getElementById(node); + + // get the children + if (element.tagName == 'TABLE') + { + // special handling for tables + var bodies = element.tBodies; + for(i = 0; i < bodies.length; i++) + { + var nodes = bodies[i].rows; + return nodes; + } + } + else + { + // all other cases + var nodes = element.childNodes; + return nodes; + } +} + +process = function(list, processFunction) +{ + var listNodes = getChildNodes(list); + + for(var i=0; i < listNodes.length; i++) + { + var listElement = listNodes[i]; + processFunction(listElement); + } +} + +function getStyleDictionary() { + var styleDictionary = new Array(); + + // iterate through stylesheets + var sheets = document.styleSheets; + + for(var i=0; i<sheets.length;i++) { + var sheet = sheets[i]; + + // Ignore sheets at ms-help Urls + if (sheet.href.substr(0,8) == 'ms-help:') continue; + + // get sheet rules + var rules = sheet.cssRules; + + if (rules == null) rules = sheet.rules; + + // iterate through rules + for(j=0; j<rules.length; j++) { + var rule = rules[j]; + + // Ignore ones that aren't defined + if(rule.selectorText == null) + continue; + + // add rule to dictionary + styleDictionary[rule.selectorText.toLowerCase()] = rule.style; + } + } + + return(styleDictionary); +} + +function toggleCheck(imageElement) +{ + if(imageElement.src == checkBoxSelectImage.src) + { + imageElement.src = checkBoxUnSelectImage.src; + return false; + } + else + { + imageElement.src = checkBoxSelectImage.src; + return true; + } +} + +function mouseOverCheck(imageElement, selected, unselected, selected_hover, unselected_hover) +{ + if(imageElement.src == selected.src) + { + imageElement.src = selected_hover.src; + } + else if(imageElement.src == unselected.src) + { + imageElement.src = unselected_hover.src; + } +} + + +function mouseOutCheck(imageElement, selected, unselected, selected_hover, unselected_hover) +{ + if(imageElement.src == selected_hover.src) + { + imageElement.src = selected.src; + } + else if(imageElement.src == unselected_hover.src) + { + imageElement.src = unselected.src; + } +} + +function toggleSelect(imageElement, section) +{ + if(imageElement.src == twirlSelectImage.src) + { + imageElement.src = twirlUnSelectImage.src; + section.style['display'] = 'none'; + } + else + { + imageElement.src = twirlSelectImage.src; + section.style['display'] = 'block'; + } +} + + + + + + diff --git a/tools/Sandcastle/Presentation/hana/Scripts/DataStore.js b/tools/Sandcastle/Presentation/hana/Scripts/DataStore.js index 17e449f..12e072c 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/DataStore.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/DataStore.js @@ -1,116 +1,116 @@ -// cookie data store
-function DataStore(name)
-{
- this.name = name;
- this.load();
-}
-
-DataStore.prototype.load = function ()
-{
- // create a key/value store
- this.language = new Object();
-
- // get cookie text
- var text = getCookie(this.name);
-
- if (text == null) return;
-
- // populate the store using the cookie text
- var data = text.split(';');
-
- for (var i=0; i<data.length; i++)
- {
- var datum = data[i];
- var index = datum.indexOf('=');
-
- if (index > 0)
- {
- var key = datum.substring(0,index);
- var value = datum.substring(index+1);
- this.language[key] = value;
- }
- }
-
-}
-
-function setCookie(name, value, expires, path, domain, secure)
-{
- var text = name + "=" + escape(value);
-
- if (expires)
- {
-
- var currentDate = new Date();
- var expireDate = new Date( currentDate.getTime() + expires*24*60*60*1000 );
- text = text + ";expires=" + expireDate.toGMTString();
- }
- if (path) text = text + ";path=" + path;
- if (domain) text = text + ";domain=" + domain;
- if (secure) text = text + ";secure";
-
- document.cookie = text;
-}
-
-function removeCookie(name)
-{
- setCookie(name, "", -1);
-}
-
-function getCookie(name)
-{
- var text = document.cookie;
-
- var index = text.indexOf(name + "=");
-
- if (index < 0) return(null);
-
- var start = index + name.length + 1;
- var end = text.indexOf(";", start);
-
- if (end < 0) end = text.length;
-
- var value = unescape( text.substring(start, end) );
- return(value);
-}
-
-DataStore.prototype.set = function(key, value)
-{
- this.language[key] = value;
-}
-
-DataStore.prototype.get = function(key)
-{
- return(this.language[key]);
-}
-
-DataStore.prototype.clear = function ()
-{
- this.language = new Object();
-}
-
-DataStore.prototype.save = function ()
-{
- // prepare a cookie string
- var text = "";
-
- // construct the string
- for (var key in this.language)
- {
- var datum = key + "=" + this.language[key];
- text = text + datum + ";";
- }
-
- // set it
- setCookie(this.name, text);
-}
-
-DataStore.prototype.count = function()
-{
- var i = 0;
- for (var key in this.data)
- {
- i++;
- }
- return(i);
-}
+// cookie data store +function DataStore(name) +{ + this.name = name; + this.load(); +} + +DataStore.prototype.load = function () +{ + // create a key/value store + this.language = new Object(); + + // get cookie text + var text = getCookie(this.name); + + if (text == null) return; + + // populate the store using the cookie text + var data = text.split(';'); + + for (var i=0; i<data.length; i++) + { + var datum = data[i]; + var index = datum.indexOf('='); + + if (index > 0) + { + var key = datum.substring(0,index); + var value = datum.substring(index+1); + this.language[key] = value; + } + } + +} + +function setCookie(name, value, expires, path, domain, secure) +{ + var text = name + "=" + escape(value); + + if (expires) + { + + var currentDate = new Date(); + var expireDate = new Date( currentDate.getTime() + expires*24*60*60*1000 ); + text = text + ";expires=" + expireDate.toGMTString(); + } + if (path) text = text + ";path=" + path; + if (domain) text = text + ";domain=" + domain; + if (secure) text = text + ";secure"; + + document.cookie = text; +} + +function removeCookie(name) +{ + setCookie(name, "", -1); +} + +function getCookie(name) +{ + var text = document.cookie; + + var index = text.indexOf(name + "="); + + if (index < 0) return(null); + + var start = index + name.length + 1; + var end = text.indexOf(";", start); + + if (end < 0) end = text.length; + + var value = unescape( text.substring(start, end) ); + return(value); +} + +DataStore.prototype.set = function(key, value) +{ + this.language[key] = value; +} + +DataStore.prototype.get = function(key) +{ + return(this.language[key]); +} + +DataStore.prototype.clear = function () +{ + this.language = new Object(); +} + +DataStore.prototype.save = function () +{ + // prepare a cookie string + var text = ""; + + // construct the string + for (var key in this.language) + { + var datum = key + "=" + this.language[key]; + text = text + datum + ";"; + } + + // set it + setCookie(this.name, text); +} + +DataStore.prototype.count = function() +{ + var i = 0; + for (var key in this.data) + { + i++; + } + return(i); +}
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/hana/Scripts/Dropdown.js b/tools/Sandcastle/Presentation/hana/Scripts/Dropdown.js index 233c960..d4f1fe0 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/Dropdown.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/Dropdown.js @@ -1,56 +1,56 @@ -
- // Dropdown menu control
-
- function Dropdown(activatorId, dropdownId) {
-
- // store activator and dropdown elements
- this.activator = document.getElementById(activatorId);
- this.dropdown = document.getElementById(dropdownId);
-
- // wire up show/hide events
- registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show"));
- registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide"));
- registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show"));
- registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide"));
-
- // fix visibility and position
- this.dropdown.style.visibility = 'hidden';
- this.dropdown.style.position = 'absolute';
- this.reposition(null);
-
- // wire up repositioning event
- registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition"));
-
-
- }
-
- Dropdown.prototype.show = function(e) {
- clearTimeout(this.timer);
- this.dropdown.style.visibility = 'visible';
- }
-
- Dropdown.prototype.hide = function(e) {
- this.dropdown.style.visibility = 'hidden';
- }
-
- Dropdown.prototype.requestHide = function(e) {
- this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250);
- }
-
- Dropdown.prototype.reposition = function(e) {
-
- // get position of activator
- var offsetLeft = 0;
- var offsetTop = 0;
- var offsetElement = this.activator;
- while (offsetElement) {
- offsetLeft += offsetElement.offsetLeft;
- offsetTop += offsetElement.offsetTop;
- offsetElement = offsetElement.offsetParent;
- }
-
- // set position of dropdown relative to it
- this.dropdown.style.left = offsetLeft;
- this.dropdown.style.top = offsetTop + this.activator.offsetHeight;
-
- }
+ + // Dropdown menu control + + function Dropdown(activatorId, dropdownId) { + + // store activator and dropdown elements + this.activator = document.getElementById(activatorId); + this.dropdown = document.getElementById(dropdownId); + + // wire up show/hide events + registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show")); + registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide")); + registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show")); + registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide")); + + // fix visibility and position + this.dropdown.style.visibility = 'hidden'; + this.dropdown.style.position = 'absolute'; + this.reposition(null); + + // wire up repositioning event + registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition")); + + + } + + Dropdown.prototype.show = function(e) { + clearTimeout(this.timer); + this.dropdown.style.visibility = 'visible'; + } + + Dropdown.prototype.hide = function(e) { + this.dropdown.style.visibility = 'hidden'; + } + + Dropdown.prototype.requestHide = function(e) { + this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250); + } + + Dropdown.prototype.reposition = function(e) { + + // get position of activator + var offsetLeft = 0; + var offsetTop = 0; + var offsetElement = this.activator; + while (offsetElement) { + offsetLeft += offsetElement.offsetLeft; + offsetTop += offsetElement.offsetTop; + offsetElement = offsetElement.offsetParent; + } + + // set position of dropdown relative to it + this.dropdown.style.left = offsetLeft; + this.dropdown.style.top = offsetTop + this.activator.offsetHeight; + + } diff --git a/tools/Sandcastle/Presentation/hana/Scripts/EventUtilities.js b/tools/Sandcastle/Presentation/hana/Scripts/EventUtilities.js index f3536f5..1828a11 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/EventUtilities.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/EventUtilities.js @@ -1,23 +1,23 @@ -
- // attach a handler to a particular event on an element
- // in a browser-independent way
- function registerEventHandler (element, event, handler) {
- if (element.attachEvent) {
- // MS registration model
- element.attachEvent('on' + event, handler);
- } else if (element.addEventListener) {
- // NN (W4C) regisration model
- element.addEventListener(event, handler, false);
- } else {
- // old regisration model as fall-back
- element[event] = handler;
- }
- }
-
- // get a delegate that refers to an instance method
- function getInstanceDelegate (obj, methodName) {
- return( function(e) {
- e = e || window.event;
- return obj[methodName](e);
- } );
- }
+ + // attach a handler to a particular event on an element + // in a browser-independent way + function registerEventHandler (element, event, handler) { + if (element.attachEvent) { + // MS registration model + element.attachEvent('on' + event, handler); + } else if (element.addEventListener) { + // NN (W4C) regisration model + element.addEventListener(event, handler, false); + } else { + // old regisration model as fall-back + element[event] = handler; + } + } + + // get a delegate that refers to an instance method + function getInstanceDelegate (obj, methodName) { + return( function(e) { + e = e || window.event; + return obj[methodName](e); + } ); + } diff --git a/tools/Sandcastle/Presentation/hana/Scripts/LanguageFilter.js b/tools/Sandcastle/Presentation/hana/Scripts/LanguageFilter.js index ad29617..c5b75f9 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/LanguageFilter.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/LanguageFilter.js @@ -1,91 +1,91 @@ -/*
-
-function Selector2 (id, tag, attribute) {
- this.root = document.getElementById(id);
- this.elements = new Array();
- this.values = new Array();
- this.registerChildren(root, attribute);
-
- this.handlers = new Array();
-}
-
-Selector2.prototype.registerChildren(parent, tag, attribute) {
- var children = parent.childNodes;
- for (var i = 0; i<children.length; i++) {
- var child = children[i];
- if (child.nodeType == 1) {
- var value = child.getAttribute(attribute);
- if (value) {
- this.elements.add(child);
- this.values.add(value);
- }
- this.registerChildren(child, tag, attribute);
- }
- }
-}
-
-Selector2.prototype.registerHandler(handler) {
- this.handlers.add(handler);
-}
-
-Selector2.prototype.select(value) {
- for (var i=0; i<handlers.length; i++) {
- this.handlers[i](this, value);
- }
-}
-*/
-
-function Selector(id)
-{
- this.selectorHandlers = new Array();
- this.curvedTabCollections = new Array();
- this.tabCollections = new Array();
- this.blockCollections = new Array();
- this.id = id;
-}
-
-Selector.prototype.register=function(handler)
-{
- this.selectorHandlers.push(handler);
-}
-
-Selector.prototype.registerTabbedArea = function(curvedTabCollection, tabCollection, blockCollection)
-{
- this.curvedTabCollections.push(curvedTabCollection);
- this.tabCollections.push(tabCollection);
- this.blockCollections.push(blockCollection);
-}
-
-Selector.prototype.changeLanguage = function(data, name, style)
-{
-
- var value= name + ' ' + style;
-
- for(var handler in this.selectorHandlers)
- {
- this.selectorHandlers[handler](this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections);
- }
-}
-
-Selector.prototype.select = function(data)
-{
- var value = data.get('lang');
-
- if (value == null) return;
- var names = value.split(' ');
-
- var nodes = getChildNodes(this.id);
-
- for( var i=0; i<nodes.length; i++)
- {
- if(nodes[i].getAttribute('id') == names[0])
- {
- styleSheetHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections);
- codeBlockHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections);
- languageHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections);
- }
- }
-}
-
-
-
+/* + +function Selector2 (id, tag, attribute) { + this.root = document.getElementById(id); + this.elements = new Array(); + this.values = new Array(); + this.registerChildren(root, attribute); + + this.handlers = new Array(); +} + +Selector2.prototype.registerChildren(parent, tag, attribute) { + var children = parent.childNodes; + for (var i = 0; i<children.length; i++) { + var child = children[i]; + if (child.nodeType == 1) { + var value = child.getAttribute(attribute); + if (value) { + this.elements.add(child); + this.values.add(value); + } + this.registerChildren(child, tag, attribute); + } + } +} + +Selector2.prototype.registerHandler(handler) { + this.handlers.add(handler); +} + +Selector2.prototype.select(value) { + for (var i=0; i<handlers.length; i++) { + this.handlers[i](this, value); + } +} +*/ + +function Selector(id) +{ + this.selectorHandlers = new Array(); + this.curvedTabCollections = new Array(); + this.tabCollections = new Array(); + this.blockCollections = new Array(); + this.id = id; +} + +Selector.prototype.register=function(handler) +{ + this.selectorHandlers.push(handler); +} + +Selector.prototype.registerTabbedArea = function(curvedTabCollection, tabCollection, blockCollection) +{ + this.curvedTabCollections.push(curvedTabCollection); + this.tabCollections.push(tabCollection); + this.blockCollections.push(blockCollection); +} + +Selector.prototype.changeLanguage = function(data, name, style) +{ + + var value= name + ' ' + style; + + for(var handler in this.selectorHandlers) + { + this.selectorHandlers[handler](this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections); + } +} + +Selector.prototype.select = function(data) +{ + var value = data.get('lang'); + + if (value == null) return; + var names = value.split(' '); + + var nodes = getChildNodes(this.id); + + for( var i=0; i<nodes.length; i++) + { + if(nodes[i].getAttribute('id') == names[0]) + { + styleSheetHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections); + codeBlockHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections); + languageHandler(this.id, data, value, this.curvedTabCollections, this.tabCollections, this.blockCollections); + } + } +} + + + diff --git a/tools/Sandcastle/Presentation/hana/Scripts/MemberFilter.js b/tools/Sandcastle/Presentation/hana/Scripts/MemberFilter.js index 98bd7c2..b6cd3ec 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/MemberFilter.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/MemberFilter.js @@ -1,110 +1,110 @@ -
- // a member filter
-
- function MemberFilter () {
-
- // set up defaults
-
- this.subgroup = "all";
-
- this.public = true;
- this.protected = true;
- this.private = true;
-
- this.instance = true;
- this.static = true;
-
- this.declared = true;
- this.inherited = true;
-
- this.compact = true;
-
- this.xna = true;
- }
-
- MemberFilter.prototype.filterElement = function(element) {
-
- // get the data for the element
- if (element == null) return;
- var data = element.getAttribute("data");
- if (data == null) return;
- var datum = data.split("; ");
- if (datum.length != 6) return;
-
- // extract the relevent member attributes
- var subgroup = datum[0];
- var visibility = datum[1];
- var binding = datum[2];
- var origin = datum[3];
- var compactFramework = datum[4];
- var xnaFramework = datum[5];
-
-
- // determine whether to show the member
- var show = true;
- if (this[visibility] == false) show = false;
- if (this[binding] == false) show = false;
- if (this[origin] == false) show = false;
- if (this[compactFramework] == false) show = false;
- if(this[xnaFramework] == false) show = false;
-
- if ((this.subgroup != null) && (this.subgroup != 'all')) {
- if (subgroup != this.subgroup) show = false;
- }
-
-
- // show or hide the element
- if (show) {
- // either block or table-row, depending on browswer, so use default
- element.style["display"] = "";
- } else {
- element.style["display"] = "none";
- }
-
- }
-
- // a type filter
-
- function TypeFilter () {
-
- // set up defaults
-
-
- this.subgroup = "all";
-
- this.public = true;
- this.internal = true;
-
- }
-
- TypeFilter.prototype.filterElement = function(element) {
-
- // get the data for the element
- if (element == null) return;
- var data = element.getAttribute("data");
- if (data == null) return;
- var datum = data.split("; ");
- if (datum.length != 2) return;
-
- // extract the relevent member attributes
- var subgroup = datum[0];
- var visibility = datum[1];
-
- // determine whether to show the member
- var show = true;
- if (this[visibility] == false) show = false;
- if ((this.subgroup != null) && (this.subgroup != 'all')) {
- if (subgroup != this.subgroup) show = false;
- }
-
- // show or hide the element
- if (show) {
- // either block or table-row, depending on browser, so use default
- element.style["display"] = "";
- } else {
- element.style["display"] = "none";
- }
-
- }
-
+ + // a member filter + + function MemberFilter () { + + // set up defaults + + this.subgroup = "all"; + + this.public = true; + this.protected = true; + this.private = true; + + this.instance = true; + this.static = true; + + this.declared = true; + this.inherited = true; + + this.compact = true; + + this.xna = true; + } + + MemberFilter.prototype.filterElement = function(element) { + + // get the data for the element + if (element == null) return; + var data = element.getAttribute("data"); + if (data == null) return; + var datum = data.split("; "); + if (datum.length != 6) return; + + // extract the relevent member attributes + var subgroup = datum[0]; + var visibility = datum[1]; + var binding = datum[2]; + var origin = datum[3]; + var compactFramework = datum[4]; + var xnaFramework = datum[5]; + + + // determine whether to show the member + var show = true; + if (this[visibility] == false) show = false; + if (this[binding] == false) show = false; + if (this[origin] == false) show = false; + if (this[compactFramework] == false) show = false; + if(this[xnaFramework] == false) show = false; + + if ((this.subgroup != null) && (this.subgroup != 'all')) { + if (subgroup != this.subgroup) show = false; + } + + + // show or hide the element + if (show) { + // either block or table-row, depending on browswer, so use default + element.style["display"] = ""; + } else { + element.style["display"] = "none"; + } + + } + + // a type filter + + function TypeFilter () { + + // set up defaults + + + this.subgroup = "all"; + + this.public = true; + this.internal = true; + + } + + TypeFilter.prototype.filterElement = function(element) { + + // get the data for the element + if (element == null) return; + var data = element.getAttribute("data"); + if (data == null) return; + var datum = data.split("; "); + if (datum.length != 2) return; + + // extract the relevent member attributes + var subgroup = datum[0]; + var visibility = datum[1]; + + // determine whether to show the member + var show = true; + if (this[visibility] == false) show = false; + if ((this.subgroup != null) && (this.subgroup != 'all')) { + if (subgroup != this.subgroup) show = false; + } + + // show or hide the element + if (show) { + // either block or table-row, depending on browser, so use default + element.style["display"] = ""; + } else { + element.style["display"] = "none"; + } + + } +
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/hana/Scripts/SplitScreen.js b/tools/Sandcastle/Presentation/hana/Scripts/SplitScreen.js index 1240154..3b04f0a 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/SplitScreen.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/SplitScreen.js @@ -1,29 +1,29 @@ -
- function SplitScreen (nonScrollingRegionId, scrollingRegionId) {
-
- // store references to the two regions
- this.nonScrollingRegion = document.getElementById(nonScrollingRegionId);
- this.scrollingRegion = document.getElementById(scrollingRegionId);
-
- // set the scrolling settings
- document.body.style.margin = "0px";
- document.body.style.overflow = "hidden";
- this.scrollingRegion.style.overflow = "auto";
-
- // fix the size of the scrolling region
- this.resize(null);
-
- // add an event handler to resize the scrolling region when the window is resized
- registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize"));
-
- }
-
- SplitScreen.prototype.resize = function(e) {
- var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight;
- if (height > 0) {
- this.scrollingRegion.style.height = height;
- } else {
- this.scrollingRegion.style.height = 0;
- }
- this.scrollingRegion.style.width = document.body.clientWidth;
- }
+ + function SplitScreen (nonScrollingRegionId, scrollingRegionId) { + + // store references to the two regions + this.nonScrollingRegion = document.getElementById(nonScrollingRegionId); + this.scrollingRegion = document.getElementById(scrollingRegionId); + + // set the scrolling settings + document.body.style.margin = "0px"; + document.body.style.overflow = "hidden"; + this.scrollingRegion.style.overflow = "auto"; + + // fix the size of the scrolling region + this.resize(null); + + // add an event handler to resize the scrolling region when the window is resized + registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize")); + + } + + SplitScreen.prototype.resize = function(e) { + var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight; + if (height > 0) { + this.scrollingRegion.style.height = height; + } else { + this.scrollingRegion.style.height = 0; + } + this.scrollingRegion.style.width = document.body.clientWidth; + } diff --git a/tools/Sandcastle/Presentation/hana/Scripts/script_manifold.js b/tools/Sandcastle/Presentation/hana/Scripts/script_manifold.js index f617524..e64a126 100644 --- a/tools/Sandcastle/Presentation/hana/Scripts/script_manifold.js +++ b/tools/Sandcastle/Presentation/hana/Scripts/script_manifold.js @@ -1,1594 +1,1594 @@ -window.onload=LoadPage;
-window.onunload=Window_Unload;
-//window.onresize=ResizeWindow;
-window.onbeforeprint = set_to_print;
-window.onafterprint = reset_form;
-
-var vbDeclaration;
-var vbUsage;
-var csLang;
-var cLang;
-var jsharpLang;
-var jsLang;
-var xamlLang;
-
-var scrollPos = 0;
-
-var inheritedMembers;
-var protectedMembers;
-var netcfMembersOnly;
-var netXnaMembersOnly;
-
-// Initialize array of section states
-
-var sectionStates = new Array();
-var sectionStatesInitialized = false;
-
-//Hide sample source in select element
-function HideSelect()
-{
- var selectTags = document.getElementsByTagName("SELECT");
- var spanEles = document.getElementsByTagName("span");
- var i = 10;
- var m;
-
- if (selectTags.length != null || selectTags.length >0)
- {
- for (n=0; n<selectTags.length; n++)
- {
- var lan = selectTags(n).getAttribute("id").substr("10");
- //hide the first select that is on
- switch (lan.toLowerCase())
- {
- case "visualbasic":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasic" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- case "visualbasicdeclaration":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicDeclaration" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "visualbasicusage":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicUsage" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- case "csharp":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "CSharp" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "managedcplusplus":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "ManagedCPlusPlus" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "jsharp":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "JSharp" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "jscript":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "JScript" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "xaml":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "XAML" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- }
- }
- if (i != 10)
- selectTags(i).style.visibility = "hidden";
- }
- else{ alert("Not found!");}
-}
-
-function UnHideSelect()
-{
- var selectTags = document.getElementsByTagName("SELECT");
- var n;
-
- //un-hide all the select sections
- if (selectTags.length != null || selectTags.length >0)
- {
- for (n=0; n<selectTags.length; n++)
- selectTags(n).style.visibility = "visible";
- }
-}
-
-function InitSectionStates()
-{
- sectionStatesInitialized = true;
-
- if (globals == null) globals = GetGlobals();
-
- // SectionStates has the format:
- //
- // firstSectionId:state;secondSectionId:state;thirdSectionId:state; ... ;lastSectionId:state
- //
- // where state is either "e" (expanded) or "c" (collapsed)
-
- // get the SectionStates from the previous topics
- var states = Load("SectionStates");
-
- var start = 0;
- var end;
- var section;
- var state;
- var allCollapsed = false;
- // copy the previous section states to the sectionStates array for the current page
- if (states != null && states != "")
- {
- allCollapsed = true;
- while (start < states.length)
- {
- end = states.indexOf(":", start);
-
- section = states.substring(start, end);
-
- start = end + 1;
- end = states.indexOf(";", start);
- if (end == -1) end = states.length;
- state = states.substring(start, end);
- sectionStates[section] = state;
- allCollapsed = allCollapsed && (state == "c");
- start = end + 1;
- }
- }
-
- // now set the state for any section ids in the current document that weren't in previous
- var imgElements = document.getElementsByName("toggleSwitch");
- var i;
- for (i = 0; i < imgElements.length; ++i)
- sectionStates[imgElements[i].id] = GetInitialSectionState(imgElements[i].id, allCollapsed);
-}
-
-function GetInitialSectionState(itemId, allCollapsed)
-{
- // if the global state is "allCollapsed", set all section states to collapsed
- if (allCollapsed) return "c";
-
- // generic <section> node ids begin with "sectionToggle", so the same id can refer to different sections in different topics
- // we don't want to persist their state; set it to expanded
- if (itemId.indexOf("sectionToggle", 0) == 0) return "e";
-
- // the default state for new section ids is expanded
- if (sectionStates[itemId] == null) return "e";
-
- // otherwise, persist the passed in state
- return sectionStates[itemId];
-}
-
-var noReentry = false;
-
-function OnLoadImage(eventObj)
-{
- if (noReentry) return;
-
- if (!sectionStatesInitialized)
- InitSectionStates();
-
- var elem;
- if(document.all) elem = eventObj.srcElement;
- else elem = eventObj.target;
-
-
- if ((sectionStates[elem.id] == "e"))
- ExpandSection(elem);
- else if((sectionStates[elem.id] == "c"))
- CollapseSection(elem);
-}
-
-/*
-**********
-********** Begin
-**********
-*/
-
-function LoadPage()
-{
- // If not initialized, grab the DTE.Globals object
- if (globals == null) globals = GetGlobals();
-
- // show correct language
- LoadLanguages();
- LoadMembersOptions();
-
- Set_up_checkboxes();
-
- DisplayLanguages();
-
- DisplayFilteredMembers();
-
- ChangeMembersOptionsFilterLabel();
-
- if (!sectionStatesInitialized)
- InitSectionStates();
-
- SetCollapseAll();
-
-// ResizeWindow();
- // split screen
- var screen = new SplitScreen('header', 'mainSection');
-
- // filtering dropdowns
- if (document.getElementById('languageSpan') != null) {
- var languageMenu = new Dropdown('languageFilterToolTip', 'languageSpan');
- }
- if (document.getElementById('membersOptionsFilterToolTip') != null) {
- var languageMenu = new Dropdown('membersOptionsFilterToolTip', 'membersOptionsSpan');
- }
-
- var mainSection = document.getElementById("mainSection");
-
- // vs70.js did this to allow up/down arrow scrolling, I think
- try { mainSection.setActive(); } catch(e) { }
-
- //set the scroll position
- try{mainSection.scrollTop = scrollPos;}
- catch(e){}
-}
-
-function Window_Unload()
-{
- SaveLanguages();
- SaveMembersOptions();
- SaveSections();
-}
-
-/*
-function ResizeWindow()
-{
- if (document.body.clientWidth==0) return;
- var header = document.all.item("header");
- var mainSection = document.all.item("mainSection");
- if (mainSection == null) return;
-
-
- document.body.scroll = "no"
- mainSection.style.overflow= "auto";
- header.style.width= document.body.offsetWidth - 2;
- //mainSection.style.paddingRight = "20px"; // Width issue code
- mainSection.style.width= document.body.offsetWidth - 2;
- mainSection.style.top=0;
- if (document.body.offsetHeight > header.offsetHeight + 10)
- mainSection.style.height= document.body.offsetHeight - (header.offsetHeight + 2);
- else
- mainSection.style.height=0;
-
- try
- {
- mainSection.setActive();
- }
- catch(e)
- {
- }
-}
-*/
-
-function set_to_print()
-{
- //breaks out of divs to print
- var i;
-
- if (window.text)document.all.text.style.height = "auto";
-
- for (i=0; i < document.all.length; i++)
- {
- if (document.all[i].tagName == "body")
- {
- document.all[i].scroll = "yes";
- }
- if (document.all[i].id == "header")
- {
- document.all[i].style.margin = "0px 0px 0px 0px";
- document.all[i].style.width = "100%";
- }
- if (document.all[i].id == "mainSection")
- {
- document.all[i].style.overflow = "visible";
- document.all[i].style.top = "5px";
- document.all[i].style.width = "100%";
- document.all[i].style.padding = "0px 10px 0px 30px";
- }
- }
-}
-
-function reset_form()
-{
- //returns to the div nonscrolling region after print
- document.location.reload();
-}
-
-function Set_up_checkboxes()
-{
- var checkbox;
-
- checkbox = document.getElementById("vbDeclarationCheckbox");
- if(checkbox != null)
- {
- if(vbDeclaration == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("vbUsageCheckbox");
- if(checkbox != null)
- {
- if(vbUsage == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("csCheckbox");
- if(checkbox != null)
- {
- if(csLang == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("cCheckbox");
- if(checkbox != null)
- {
- if(cLang == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("jsharpCheckbox");
- if(checkbox != null)
- {
- if(jsharpLang == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("jsCheckbox");
- if(checkbox != null)
- {
- if(jsLang == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("xamlCheckbox");
- if(checkbox != null)
- {
- if(xamlLang == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("inheritedCheckbox");
- if(checkbox != null)
- {
- if(inheritedMembers == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("protectedCheckbox");
- if(checkbox != null)
- {
- if(protectedMembers == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("netcfCheckbox");
- if(checkbox != null)
- {
- if(netcfMembersOnly == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-
- checkbox = document.getElementById("netXnaCheckbox");
- if(checkbox != null)
- {
- if(netXnaMembersOnly == "on")
- checkbox.checked = true;
- else
- checkbox.checked = false;
- }
-}
-
-/*
-**********
-********** End
-**********
-*/
-
-
-/*
-**********
-********** Begin Language Filtering
-**********
-*/
-
-function SetLanguage(key)
-{
- var i = 0;
- if(vbDeclaration == "on")
- i++;
- if(vbUsage == "on")
- i++;
- if(csLang == "on")
- i++;
- if(cLang == "on")
- i++;
- if(jsharpLang == "on")
- i++;
- if(jsLang == "on")
- i++;
- if(xamlLang == "on")
- i++;
-
- if(key.id == "vbDeclarationCheckbox")
- {
- if(vbDeclaration == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
- vbDeclaration = "off";
- }
- else
- vbDeclaration = "on";
- }
- if(key.id == "vbUsageCheckbox")
- {
- if(vbUsage == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- vbUsage = "off";
- }
- else
- vbUsage = "on";
- }
- if(key.id == "csCheckbox")
- {
- if(csLang == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- csLang = "off";
- }
- else
- csLang = "on";
- }
- if(key.id == "cCheckbox")
- {
- if(cLang == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- cLang = "off";
- }
- else
- cLang = "on";
- }
- if(key.id == "jsharpCheckbox")
- {
- if(jsharpLang == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- jsharpLang = "off";
- }
- else
- jsharpLang = "on";
- }
- if(key.id == "jsCheckbox")
- {
- if(jsLang == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- jsLang = "off";
- }
- else
- jsLang = "on";
- }
- if(key.id == "xamlCheckbox")
- {
- if(xamlLang == "on")
- {
- if(i == 1)
- {
- key.checked = true;
- return;
- }
-
- xamlLang = "off";
- }
- else
- xamlLang = "on";
- }
-
- DisplayLanguages();
-}
-
-function DisplayLanguages()
-{
- var spanElements = document.getElementsByTagName("span");
- var x = 0;
- if(vbDeclaration == "on")
- x++;
- if(vbUsage == "on")
- x++;
- if(csLang == "on")
- x++;
- if(cLang == "on")
- x++;
- if(jsharpLang == "on")
- x++;
- if(jsLang == "on")
- x++;
- if(xamlLang == "on")
- x++;
-
- var i;
- for(i = 0; i < spanElements.length; ++i)
- {
- if(spanElements[i].getAttribute("codeLanguage") != null)
- {
- if(spanElements[i].getAttribute("codeLanguage") == "VisualBasic")
- {
- if(vbDeclaration == "on" || vbUsage == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "VisualBasicDeclaration")
- {
-
- if(vbDeclaration == "on")
- spanElements[i].style.display = "";
- else{
-
- spanElements[i].style.display = "none";
- }
- }
- if(spanElements[i].getAttribute("codeLanguage") == "VisualBasicUsage")
- {
- if(vbUsage == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "CSharp")
- {
- if(csLang == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "ManagedCPlusPlus")
- {
- if(cLang == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "JSharp")
- {
- if(jsharpLang == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "JScript")
- {
- if(jsLang == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- if(spanElements[i].getAttribute("codeLanguage") == "XAML")
- {
- if(xamlLang == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
-
- if(spanElements[i].getAttribute("codeLanguage") == "NotVisualBasicUsage")
- {
- if((x == 1) && (vbUsage == "on"))
- {
- spanElements[i].style.display = "none";
- }
- else
- {
- spanElements[i].style.display = "";
- }
- }
- }
- }
- ChangeLanguageFilterLabel();
-}
-
-function ChangeLanguageFilterLabel()
-{
- var i = 0;
- if(vbDeclaration == "on")
- i++;
- if(vbUsage == "on")
- i++;
- if(csLang == "on")
- i++;
- if(cLang == "on")
- i++;
- if(jsharpLang == "on")
- i++;
- if(jsLang == "on")
- i++;
- if(xamlLang == "on")
- i++;
-
- var labelElement;
-
- labelElement = document.getElementById("showAllLabel");
-
- if(labelElement == null)
- return;
-
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("multipleLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("vbLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("csLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("cLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("jsharpLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("jsLabel");
- labelElement.style.display = "none";
-
- labelElement = document.getElementById("xamlLabel");
- labelElement.style.display = "none";
-
- if(i == 7)
- {
- labelElement = document.getElementById("showAllLabel");
- labelElement.style.display = "inline";
- }
- else if ((i > 1) && (i < 7))
- {
- if((i == 2) && ((vbDeclaration == "on") && (vbUsage == "on")))
- {
- labelElement = document.getElementById("vbLabel");
- labelElement.style.display = "inline";
- }
- else
- {
- labelElement = document.getElementById("multipleLabel");
- labelElement.style.display = "inline";
- }
- }
- else if (i == 1)
- {
- if(vbDeclaration == "on" || vbUsage == "on")
- {
- labelElement = document.getElementById("vbLabel");
- labelElement.style.display = "inline";
- }
- if(csLang == "on")
- {
- labelElement = document.getElementById("csLabel");
- labelElement.style.display = "inline";
- }
- if(cLang == "on")
- {
- labelElement = document.getElementById("cLabel");
- labelElement.style.display = "inline";
- }
- if(jsharpLang == "on")
- {
- labelElement = document.getElementById("jsharpLabel");
- labelElement.style.display = "inline";
- }
- if(jsLang == "on")
- {
- labelElement = document.getElementById("jsLabel");
- labelElement.style.display = "inline";
- }
- if(xamlLang == "on")
- {
- labelElement = document.getElementById("xamlLabel");
- labelElement.style.display = "inline";
- }
- }
-}
-
-function LoadLanguages()
-{
- var value;
- value = Load("vbDeclaration");
- if(value == null)
- vbDeclaration = "on";
- else
- vbDeclaration = value;
-
- value = Load("vbUsage");
- if(value == null)
- vbUsage = "on";
- else
- vbUsage = value;
-
- value = Load("csLang");
- if(value == null)
- csLang = "on";
- else
- csLang = value;
-
- value = Load("cLang");
- if(value == null)
- cLang = "on";
- else
- cLang = value;
-
- value = Load("jsharpLang");
- if(value == null)
- jsharpLang = "on";
- else
- jsharpLang = value;
-
- value = Load("jsLang");
- if(value == null)
- jsLang = "on";
- else
- jsLang = value;
-
- value = Load("xamlLang");
- if(value == null)
- xamlLang = "on";
- else
- xamlLang = value;
-}
-
-function SaveLanguages()
-{
- Save("vbDeclaration", vbDeclaration);
- Save("vbUsage", vbUsage);
- Save("csLang", csLang);
- Save("cLang", cLang);
- Save("jsharpLang", jsharpLang);
- Save("jsLang", jsLang);
- Save("xamlLang", xamlLang);
-}
-
-/*
-**********
-********** End Language Filtering
-**********
-*/
-
-
-/*
-**********
-********** Begin Members Options Filtering
-**********
-*/
-
-function SetMembersOptions(key)
-{
- if(key.id == "inheritedCheckbox")
- {
- if(key.checked == true)
- inheritedMembers = "on";
- else
- inheritedMembers = "off";
- }
- if(key.id == "protectedCheckbox")
- {
- if(key.checked == true)
- protectedMembers = "on";
- else
- protectedMembers = "off";
- }
- if(key.id == "netcfCheckbox")
- {
- if(key.checked == true)
- netcfMembersOnly = "on";
- else
- netcfMembersOnly = "off";
- }
- if(key.id == "netXnaCheckbox")
- {
- if(key.checked == true)
- netXnaMembersOnly = "on";
- else
- netXnaMembersOnly = "off";
- }
- DisplayFilteredMembers();
-
- ChangeMembersOptionsFilterLabel();
-}
-
-function DisplayFilteredMembers()
-{
- var iAllMembers = document.getElementsByTagName("tr");
- var i;
-
- for(i = 0; i < iAllMembers.length; ++i)
- {
- if (((iAllMembers[i].getAttribute("protected") == "true") && (protectedMembers == "off")) ||
- ((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) ||
- ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) ||
- ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on")))
- iAllMembers[i].style.display = "none";
- else
- iAllMembers[i].style.display = "";
- }
-}
-
-function ChangeMembersOptionsFilterLabel()
-{
-
- var showAllMembersLabelElement = document.getElementById("showAllMembersLabel");
- var filteredMembersLabelElement = document.getElementById("filteredMembersLabel");
-
- if(showAllMembersLabelElement == null || filteredMembersLabelElement == null)
- return;
-
- if ((inheritedMembers=="off") || (protectedMembers=="off") || (netXnaMembersOnly == "on") || (netcfMembersOnly=="on"))
- {
- filteredMembersLabelElement.style.display = "inline";
- showAllMembersLabelElement.style.display = "none";
- }
- else
- {
- filteredMembersLabelElement.style.display = "none";
- showAllMembersLabelElement.style.display = "inline";
- }
-}
-
-function LoadMembersOptions()
-{
- var value;
- value = Load("inheritedMembers");
- if(value == null)
- inheritedMembers = "on";
- else
- inheritedMembers = value;
-
- value = Load("protectedMembers");
- if(value == null)
- protectedMembers = "on";
- else
- protectedMembers = value;
-
- value = Load("netcfMembersOnly");
- if(value == null)
- netcfMembersOnly = "off";
- else
- netcfMembersOnly = value;
-
- value = Load("netXnaMembersOnly");
- if(value == null)
- netXnaMembersOnly = "off";
- else
- netXnaMembersOnly = value;
-}
-
-function SaveMembersOptions()
-{
- Save("inheritedMembers", inheritedMembers);
- Save("protectedMembers", protectedMembers);
- Save("netcfMembersOnly", netcfMembersOnly);
- Save("netXnaMembersOnly", netXnaMembersOnly);
-}
-
-/*
-**********
-********** End Members Options Filtering
-**********
-*/
-
-
-/*
-**********
-********** Begin Expand/Collapse
-**********
-*/
-
-// expand or collapse a section
-function ExpandCollapse(imageItem)
-{
- if (sectionStates[imageItem.id] == "e")
- CollapseSection(imageItem);
- else
- ExpandSection(imageItem);
-
- SetCollapseAll();
-}
-
-// expand or collapse all sections
-function ExpandCollapseAll(imageItem)
-{
- var collapseAllImage = document.getElementById("collapseAllImage");
- var expandAllImage = document.getElementById("expandAllImage");
- if (imageItem == null || collapseAllImage == null || expandAllImage == null) return;
- noReentry = true; // Prevent entry to OnLoadImage
-
- var imgElements = document.getElementsByName("toggleSwitch");
- var i;
- var collapseAll = (imageItem.src == collapseAllImage.src);
- if (collapseAll)
- {
- imageItem.src = expandAllImage.src;
- imageItem.alt = expandAllImage.alt;
-
- for (i = 0; i < imgElements.length; ++i)
- {
- CollapseSection(imgElements[i]);
- }
- }
- else
- {
- imageItem.src = collapseAllImage.src;
- imageItem.alt = collapseAllImage.alt;
-
- for (i = 0; i < imgElements.length; ++i)
- {
- ExpandSection(imgElements[i]);
- }
- }
- SetAllSectionStates(collapseAll);
- SetToggleAllLabel(collapseAll);
-
- noReentry = false;
-}
-
-function ExpandCollapse_CheckKey(imageItem, eventObj)
-{
- if(eventObj.keyCode == 13)
- ExpandCollapse(imageItem);
-}
-
-function ExpandCollapseAll_CheckKey(imageItem, eventObj)
-{
- if(eventObj.keyCode == 13)
- ExpandCollapseAll(imageItem);
-}
-
-function SetAllSectionStates(collapsed)
-{
- for (var sectionId in sectionStates)
- sectionStates[sectionId] = (collapsed) ? "c" : "e";
-}
-
-function ExpandSection(imageItem)
-{
- noReentry = true; // Prevent re-entry to OnLoadImage
- try
- {
- var collapseImage = document.getElementById("collapseImage");
- imageItem.src = collapseImage.src;
- imageItem.alt = collapseImage.alt;
-
- imageItem.parentNode.parentNode.nextSibling.style.display = "";
- sectionStates[imageItem.id] = "e";
- }
- catch (e)
- {
- }
- noReentry = false;
-}
-
-function CollapseSection(imageItem)
-{
- noReentry = true; // Prevent re-entry to OnLoadImage
- var expandImage = document.getElementById("expandImage");
- imageItem.src = expandImage.src;
- imageItem.alt = expandImage.alt;
- imageItem.parentNode.parentNode.nextSibling.style.display = "none";
- sectionStates[imageItem.id] = "c";
- noReentry = false;
-}
-
-function AllCollapsed()
-{
- var imgElements = document.getElementsByName("toggleSwitch");
- var allCollapsed = true;
- var i;
-
- for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c");
-
- return allCollapsed;
-}
-
-function SetCollapseAll()
-{
- var imageElement = document.getElementById("toggleAllImage");
- if (imageElement == null) return;
-
- var allCollapsed = AllCollapsed();
- if (allCollapsed)
- {
- var expandAllImage = document.getElementById("expandAllImage");
- if (expandAllImage == null) return;
- imageElement.src = expandAllImage.src;
- imageElement.alt = expandAllImage.alt;
- }
- else
- {
- var collapseAllImage = document.getElementById("collapseAllImage");
- if (collapseAllImage == null) return;
- imageElement.src = collapseAllImage.src;
- imageElement.alt = collapseAllImage.alt;
- }
-
- SetToggleAllLabel(allCollapsed);
-}
-
-function SetToggleAllLabel(allCollapsed)
-{
- var collapseLabelElement = document.getElementById("collapseAllLabel");
- var expandLabelElement = document.getElementById("expandAllLabel");
-
- if (collapseLabelElement == null || expandLabelElement == null) return;
-
- if (allCollapsed)
- {
- collapseLabelElement.style.display = "none";
- expandLabelElement.style.display = "inline";
- }
- else
- {
- collapseLabelElement.style.display = "inline";
- expandLabelElement.style.display = "none";
- }
-}
-
-function SaveSections()
-{
- try
- {
- var states = "";
-
- for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";";
-
- Save("SectionStates", states.substring(0, states.length - 1));
- }
- catch (e)
- {
- }
-
-}
-
-function OpenSection(imageItem)
-{
- if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem);
-}
-
-/*
-**********
-********** End Expand/Collapse
-**********
-*/
-
-
-
-/*
-**********
-********** Begin Copy Code
-**********
-*/
-
-function CopyCode(key)
-{
- var trElements = document.getElementsByTagName("tr");
- var i;
- for(i = 0; i < trElements.length; ++i)
- {
- if(key.parentNode.parentNode.parentNode == trElements[i].parentNode)
- {
- if (window.clipboardData)
- {
- // the IE-manner
- window.clipboardData.setData("Text", trElements[i].innerText);
- }
- else if (window.netscape)
- {
- // Gives unrestricted access to browser APIs using XPConnect
- try
- {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- }
- catch(e)
- {
- alert("Universal Connect was refused, cannot copy to " +
- "clipboard. Go to about:config and set " +
- "signed.applets.codebase_principal_support to true to " +
- "enable clipboard support.");
- return;
- }
-
- // Creates an instance of nsIClipboard
- var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
- if (!clip) return;
-
- // Creates an instance of nsITransferable
- var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
- if (!trans) return;
-
- // register the data flavor
- trans.addDataFlavor('text/unicode');
-
- // Create object to hold the data
- var str = new Object();
-
- // Creates an instance of nsISupportsString
- var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
-
- //Assigns the data to be copied
- var copytext = trElements[i].textContent;
- str.data = copytext;
-
- // Add data objects to transferable
- trans.setTransferData("text/unicode",str,copytext.length*2);
- var clipid = Components.interfaces.nsIClipboard;
- if (!clip) return false;
-
- // Transfer the data to clipboard
- clip.setData(trans,null,clipid.kGlobalClipboard);
- }
- }
- }
-}
-
-function ChangeCopyCodeIcon(key)
-{
- var i;
- var imageElements = document.getElementsByName("ccImage")
- for(i=0; i<imageElements.length; ++i)
- {
- if(imageElements[i].parentNode == key)
- {
- if(imageElements[i].src == copyImage.src)
- {
- imageElements[i].src = copyHoverImage.src;
- imageElements[i].alt = copyHoverImage.alt;
- key.className = 'copyCodeOnHover';
- }
- else
- {
- imageElements[i].src = copyImage.src;
- imageElements[i].alt = copyImage.alt;
- key.className = 'copyCode';
- }
- }
- }
-}
-
-function CopyCode_CheckKey(key, eventObj)
-{
- if(eventObj.keyCode == 13)
- CopyCode(key);
-}
-
-/*
-**********
-********** End Copy Code
-**********
-*/
-
-
-/*
-**********
-********** Begin Maintain Scroll Position
-**********
-*/
-
-function loadAll(){
- try
- {
- scrollPos = allHistory.getAttribute("Scroll");
- }
- catch(e){}
-}
-
-function saveAll(){
- try
- {
- allHistory.setAttribute("Scroll", mainSection.scrollTop);
- }
- catch(e){}
-}
-
-/*
-**********
-********** End Maintain Scroll Position
-**********
-*/
-
-
-/*
-**********
-********** Begin Send Mail
-**********
-*/
-
-function formatMailToLink(anchor)
-{
- var release = "Release: " + anchor.doc_Release;
- var topicId = "Topic ID: " + anchor.doc_TopicID;
- var topicTitle = "Topic Title: " + anchor.doc_TopicTitle;
- var url = "URL: " + document.URL;
- var browser = "Browser: " + window.navigator.userAgent;
-
- var crlf = "%0d%0a";
- var body = release + crlf + topicId + crlf + topicTitle + crlf + url + crlf + browser + crlf + crlf + "Comments:" + crlf + crlf;
-
- anchor.href = anchor.href + "&body=" + body;
-}
-
-/*
-**********
-********** End Send Mail
-**********
-*/
-
-
-/*
-**********
-********** Begin Persistence
-**********
-*/
-
-var globals;
-
-function GetGlobals()
-{
- var tmp;
-
- // Try to get VS implementation
- try { tmp = window.external.Globals; }
- catch (e) { tmp = null; }
-
- // Try to get DExplore implementation
- try { if (tmp == null) tmp = window.external.GetObject("DTE", "").Globals; }
- catch (e) { tmp = null; }
-
- return tmp;
-}
-
-function Load(key)
-{
- try
- {
- return globals.VariableExists(key) ? globals.VariableValue(key) : null;
- }
- catch (e)
- {
- return null;
- }
-}
-
-function Save(key, value)
-{
- try
- {
- globals.VariableValue(key) = value;
- globals.VariablePersists(key) = true;
- }
- catch (e)
- {
- }
-}
-
-/*
-**********
-********** End Persistence
-**********
-*/
-
-/* This is the part for Glossary popups */
-// The method is called when the user positions the mouse cursor over a glossary term in a document.
-// Current implementation assumes the existence of an associative array (g_glossary).
-// The keys of the array correspond to the argument passed to this function.
-
-var bGlossary=true;
-var oDialog;
-var oTimeout="";
-var oTimein="";
-var iTimein=.5;
-var iTimeout=30;
-var oLastNode;
-var oNode;
-var bInit=false;
-var aTerms=new Array();
-
-// Called from mouseover and when the contextmenu behavior fires oncontextopen.
-function clearDef(eventObj){
- if(eventObj){
- var elem;
- if(document.all) elem = eventObj.toElement;
- else elem = eventObj.relatedTarget;
- if(elem!=null || elem!="undefined"){
- if(typeof(oTimein)=="number"){
- window.clearTimeout(oTimein);
- }
- if(oDialog.dlg_status==true){
- hideDef();
- }
- }
- }
-}
-function hideDef(eventObj){
- window.clearTimeout(oTimeout);
- oTimeout="";
- oDialog.style.display="none";
- oDialog.dlg_status=false;
-}
-function showDef(oSource){
- if(bInit==false){
- glossaryInit();
- bInit=true;
- }
- if(bGlossary==true){
- if(typeof(arguments[0])=="object"){
- oNode=oSource;
- }
- else{
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
- }
- var bStatus=oDialog.dlg_status; // BUGBUG: oDialog is null.
- if((oLastNode!=oNode)||(bStatus==false)){
- if((typeof(oTimein)=="number")&& eventObj){
-
- var elem;
- if(document.all) elem = eventObj.fromElement;
- else elem = eventObj.relatedTarget;
-
- if( elem != null || elem != "undefined")
- window.clearTimeout(oTimein);
- }
- oTimein=window.setTimeout("openDialog(oNode)",iTimein*1000);
- }
- }
-}
-
-
-
-function glossaryInit(){
- oDialog=fnCreateDialog(150,50);
-}
-
-function navigateTerm(eventObj){
- var oNode;
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
-
- var iTermID=oNode.termID;
- if(oNode!=aTerms[iTermID]){
- var iAbsTop=getAbsoluteTop(aTerms[iTermID]);
- if(iAbsTop<document.body.scrollTop){
- window.scrollTo(document.body.scrollLeft,getAbsoluteTop(aTerms[iTermID]));
- }
- openDialog(aTerms[iTermID]);
- }
-}
-function disableGlossary(eventObj){
- if(bGlossary==true){
- if(document.all) eventObj.srcElement.innerText="Enable Automatic Glossary";
- else eventObj.target.innerText="Enable Automatic Glossary";
- bGlossary=false;
- hideDef();
- }
- else{
- if(document.all) eventObj.srcElement.innerText="Disable Automatic Glossary";
- else eventObj.target.innerText="Disable Automatic Glossary";
- bGlossary=true;
- }
-}
-function openGlossary(){
-
-}
-function fnSetMenus(eventObj){
- var oNode;
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
-
- var oMenu=oNode.createMenu("SPAN","G_RID");
- var oSubItem1=oNode.createMenuItem("Glossary",fnStub,oMenu,true);
- document.body.createMenuItem("Open External Glossary",openGlossary,oSubItem1.subMenu);
- document.body.createMenuItem("Disable Automatic Glossary",disableGlossary,oSubItem1.subMenu);
- for(var i=0;i<aTerms.length;i++){
- var oItem=document.body.createMenuItem(aTerms[i].innerText,navigateTerm,oMenu);
- oItem.termID=i;
- }
-}
-// This is a bogus stub. It should be sniffed out rather than added in.
-function fnStub(){
-
-}
-function fnAttachMenus(aTips){
- // This walk is only necessary for the context menu.
- var aTips=document.getElementsByTagName("SPAN");
- for(var i=0;i<aTips.length;i++){
- var oNode=aTips[i];
- if(oNode.getAttribute("G_RID")){
- var sTerm=oNode.getAttribute("G_RID");
- if(typeof(g_glossary[sTerm])=="string"){
- // Removed client-side scripting to add events. This entire process should be singled out for IE 5 and later .. and, its only for the context menu.
- aTerms[aTerms.length]=oNode;
- }
- }
- }
- if(oBD.majorVer>=5){
- document.body.addBehavior(gsContextMenuPath);
- document.body.onbehaviorready="fnSetMenus()";
- document.body.oncontextopen="clearDef()";
- }
-
-}
-// Called by showDef. The showDef function sniffs for initialization.
-function openDialog(oNode,x,y){
- var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized
- if(bStatus==false){
- oDialog.dlg_status=true;
- oDialog.style.display="block";
- }
- else{
- if(typeof(oTimeout)=="number"){
- window.clearTimeout(oTimeout);
- }
- }
-
- var sTerm=oNode.getAttribute("G_RID");
- var oDef=oNode.children(0);
- var sDef=oDef.text;
- sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition.
- oDialog.innerHTML=sDef
-
-
- //oDialog.innerHTML=g_glossary[sTerm];
-
- var iScrollLeft=document.body.scrollLeft;
- var iScrollTop=document.body.scrollTop;
- var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft;
- var iOffsetWidth=oNode.offsetWidth;
- var oParent=oNode.parentNode;
- var iOffsetParentLeft=getAbsoluteLeft(oParent);
- var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop;
- var iOffsetDialogWidth=oDialog.offsetWidth;
-
-
- if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){
- iOffsetLeft=iOffsetParentLeft;
- if(iOffsetLeft - iOffsetDialogWidth>0){
- iOffsetTop+=oNode.offsetHeight;
- }
- }
- var iLeft=0;
- var iTop=0;
- if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){
- iLeft=iOffsetLeft + iOffsetWidth;
- }
- else{
- if(iOffsetLeft - iOffsetDialogWidth>0){
- iLeft=iOffsetLeft - iOffsetDialogWidth;
- }
- else{
- iLeft=iOffsetParentLeft;
- }
- }
- if(iOffsetTop - iScrollTop<oDialog.offsetHeight){
- iTop=iOffsetTop + oNode.offsetHeight;
- }
- else{
- iTop=iOffsetTop - oDialog.offsetHeight;
- }
- oDialog.style.top=iTop;
- oDialog.style.left=iLeft;
- oTimeout=window.setTimeout("hideDef()",iTimeout*1000);
-}
-function getAbsoluteTop(oNode){
- var oCurrentNode=oNode;
- var iTop=0;
- while(oCurrentNode.tagName!="BODY"){
- iTop+=oCurrentNode.offsetTop;
- oCurrentNode=oCurrentNode.offsetParent;
- }
- return iTop;
-}
-function getAbsoluteLeft(oNode){
- var oCurrentNode=oNode;
- var iLeft=0;
- while(oCurrentNode.tagName!="BODY"){
- iLeft+=oCurrentNode.offsetLeft;
- oCurrentNode=oCurrentNode.offsetParent;
- }
- return iLeft;
-}
-function fnCreateDialog(iWidth,iHeight){
- document.body.insertAdjacentHTML("BeforeEnd","<DIV></DIV>");
- oNewDialog=document.body.children(document.body.children.length-1);
- oNewDialog.className="clsTooltip";
- oNewDialog.style.width=iWidth;
- oNewDialog.dlg_status=false;
- return oNewDialog;
-}
-
-function sendfeedback(subject, id,alias){
- var rExp = /\"/gi;
- var url = location.href;
- // Need to replace the double quotes with single quotes for the mailto to work.
- var rExpSingleQuotes = /\'\'"/gi;
-
- var title;
- if(document.getElementsByTagName("TITLE")[0].innerText) title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''")
- else title = document.getElementsByTagName("TITLE")[0].textContent.replace(rExp, "''");
- location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20";
-}
+window.onload=LoadPage; +window.onunload=Window_Unload; +//window.onresize=ResizeWindow; +window.onbeforeprint = set_to_print; +window.onafterprint = reset_form; + +var vbDeclaration; +var vbUsage; +var csLang; +var cLang; +var jsharpLang; +var jsLang; +var xamlLang; + +var scrollPos = 0; + +var inheritedMembers; +var protectedMembers; +var netcfMembersOnly; +var netXnaMembersOnly; + +// Initialize array of section states + +var sectionStates = new Array(); +var sectionStatesInitialized = false; + +//Hide sample source in select element +function HideSelect() +{ + var selectTags = document.getElementsByTagName("SELECT"); + var spanEles = document.getElementsByTagName("span"); + var i = 10; + var m; + + if (selectTags.length != null || selectTags.length >0) + { + for (n=0; n<selectTags.length; n++) + { + var lan = selectTags(n).getAttribute("id").substr("10"); + //hide the first select that is on + switch (lan.toLowerCase()) + { + case "visualbasic": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasic" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + case "visualbasicdeclaration": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicDeclaration" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "visualbasicusage": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicUsage" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + case "csharp": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "CSharp" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "managedcplusplus": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "ManagedCPlusPlus" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "jsharp": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "JSharp" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "jscript": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "JScript" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "xaml": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "XAML" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + } + } + if (i != 10) + selectTags(i).style.visibility = "hidden"; + } + else{ alert("Not found!");} +} + +function UnHideSelect() +{ + var selectTags = document.getElementsByTagName("SELECT"); + var n; + + //un-hide all the select sections + if (selectTags.length != null || selectTags.length >0) + { + for (n=0; n<selectTags.length; n++) + selectTags(n).style.visibility = "visible"; + } +} + +function InitSectionStates() +{ + sectionStatesInitialized = true; + + if (globals == null) globals = GetGlobals(); + + // SectionStates has the format: + // + // firstSectionId:state;secondSectionId:state;thirdSectionId:state; ... ;lastSectionId:state + // + // where state is either "e" (expanded) or "c" (collapsed) + + // get the SectionStates from the previous topics + var states = Load("SectionStates"); + + var start = 0; + var end; + var section; + var state; + var allCollapsed = false; + // copy the previous section states to the sectionStates array for the current page + if (states != null && states != "") + { + allCollapsed = true; + while (start < states.length) + { + end = states.indexOf(":", start); + + section = states.substring(start, end); + + start = end + 1; + end = states.indexOf(";", start); + if (end == -1) end = states.length; + state = states.substring(start, end); + sectionStates[section] = state; + allCollapsed = allCollapsed && (state == "c"); + start = end + 1; + } + } + + // now set the state for any section ids in the current document that weren't in previous + var imgElements = document.getElementsByName("toggleSwitch"); + var i; + for (i = 0; i < imgElements.length; ++i) + sectionStates[imgElements[i].id] = GetInitialSectionState(imgElements[i].id, allCollapsed); +} + +function GetInitialSectionState(itemId, allCollapsed) +{ + // if the global state is "allCollapsed", set all section states to collapsed + if (allCollapsed) return "c"; + + // generic <section> node ids begin with "sectionToggle", so the same id can refer to different sections in different topics + // we don't want to persist their state; set it to expanded + if (itemId.indexOf("sectionToggle", 0) == 0) return "e"; + + // the default state for new section ids is expanded + if (sectionStates[itemId] == null) return "e"; + + // otherwise, persist the passed in state + return sectionStates[itemId]; +} + +var noReentry = false; + +function OnLoadImage(eventObj) +{ + if (noReentry) return; + + if (!sectionStatesInitialized) + InitSectionStates(); + + var elem; + if(document.all) elem = eventObj.srcElement; + else elem = eventObj.target; + + + if ((sectionStates[elem.id] == "e")) + ExpandSection(elem); + else if((sectionStates[elem.id] == "c")) + CollapseSection(elem); +} + +/* +********** +********** Begin +********** +*/ + +function LoadPage() +{ + // If not initialized, grab the DTE.Globals object + if (globals == null) globals = GetGlobals(); + + // show correct language + LoadLanguages(); + LoadMembersOptions(); + + Set_up_checkboxes(); + + DisplayLanguages(); + + DisplayFilteredMembers(); + + ChangeMembersOptionsFilterLabel(); + + if (!sectionStatesInitialized) + InitSectionStates(); + + SetCollapseAll(); + +// ResizeWindow(); + // split screen + var screen = new SplitScreen('header', 'mainSection'); + + // filtering dropdowns + if (document.getElementById('languageSpan') != null) { + var languageMenu = new Dropdown('languageFilterToolTip', 'languageSpan'); + } + if (document.getElementById('membersOptionsFilterToolTip') != null) { + var languageMenu = new Dropdown('membersOptionsFilterToolTip', 'membersOptionsSpan'); + } + + var mainSection = document.getElementById("mainSection"); + + // vs70.js did this to allow up/down arrow scrolling, I think + try { mainSection.setActive(); } catch(e) { } + + //set the scroll position + try{mainSection.scrollTop = scrollPos;} + catch(e){} +} + +function Window_Unload() +{ + SaveLanguages(); + SaveMembersOptions(); + SaveSections(); +} + +/* +function ResizeWindow() +{ + if (document.body.clientWidth==0) return; + var header = document.all.item("header"); + var mainSection = document.all.item("mainSection"); + if (mainSection == null) return; + + + document.body.scroll = "no" + mainSection.style.overflow= "auto"; + header.style.width= document.body.offsetWidth - 2; + //mainSection.style.paddingRight = "20px"; // Width issue code + mainSection.style.width= document.body.offsetWidth - 2; + mainSection.style.top=0; + if (document.body.offsetHeight > header.offsetHeight + 10) + mainSection.style.height= document.body.offsetHeight - (header.offsetHeight + 2); + else + mainSection.style.height=0; + + try + { + mainSection.setActive(); + } + catch(e) + { + } +} +*/ + +function set_to_print() +{ + //breaks out of divs to print + var i; + + if (window.text)document.all.text.style.height = "auto"; + + for (i=0; i < document.all.length; i++) + { + if (document.all[i].tagName == "body") + { + document.all[i].scroll = "yes"; + } + if (document.all[i].id == "header") + { + document.all[i].style.margin = "0px 0px 0px 0px"; + document.all[i].style.width = "100%"; + } + if (document.all[i].id == "mainSection") + { + document.all[i].style.overflow = "visible"; + document.all[i].style.top = "5px"; + document.all[i].style.width = "100%"; + document.all[i].style.padding = "0px 10px 0px 30px"; + } + } +} + +function reset_form() +{ + //returns to the div nonscrolling region after print + document.location.reload(); +} + +function Set_up_checkboxes() +{ + var checkbox; + + checkbox = document.getElementById("vbDeclarationCheckbox"); + if(checkbox != null) + { + if(vbDeclaration == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("vbUsageCheckbox"); + if(checkbox != null) + { + if(vbUsage == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("csCheckbox"); + if(checkbox != null) + { + if(csLang == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("cCheckbox"); + if(checkbox != null) + { + if(cLang == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("jsharpCheckbox"); + if(checkbox != null) + { + if(jsharpLang == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("jsCheckbox"); + if(checkbox != null) + { + if(jsLang == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("xamlCheckbox"); + if(checkbox != null) + { + if(xamlLang == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("inheritedCheckbox"); + if(checkbox != null) + { + if(inheritedMembers == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("protectedCheckbox"); + if(checkbox != null) + { + if(protectedMembers == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("netcfCheckbox"); + if(checkbox != null) + { + if(netcfMembersOnly == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } + + checkbox = document.getElementById("netXnaCheckbox"); + if(checkbox != null) + { + if(netXnaMembersOnly == "on") + checkbox.checked = true; + else + checkbox.checked = false; + } +} + +/* +********** +********** End +********** +*/ + + +/* +********** +********** Begin Language Filtering +********** +*/ + +function SetLanguage(key) +{ + var i = 0; + if(vbDeclaration == "on") + i++; + if(vbUsage == "on") + i++; + if(csLang == "on") + i++; + if(cLang == "on") + i++; + if(jsharpLang == "on") + i++; + if(jsLang == "on") + i++; + if(xamlLang == "on") + i++; + + if(key.id == "vbDeclarationCheckbox") + { + if(vbDeclaration == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + vbDeclaration = "off"; + } + else + vbDeclaration = "on"; + } + if(key.id == "vbUsageCheckbox") + { + if(vbUsage == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + vbUsage = "off"; + } + else + vbUsage = "on"; + } + if(key.id == "csCheckbox") + { + if(csLang == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + csLang = "off"; + } + else + csLang = "on"; + } + if(key.id == "cCheckbox") + { + if(cLang == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + cLang = "off"; + } + else + cLang = "on"; + } + if(key.id == "jsharpCheckbox") + { + if(jsharpLang == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + jsharpLang = "off"; + } + else + jsharpLang = "on"; + } + if(key.id == "jsCheckbox") + { + if(jsLang == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + jsLang = "off"; + } + else + jsLang = "on"; + } + if(key.id == "xamlCheckbox") + { + if(xamlLang == "on") + { + if(i == 1) + { + key.checked = true; + return; + } + + xamlLang = "off"; + } + else + xamlLang = "on"; + } + + DisplayLanguages(); +} + +function DisplayLanguages() +{ + var spanElements = document.getElementsByTagName("span"); + var x = 0; + if(vbDeclaration == "on") + x++; + if(vbUsage == "on") + x++; + if(csLang == "on") + x++; + if(cLang == "on") + x++; + if(jsharpLang == "on") + x++; + if(jsLang == "on") + x++; + if(xamlLang == "on") + x++; + + var i; + for(i = 0; i < spanElements.length; ++i) + { + if(spanElements[i].getAttribute("codeLanguage") != null) + { + if(spanElements[i].getAttribute("codeLanguage") == "VisualBasic") + { + if(vbDeclaration == "on" || vbUsage == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "VisualBasicDeclaration") + { + + if(vbDeclaration == "on") + spanElements[i].style.display = ""; + else{ + + spanElements[i].style.display = "none"; + } + } + if(spanElements[i].getAttribute("codeLanguage") == "VisualBasicUsage") + { + if(vbUsage == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "CSharp") + { + if(csLang == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "ManagedCPlusPlus") + { + if(cLang == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "JSharp") + { + if(jsharpLang == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "JScript") + { + if(jsLang == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + if(spanElements[i].getAttribute("codeLanguage") == "XAML") + { + if(xamlLang == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + + if(spanElements[i].getAttribute("codeLanguage") == "NotVisualBasicUsage") + { + if((x == 1) && (vbUsage == "on")) + { + spanElements[i].style.display = "none"; + } + else + { + spanElements[i].style.display = ""; + } + } + } + } + ChangeLanguageFilterLabel(); +} + +function ChangeLanguageFilterLabel() +{ + var i = 0; + if(vbDeclaration == "on") + i++; + if(vbUsage == "on") + i++; + if(csLang == "on") + i++; + if(cLang == "on") + i++; + if(jsharpLang == "on") + i++; + if(jsLang == "on") + i++; + if(xamlLang == "on") + i++; + + var labelElement; + + labelElement = document.getElementById("showAllLabel"); + + if(labelElement == null) + return; + + labelElement.style.display = "none"; + + labelElement = document.getElementById("multipleLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("vbLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("csLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("cLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("jsharpLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("jsLabel"); + labelElement.style.display = "none"; + + labelElement = document.getElementById("xamlLabel"); + labelElement.style.display = "none"; + + if(i == 7) + { + labelElement = document.getElementById("showAllLabel"); + labelElement.style.display = "inline"; + } + else if ((i > 1) && (i < 7)) + { + if((i == 2) && ((vbDeclaration == "on") && (vbUsage == "on"))) + { + labelElement = document.getElementById("vbLabel"); + labelElement.style.display = "inline"; + } + else + { + labelElement = document.getElementById("multipleLabel"); + labelElement.style.display = "inline"; + } + } + else if (i == 1) + { + if(vbDeclaration == "on" || vbUsage == "on") + { + labelElement = document.getElementById("vbLabel"); + labelElement.style.display = "inline"; + } + if(csLang == "on") + { + labelElement = document.getElementById("csLabel"); + labelElement.style.display = "inline"; + } + if(cLang == "on") + { + labelElement = document.getElementById("cLabel"); + labelElement.style.display = "inline"; + } + if(jsharpLang == "on") + { + labelElement = document.getElementById("jsharpLabel"); + labelElement.style.display = "inline"; + } + if(jsLang == "on") + { + labelElement = document.getElementById("jsLabel"); + labelElement.style.display = "inline"; + } + if(xamlLang == "on") + { + labelElement = document.getElementById("xamlLabel"); + labelElement.style.display = "inline"; + } + } +} + +function LoadLanguages() +{ + var value; + value = Load("vbDeclaration"); + if(value == null) + vbDeclaration = "on"; + else + vbDeclaration = value; + + value = Load("vbUsage"); + if(value == null) + vbUsage = "on"; + else + vbUsage = value; + + value = Load("csLang"); + if(value == null) + csLang = "on"; + else + csLang = value; + + value = Load("cLang"); + if(value == null) + cLang = "on"; + else + cLang = value; + + value = Load("jsharpLang"); + if(value == null) + jsharpLang = "on"; + else + jsharpLang = value; + + value = Load("jsLang"); + if(value == null) + jsLang = "on"; + else + jsLang = value; + + value = Load("xamlLang"); + if(value == null) + xamlLang = "on"; + else + xamlLang = value; +} + +function SaveLanguages() +{ + Save("vbDeclaration", vbDeclaration); + Save("vbUsage", vbUsage); + Save("csLang", csLang); + Save("cLang", cLang); + Save("jsharpLang", jsharpLang); + Save("jsLang", jsLang); + Save("xamlLang", xamlLang); +} + +/* +********** +********** End Language Filtering +********** +*/ + + +/* +********** +********** Begin Members Options Filtering +********** +*/ + +function SetMembersOptions(key) +{ + if(key.id == "inheritedCheckbox") + { + if(key.checked == true) + inheritedMembers = "on"; + else + inheritedMembers = "off"; + } + if(key.id == "protectedCheckbox") + { + if(key.checked == true) + protectedMembers = "on"; + else + protectedMembers = "off"; + } + if(key.id == "netcfCheckbox") + { + if(key.checked == true) + netcfMembersOnly = "on"; + else + netcfMembersOnly = "off"; + } + if(key.id == "netXnaCheckbox") + { + if(key.checked == true) + netXnaMembersOnly = "on"; + else + netXnaMembersOnly = "off"; + } + DisplayFilteredMembers(); + + ChangeMembersOptionsFilterLabel(); +} + +function DisplayFilteredMembers() +{ + var iAllMembers = document.getElementsByTagName("tr"); + var i; + + for(i = 0; i < iAllMembers.length; ++i) + { + if (((iAllMembers[i].getAttribute("protected") == "true") && (protectedMembers == "off")) || + ((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) || + ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) || + ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on"))) + iAllMembers[i].style.display = "none"; + else + iAllMembers[i].style.display = ""; + } +} + +function ChangeMembersOptionsFilterLabel() +{ + + var showAllMembersLabelElement = document.getElementById("showAllMembersLabel"); + var filteredMembersLabelElement = document.getElementById("filteredMembersLabel"); + + if(showAllMembersLabelElement == null || filteredMembersLabelElement == null) + return; + + if ((inheritedMembers=="off") || (protectedMembers=="off") || (netXnaMembersOnly == "on") || (netcfMembersOnly=="on")) + { + filteredMembersLabelElement.style.display = "inline"; + showAllMembersLabelElement.style.display = "none"; + } + else + { + filteredMembersLabelElement.style.display = "none"; + showAllMembersLabelElement.style.display = "inline"; + } +} + +function LoadMembersOptions() +{ + var value; + value = Load("inheritedMembers"); + if(value == null) + inheritedMembers = "on"; + else + inheritedMembers = value; + + value = Load("protectedMembers"); + if(value == null) + protectedMembers = "on"; + else + protectedMembers = value; + + value = Load("netcfMembersOnly"); + if(value == null) + netcfMembersOnly = "off"; + else + netcfMembersOnly = value; + + value = Load("netXnaMembersOnly"); + if(value == null) + netXnaMembersOnly = "off"; + else + netXnaMembersOnly = value; +} + +function SaveMembersOptions() +{ + Save("inheritedMembers", inheritedMembers); + Save("protectedMembers", protectedMembers); + Save("netcfMembersOnly", netcfMembersOnly); + Save("netXnaMembersOnly", netXnaMembersOnly); +} + +/* +********** +********** End Members Options Filtering +********** +*/ + + +/* +********** +********** Begin Expand/Collapse +********** +*/ + +// expand or collapse a section +function ExpandCollapse(imageItem) +{ + if (sectionStates[imageItem.id] == "e") + CollapseSection(imageItem); + else + ExpandSection(imageItem); + + SetCollapseAll(); +} + +// expand or collapse all sections +function ExpandCollapseAll(imageItem) +{ + var collapseAllImage = document.getElementById("collapseAllImage"); + var expandAllImage = document.getElementById("expandAllImage"); + if (imageItem == null || collapseAllImage == null || expandAllImage == null) return; + noReentry = true; // Prevent entry to OnLoadImage + + var imgElements = document.getElementsByName("toggleSwitch"); + var i; + var collapseAll = (imageItem.src == collapseAllImage.src); + if (collapseAll) + { + imageItem.src = expandAllImage.src; + imageItem.alt = expandAllImage.alt; + + for (i = 0; i < imgElements.length; ++i) + { + CollapseSection(imgElements[i]); + } + } + else + { + imageItem.src = collapseAllImage.src; + imageItem.alt = collapseAllImage.alt; + + for (i = 0; i < imgElements.length; ++i) + { + ExpandSection(imgElements[i]); + } + } + SetAllSectionStates(collapseAll); + SetToggleAllLabel(collapseAll); + + noReentry = false; +} + +function ExpandCollapse_CheckKey(imageItem, eventObj) +{ + if(eventObj.keyCode == 13) + ExpandCollapse(imageItem); +} + +function ExpandCollapseAll_CheckKey(imageItem, eventObj) +{ + if(eventObj.keyCode == 13) + ExpandCollapseAll(imageItem); +} + +function SetAllSectionStates(collapsed) +{ + for (var sectionId in sectionStates) + sectionStates[sectionId] = (collapsed) ? "c" : "e"; +} + +function ExpandSection(imageItem) +{ + noReentry = true; // Prevent re-entry to OnLoadImage + try + { + var collapseImage = document.getElementById("collapseImage"); + imageItem.src = collapseImage.src; + imageItem.alt = collapseImage.alt; + + imageItem.parentNode.parentNode.nextSibling.style.display = ""; + sectionStates[imageItem.id] = "e"; + } + catch (e) + { + } + noReentry = false; +} + +function CollapseSection(imageItem) +{ + noReentry = true; // Prevent re-entry to OnLoadImage + var expandImage = document.getElementById("expandImage"); + imageItem.src = expandImage.src; + imageItem.alt = expandImage.alt; + imageItem.parentNode.parentNode.nextSibling.style.display = "none"; + sectionStates[imageItem.id] = "c"; + noReentry = false; +} + +function AllCollapsed() +{ + var imgElements = document.getElementsByName("toggleSwitch"); + var allCollapsed = true; + var i; + + for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c"); + + return allCollapsed; +} + +function SetCollapseAll() +{ + var imageElement = document.getElementById("toggleAllImage"); + if (imageElement == null) return; + + var allCollapsed = AllCollapsed(); + if (allCollapsed) + { + var expandAllImage = document.getElementById("expandAllImage"); + if (expandAllImage == null) return; + imageElement.src = expandAllImage.src; + imageElement.alt = expandAllImage.alt; + } + else + { + var collapseAllImage = document.getElementById("collapseAllImage"); + if (collapseAllImage == null) return; + imageElement.src = collapseAllImage.src; + imageElement.alt = collapseAllImage.alt; + } + + SetToggleAllLabel(allCollapsed); +} + +function SetToggleAllLabel(allCollapsed) +{ + var collapseLabelElement = document.getElementById("collapseAllLabel"); + var expandLabelElement = document.getElementById("expandAllLabel"); + + if (collapseLabelElement == null || expandLabelElement == null) return; + + if (allCollapsed) + { + collapseLabelElement.style.display = "none"; + expandLabelElement.style.display = "inline"; + } + else + { + collapseLabelElement.style.display = "inline"; + expandLabelElement.style.display = "none"; + } +} + +function SaveSections() +{ + try + { + var states = ""; + + for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";"; + + Save("SectionStates", states.substring(0, states.length - 1)); + } + catch (e) + { + } + +} + +function OpenSection(imageItem) +{ + if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem); +} + +/* +********** +********** End Expand/Collapse +********** +*/ + + + +/* +********** +********** Begin Copy Code +********** +*/ + +function CopyCode(key) +{ + var trElements = document.getElementsByTagName("tr"); + var i; + for(i = 0; i < trElements.length; ++i) + { + if(key.parentNode.parentNode.parentNode == trElements[i].parentNode) + { + if (window.clipboardData) + { + // the IE-manner + window.clipboardData.setData("Text", trElements[i].innerText); + } + else if (window.netscape) + { + // Gives unrestricted access to browser APIs using XPConnect + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + } + catch(e) + { + alert("Universal Connect was refused, cannot copy to " + + "clipboard. Go to about:config and set " + + "signed.applets.codebase_principal_support to true to " + + "enable clipboard support."); + return; + } + + // Creates an instance of nsIClipboard + var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); + if (!clip) return; + + // Creates an instance of nsITransferable + var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); + if (!trans) return; + + // register the data flavor + trans.addDataFlavor('text/unicode'); + + // Create object to hold the data + var str = new Object(); + + // Creates an instance of nsISupportsString + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); + + //Assigns the data to be copied + var copytext = trElements[i].textContent; + str.data = copytext; + + // Add data objects to transferable + trans.setTransferData("text/unicode",str,copytext.length*2); + var clipid = Components.interfaces.nsIClipboard; + if (!clip) return false; + + // Transfer the data to clipboard + clip.setData(trans,null,clipid.kGlobalClipboard); + } + } + } +} + +function ChangeCopyCodeIcon(key) +{ + var i; + var imageElements = document.getElementsByName("ccImage") + for(i=0; i<imageElements.length; ++i) + { + if(imageElements[i].parentNode == key) + { + if(imageElements[i].src == copyImage.src) + { + imageElements[i].src = copyHoverImage.src; + imageElements[i].alt = copyHoverImage.alt; + key.className = 'copyCodeOnHover'; + } + else + { + imageElements[i].src = copyImage.src; + imageElements[i].alt = copyImage.alt; + key.className = 'copyCode'; + } + } + } +} + +function CopyCode_CheckKey(key, eventObj) +{ + if(eventObj.keyCode == 13) + CopyCode(key); +} + +/* +********** +********** End Copy Code +********** +*/ + + +/* +********** +********** Begin Maintain Scroll Position +********** +*/ + +function loadAll(){ + try + { + scrollPos = allHistory.getAttribute("Scroll"); + } + catch(e){} +} + +function saveAll(){ + try + { + allHistory.setAttribute("Scroll", mainSection.scrollTop); + } + catch(e){} +} + +/* +********** +********** End Maintain Scroll Position +********** +*/ + + +/* +********** +********** Begin Send Mail +********** +*/ + +function formatMailToLink(anchor) +{ + var release = "Release: " + anchor.doc_Release; + var topicId = "Topic ID: " + anchor.doc_TopicID; + var topicTitle = "Topic Title: " + anchor.doc_TopicTitle; + var url = "URL: " + document.URL; + var browser = "Browser: " + window.navigator.userAgent; + + var crlf = "%0d%0a"; + var body = release + crlf + topicId + crlf + topicTitle + crlf + url + crlf + browser + crlf + crlf + "Comments:" + crlf + crlf; + + anchor.href = anchor.href + "&body=" + body; +} + +/* +********** +********** End Send Mail +********** +*/ + + +/* +********** +********** Begin Persistence +********** +*/ + +var globals; + +function GetGlobals() +{ + var tmp; + + // Try to get VS implementation + try { tmp = window.external.Globals; } + catch (e) { tmp = null; } + + // Try to get DExplore implementation + try { if (tmp == null) tmp = window.external.GetObject("DTE", "").Globals; } + catch (e) { tmp = null; } + + return tmp; +} + +function Load(key) +{ + try + { + return globals.VariableExists(key) ? globals.VariableValue(key) : null; + } + catch (e) + { + return null; + } +} + +function Save(key, value) +{ + try + { + globals.VariableValue(key) = value; + globals.VariablePersists(key) = true; + } + catch (e) + { + } +} + +/* +********** +********** End Persistence +********** +*/ + +/* This is the part for Glossary popups */ +// The method is called when the user positions the mouse cursor over a glossary term in a document. +// Current implementation assumes the existence of an associative array (g_glossary). +// The keys of the array correspond to the argument passed to this function. + +var bGlossary=true; +var oDialog; +var oTimeout=""; +var oTimein=""; +var iTimein=.5; +var iTimeout=30; +var oLastNode; +var oNode; +var bInit=false; +var aTerms=new Array(); + +// Called from mouseover and when the contextmenu behavior fires oncontextopen. +function clearDef(eventObj){ + if(eventObj){ + var elem; + if(document.all) elem = eventObj.toElement; + else elem = eventObj.relatedTarget; + if(elem!=null || elem!="undefined"){ + if(typeof(oTimein)=="number"){ + window.clearTimeout(oTimein); + } + if(oDialog.dlg_status==true){ + hideDef(); + } + } + } +} +function hideDef(eventObj){ + window.clearTimeout(oTimeout); + oTimeout=""; + oDialog.style.display="none"; + oDialog.dlg_status=false; +} +function showDef(oSource){ + if(bInit==false){ + glossaryInit(); + bInit=true; + } + if(bGlossary==true){ + if(typeof(arguments[0])=="object"){ + oNode=oSource; + } + else{ + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + } + var bStatus=oDialog.dlg_status; // BUGBUG: oDialog is null. + if((oLastNode!=oNode)||(bStatus==false)){ + if((typeof(oTimein)=="number")&& eventObj){ + + var elem; + if(document.all) elem = eventObj.fromElement; + else elem = eventObj.relatedTarget; + + if( elem != null || elem != "undefined") + window.clearTimeout(oTimein); + } + oTimein=window.setTimeout("openDialog(oNode)",iTimein*1000); + } + } +} + + + +function glossaryInit(){ + oDialog=fnCreateDialog(150,50); +} + +function navigateTerm(eventObj){ + var oNode; + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + + var iTermID=oNode.termID; + if(oNode!=aTerms[iTermID]){ + var iAbsTop=getAbsoluteTop(aTerms[iTermID]); + if(iAbsTop<document.body.scrollTop){ + window.scrollTo(document.body.scrollLeft,getAbsoluteTop(aTerms[iTermID])); + } + openDialog(aTerms[iTermID]); + } +} +function disableGlossary(eventObj){ + if(bGlossary==true){ + if(document.all) eventObj.srcElement.innerText="Enable Automatic Glossary"; + else eventObj.target.innerText="Enable Automatic Glossary"; + bGlossary=false; + hideDef(); + } + else{ + if(document.all) eventObj.srcElement.innerText="Disable Automatic Glossary"; + else eventObj.target.innerText="Disable Automatic Glossary"; + bGlossary=true; + } +} +function openGlossary(){ + +} +function fnSetMenus(eventObj){ + var oNode; + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + + var oMenu=oNode.createMenu("SPAN","G_RID"); + var oSubItem1=oNode.createMenuItem("Glossary",fnStub,oMenu,true); + document.body.createMenuItem("Open External Glossary",openGlossary,oSubItem1.subMenu); + document.body.createMenuItem("Disable Automatic Glossary",disableGlossary,oSubItem1.subMenu); + for(var i=0;i<aTerms.length;i++){ + var oItem=document.body.createMenuItem(aTerms[i].innerText,navigateTerm,oMenu); + oItem.termID=i; + } +} +// This is a bogus stub. It should be sniffed out rather than added in. +function fnStub(){ + +} +function fnAttachMenus(aTips){ + // This walk is only necessary for the context menu. + var aTips=document.getElementsByTagName("SPAN"); + for(var i=0;i<aTips.length;i++){ + var oNode=aTips[i]; + if(oNode.getAttribute("G_RID")){ + var sTerm=oNode.getAttribute("G_RID"); + if(typeof(g_glossary[sTerm])=="string"){ + // Removed client-side scripting to add events. This entire process should be singled out for IE 5 and later .. and, its only for the context menu. + aTerms[aTerms.length]=oNode; + } + } + } + if(oBD.majorVer>=5){ + document.body.addBehavior(gsContextMenuPath); + document.body.onbehaviorready="fnSetMenus()"; + document.body.oncontextopen="clearDef()"; + } + +} +// Called by showDef. The showDef function sniffs for initialization. +function openDialog(oNode,x,y){ + var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized + if(bStatus==false){ + oDialog.dlg_status=true; + oDialog.style.display="block"; + } + else{ + if(typeof(oTimeout)=="number"){ + window.clearTimeout(oTimeout); + } + } + + var sTerm=oNode.getAttribute("G_RID"); + var oDef=oNode.children(0); + var sDef=oDef.text; + sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition. + oDialog.innerHTML=sDef + + + //oDialog.innerHTML=g_glossary[sTerm]; + + var iScrollLeft=document.body.scrollLeft; + var iScrollTop=document.body.scrollTop; + var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft; + var iOffsetWidth=oNode.offsetWidth; + var oParent=oNode.parentNode; + var iOffsetParentLeft=getAbsoluteLeft(oParent); + var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop; + var iOffsetDialogWidth=oDialog.offsetWidth; + + + if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){ + iOffsetLeft=iOffsetParentLeft; + if(iOffsetLeft - iOffsetDialogWidth>0){ + iOffsetTop+=oNode.offsetHeight; + } + } + var iLeft=0; + var iTop=0; + if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){ + iLeft=iOffsetLeft + iOffsetWidth; + } + else{ + if(iOffsetLeft - iOffsetDialogWidth>0){ + iLeft=iOffsetLeft - iOffsetDialogWidth; + } + else{ + iLeft=iOffsetParentLeft; + } + } + if(iOffsetTop - iScrollTop<oDialog.offsetHeight){ + iTop=iOffsetTop + oNode.offsetHeight; + } + else{ + iTop=iOffsetTop - oDialog.offsetHeight; + } + oDialog.style.top=iTop; + oDialog.style.left=iLeft; + oTimeout=window.setTimeout("hideDef()",iTimeout*1000); +} +function getAbsoluteTop(oNode){ + var oCurrentNode=oNode; + var iTop=0; + while(oCurrentNode.tagName!="BODY"){ + iTop+=oCurrentNode.offsetTop; + oCurrentNode=oCurrentNode.offsetParent; + } + return iTop; +} +function getAbsoluteLeft(oNode){ + var oCurrentNode=oNode; + var iLeft=0; + while(oCurrentNode.tagName!="BODY"){ + iLeft+=oCurrentNode.offsetLeft; + oCurrentNode=oCurrentNode.offsetParent; + } + return iLeft; +} +function fnCreateDialog(iWidth,iHeight){ + document.body.insertAdjacentHTML("BeforeEnd","<DIV></DIV>"); + oNewDialog=document.body.children(document.body.children.length-1); + oNewDialog.className="clsTooltip"; + oNewDialog.style.width=iWidth; + oNewDialog.dlg_status=false; + return oNewDialog; +} + +function sendfeedback(subject, id,alias){ + var rExp = /\"/gi; + var url = location.href; + // Need to replace the double quotes with single quotes for the mailto to work. + var rExpSingleQuotes = /\'\'"/gi; + + var title; + if(document.getElementsByTagName("TITLE")[0].innerText) title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''") + else title = document.getElementsByTagName("TITLE")[0].textContent.replace(rExp, "''"); + location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20"; +} diff --git a/tools/Sandcastle/Presentation/hana/Styles/Presentation.css b/tools/Sandcastle/Presentation/hana/Styles/Presentation.css index 82bbd05..0a01db1 100644 --- a/tools/Sandcastle/Presentation/hana/Styles/Presentation.css +++ b/tools/Sandcastle/Presentation/hana/Styles/Presentation.css @@ -1,934 +1,934 @@ -/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */
-
-@import url("tabs.css");
-@import url("syntax.css");
-
-/***********************************************************
- * SCRIPT-SUPPORTING STYLES
- ***********************************************************/
-
-/* Defines the userData cache persistence mechanism. */
-.userDataStyle
-{
- behavior: url(#default#userData);
-}
-
-/* Used to save the scroll bar position when navigating away from a page. */
-div.saveHistory
-{
- behavior: url(#default#saveHistory);
-}
-
-/* Formats the expand/collapse images for all collapsible regions. */
-img.toggle
-{
- border: 0px;
- margin-right: 5px;
-}
-
-/* Formats the Language filter drop-down image. */
-img#languageFilterImage
-{
- border: 0px;
- margin-left: 0px;
- vertical-align: middle;
-}
-
-/* Formats the Members Options filter drop-down image. */
-img#membersOptionsFilterImage
-{
- border: 0px;
- margin-left: 0px;
- vertical-align: middle;
-}
-
-/* Formats the Collapse All/Expand All images. */
-img#toggleAllImage
-{
- margin-left: 0px;
- vertical-align: middle;
-}
-
-/* Supports XLinks */
-MSHelp\:link
-{
- text-decoration: underline;
- /*color: #0000ff; */
- color: #0481DA;
- hoverColor: #3366ff;
- filterString: ;
-}
-
-
-/***********************************************************
- * CONTENT PRESENTATION STYLES
- ***********************************************************/
-
-body
-{
- background: #FFFFFF;
- color: #000000;
- font-family: Verdana;
- font-size: medium;
- font-style: normal;
- font-weight: normal;
- margin: 0px;
- width: 100%;
-}
-
-dl
-{
- margin-top: 15px;
- margin-bottom:5px;
- padding-left: 1px;
-}
-
-/*dt
-{
- font-style: italic;
-}*/
-
-dd
-{
- margin-left: 0px;
-}
-
-ul
-{
- margin-top:0px;
- margin-bottom:0px;
- margin-left: 17px;
- list-style-type: disc;
-}
-
-ul ul
-{
- margin-bottom: 4px;
- margin-left: 17px;
- margin-top: 3px;
- list-style-type: disc;
-}
-
-ol
-{
- margin-top:0px;
- margin-bottom:0px;
- margin-left: 28px;
- list-style-type: decimal;
-}
-
-ol ol
-{
- margin-bottom: 4px;
- margin-left: 28px;
- margin-top: 3px;
- list-style-type: lower-alpha;
-}
-
-li
-{
- margin-top: 5;
- margin-bottom: 5;
-}
-
-p
-{
- margin-top: 10px;
- margin-bottom: 5px;
-}
-a[href]
-{
- color: #0481DA;
-}
-a
-{
- color:#0481DA;
-}
-
-a:visited
-{
- color: #0481DA;
-}
-
-a:hover
-{
- /*color: #3366FF;*/
- color: #E85F17;
-}
-
-code
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-
-span.parameter {
- font-style: italic;
- font-weight:bold;
-}
-
-span.italic {
- font-style: italic;
-}
-
-span.referenceNoLink {
- font-weight: bold;
-}
-span.nolink {
- font-weight: bold;
-}
-
-span.selflink {
- font-weight: bold;
-}
-
-span.nonLinkTerm {
- font-weight: bold;
-}
-span.linkTerm {
- font-weight:normal;
-}
-
-/***********************************************************
- * STRUCTURE PRESENTATION STYLES
- ***********************************************************/
-
-/* Applies to everything below the non-scrolling header region. */
-div#mainSection
-{
- font-size: 62.5%;
- width: 100%;
- overflow:hidden;
-}
-html>body #mainSection
-{
- font-size:73%;
- width: 100%;
-}
-
-/* Applies to everything below the non-scrolling header region, minus the footer. */
-div#mainBody
-{
- font-size: 100%;
- margin-left: 15px;
- margin-top: 10px;
- padding-bottom: 20px;
- overflow:hidden;
-}
-
-html>body #mainBody
-{
- font-size: 93%;
- margin-left: 15px;
- margin-top: 10px;
- padding-bottom: 20px;
-}
-
-/* Adds right padding for all blocks in mainBody */
-div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
-{
- padding-right: 5px;
-}
-
-/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/
-/* Applies to the entire non-scrolling header region. */
-div#header
-{
- background-color: white;
- padding-top: 0px;
- padding-bottom: 0px;
- padding-left: 0px;
- padding-right: 0px;
- width: 100%;
-}
-
-/* Applies to both tables in the non-scrolling header region. */
-div#header table
-{
- width: 100%;
-}
-
-/* Applies to cells in both tables in the non-scrolling header region. */
-div#header table td
-{
- /*color: #0000FF;*/
- color:#0481DA;
- font-size: 70%;
- margin-top: 0px;
- margin-bottom: 0;
- padding-right: 20;
-}
-
-/* Applies to the last row in the upper table of the non-scrolling header region. Text
- in this row includes See Also, Constructors, Methods, and Properties. */
-div#header table tr#headerTableRow3 td
-{
- padding-bottom: 2px;
- padding-top: 5px;
- padding-left: 15px;
-}
-
-/* Applies to the lower table in the non-scrolling header region. Text in this table
- includes Collapse All/Expand All, Language Filter, and Members Options. */
-div#header table#bottomTable
-{
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1px;
- text-align: left;
- padding-left: 15px;
-}
-
-/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
- Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
-{
- white-space: nowrap;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-/*------------------------------ Begin General Table Styles -------------------------------*/
-
-div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
-{
- width:98.9%;
-}
-
-div#mainBody div.section div.alert, div#mainBody div.section div.code,
-div#mainBody div.section div.tableSection
-{
- width:100%;
-}
-
-div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code,
-div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert,
-div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection
-{
- width:100%;
-}
-
-div.alert p, div.code p
-{
- margin-top:5px;
- margin-bottom:8px;
-}
-dd p
-{
- margin-top:2px;
- margin-bottom:8px;
-}
-div.tableSection p
-{
- margin-top:1px;
- margin-bottom:4px;
-}
-li p
-{
- margin-top:2px;
- margin-bottom:2px;
-}
-div.seeAlsoNoToggleSection dl
-{
- margin-top:8px;
- margin-bottom:1px;
- padding-left:1px;
-}
-div.seeAlsoNoToggleSection dd p
-{
- margin-top:2px;
- margin-bottom:8px;
-}
-div.section dl
-{
- margin-top:8px;
- margin-bottom:1px;
- padding-left:1px;
-}
-div.section dd p
-{
- margin-top:2px;
- margin-bottom:8px;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-/* Applies to the running header text in the first row of the upper table in the
- non-scrolling header region. */
-span#runningHeaderText
-{
- color: #495F7F;
- font-size: 90%;
- padding-left: 13px;
-}
-
-/* Applies to the topic title in the second row of the upper table in the
- non-scrolling header region. */
-span#nsrTitle
-{
- color: #495F7F;
- font-size: 120%;
- font-weight: 600;
- padding-left: 13px;
-}
-/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/
-
-
-/* Formats the footer. Currently, the transforms pass in two parameters to the
- footer SSC, but the default footer SSC doesn't use either parameter.
- TODO: Investigate whether the default footer SSC has any impact on doc spec. */
-div#footer
-{
- font-size: 80%;
- margin: 0px;
- padding-top: 8px;
- padding-bottom: 6px;
- padding-left: 5px;
- padding-right: 2px;
- width: 100%;
-}
-
-html>body div#footer
-{
- font-size: 80%;
- margin: 0px;
- padding-top: 2px;
- padding-bottom: 6px;
- padding-left: 5px;
- padding-right: 2px;
- width: 98%;
-}
-
-/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule.
- TODO: Determine whether this style is required by the doc spec. */
-/*
-hr#footerHR
-{
- border-bottom-color: #EEEEFF;
- border-bottom-style: solid;
- border-bottom-width: 1px;
- border-top-color: C8CDDE;
- border-top-style: solid;
- border-top-width: 1px;
- height: 3px;
- color: #D4DFFF;
-}
-*/
-
-/********************************************************************************************************************
- Collapsible Section Structure
-
- <h1 class="heading"> // Format of the collapsible section text
- <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section
- <img id="xxxToggle"> // Expand/collapse image
- </img>
- </span>
- </h1>
-
- <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default
- </div>
-
-
- The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for
- displaying/hiding the body of the collapsible section.
-********************************************************************************************************************/
-
-/* Applies to the body of a collapsible section */
-div.seeAlsoNoToggleSection
-{
- margin-left:0;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-left: 0px;
- padding-right: 15px;
- width: 100%;
-}
-
-div.section
-{
- margin-left:0px;
- padding-left: 16px;
- padding-right: 15px;
- width: 100%;
-}
-html>body div.section
-{
- margin-left:0px;
- padding-top: 2px;
- padding-bottom: 2px;
- padding-left: 16px;
- padding-right: 15px;
- width: 97%;
-}
-div.seeSection
-{
- margin-left:0px;
- padding-top: 0px;
- padding-bottom: 2px;
- padding-left: 16px;
- padding-right: 15px;
- width: 100%;
-}
-
-/*------------------------------ Begin Heading Styles -------------------------------*/
-/* As far as I can tell, only <h1> tags use this class.
- TODO: Decide whether to roll these attributes into the h1.heading style */
-.heading
-{
- font-weight: bold;
- margin-top: 18px;
- margin-bottom: 8px;
-}
-
-/* All <h1> headings. */
-h1.heading
-{
- color: #0481DA;
- font-size: 130%;
-}
-
-/* Applies to table titles and subsection titles. */
-.subHeading
-{
- font-weight: bold;
- margin-bottom: 4px;
-}
-.procedureSubHeading
-{
- font-weight: bold;
- margin-bottom: 4px;
-}
-
-/* Formats the titles of author-generated tables. */
-h3.subHeading
-{
- color: #000000;
- font-size: 120%;
- font-weight:800;
-}
-
-h3.procedureSubHeading
-{
- color: #0481DA;
- font-size: 120%;
-}
-
-/* Formats the titles of all subsections. */
-h4.subHeading
-{
- color: #000000;
- font-size: 110%;
- font-weight:800;
-}
-span.labelheading, div.labelheading
-{
- font-size:100%;
- color: #0481DA;
-}
-
-/*------------------------------ End Heading Styles -------------------------------*/
-
-
-/*------------------------------ Begin Image Styles -------------------------------*/
-img.copyCodeImage
-{
- border: 0px;
- margin: 1px;
- margin-right: 3px;
-}
-
-img.downloadCodeImage
-{
- border: 0px;
- margin-right: 3px;
-}
-
-img.viewCodeImage
-{
- border: 0px;
- margin-right: 3px;
-}
-
-img.note
-{
- border: 0px;
- margin-right: 3px;
-}
-/*------------------------------ End Image Styles -------------------------------*/
-
-/*------------------------------ Begin Note Styles -------------------------------*/
-div.alert table
-{
- border: 0px;
- font-size: 100%;
- width: 100%;
-}
-
-div.alert table th
-{
- background: #EFEFF7;
- border-bottom-width: 0px;
- color: #000066;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-div.alert table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1px;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-
-/*------------------------------ End Note Styles -------------------------------*/
-
-
-/* Applies to the copy code text and image. */
-span.copyCode
-{
- color: #0481DA;
- font-size:xx-small;
- font-weight: normal;
- cursor: pointer;
- float: left;
- display: inline;
- text-align: left;
- padding-bottom:10px;
-}
-span.copyCodeOnHover
-{
- color: #E85F17;
- font-size:xx-small;
- font-weight: normal;
- cursor: pointer;
- float: left;
- display: inline;
- text-align: left;
- padding-bottom:10px;
- text-decoration: underline;
-}
-
-.downloadCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-.viewCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-/* Formats parameter tooltips. */
-.tip
-{
- color: #0000FF;
- font-style: italic;
- cursor: pointer;
- text-decoration:underline;
-}
-
-/* Applies to the language labels in the Language Filter drop-down list. */
-.languageFilter
-{
- color: #0000FF;
- cursor: pointer;
- text-decoration:underline;
- padding-bottom:4px;
-}
-
-/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */
-.math
-{
- font-family: Times New Roman;
- font-size: 125%
-}
-
-/* The sourceCodeList class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-.sourceCodeList
-{
- font-family: Verdana;
- font-size: 90%;
-}
-*/
-
-/* The viewCode class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-pre.viewCode
-{
- width: 100%;
- overflow: auto;
-}
-*/
-
-/* Dropdown areas */
-
-#languageSpan
-{
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #C8CDDE;
- background:white;
- padding: 4px;
- font-size:82.5%;
- }
-
-#membersOptionsSpan {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #C8CDDE;
- background: #d4dfff;
- padding: 4px;
- font-size: 62.5%;
-}
-
-/* Line seperating footer from main body */
-
-div.footerLine {
- margin: 0;
- width: 100%;
- padding-top: 8px;
- padding-bottom: 6px;
- padding-left: 5px;
- padding-right: 2px;
-
-}
-
-div.hr1
-{
- margin: 0px;
- width: 100%;
- height: 1px;
- padding: 0px;
- background: #C8CDDE;
- font-size: 1px;
-}
-
-div.hr2
-{
- margin: 0px;
- width: 100%;
- height: 1px;
- padding: 0px;
- background: #D4DFFF;
- font-size: 1px;
-}
-
-div.hr3
-{
- margin: 0px;
- width: 100%;
- height: 1px;
- padding: 0px;
- background: #EEEEFF;
- font-size: 1px;
-}
-
-span.cs
-{
- display: none;
-}
-
-span.vb
-{
- display: inline;
-}
-
-span.cpp
-{
- display: none;
-}
-
-span.nu
-{
- display: none;
-}
-
-span.code
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-span.ui
-{
- font-weight: bold;
-}
-span.math
-{
- font-style: italic;
-}
-span.input
-{
- font-weight: bold;
-}
-span.term
-{
- font-style: italic;
-}
-span.label
-{
- font-weight: bold;
-}
-span.foreignPhrase
-{
- font-style: italic;
-}
-span.placeholder
-{
- font-style: italic;
-}
-span.keyword
-{
- font-weight: bold;
-}
-span.typeparameter
-{
- font-style:italic;
-}
-
-div.caption
-{
- font-weight: bold;
- font-size:100%;
- color:#003399;
-}
-
-div.code
-{
- clear: both;
- width: 100%;
- background: #E3E6EB;
- padding: 0.4em;
- font-family: "Andale Mono", "Courier New", Courier, monospace;
- font-size: 9pt;
- margin-bottom: 1em;
- border-bottom:solid 1px #bfc2c7;
- border-right:solid 1px #bfc2c7;
- display:block;
- background-image:url(../icons/tab_sel_lft_grad.gif);
- background-repeat:repeat-y;
-}
-
-div.memberSection
-{
- background: #E3E6EB;
- border-bottom:solid 1px #bfc2c7;
- border-right:solid 1px #bfc2c7;
- padding:8px;
- background-image:url(../icons/tab_sel_lft_grad.gif);
- background-repeat:repeat-y;
- width:100%;
-}
-
-div.listSection
-{
- background: #E3E6EB;
- border-top:solid 1px #bfc2c7;
- border-bottom:solid 1px #bfc2c7;
- border-right:solid 1px #bfc2c7;
- padding:8px;
- background-image:url(../icons/tab_sel_lft_grad.gif);
- background-repeat:repeat-y;
- width:100%;
-}
-
-/* table styles */
-
-table.memberOptions
-{
- font-size:xx-small;
- padding:0px;
-}
-table.members {
- table-layout: fixed;
- background: white;
- padding:0px;
- width:100%;
-}
-
-table.members tr {
- min-height: 20px;
-}
-
-table.members th.iconColumn {
- width: 60px;
-}
-
-table.members th.nameColumn {
- width: 33%;
-}
-
-table.members th.descriptionColumn {
- width: 66%;
-}
-
-table.members th {
- border-color: #c7ced8;
- border-style: solid;
- border-width: 1px;
- background: white;
- text-align: left;
- color: #000066;
- font-weight: bold;
- font-size:xx-small;
-}
-
-table.members td {
- border-style: solid;
- border-color: #c7ced8;
- border-width: 1px;
- background: white;
- vertical-align: top;
- overflow: hidden;
- font-size:xx-small;
-}
-
-div.section table.filter {
- table-layout: fixed;
-}
-
-/* end of table styles */
-
-
-td.line
-{
- width:22em;
-}
-
-td.nsrBottom
-{
- height:0.6em;
-}
-/* end of tab styles */
-
-span.syntaxLabel
-{
- color:#0481DA;
- font-weight:bold;
-}
-
-div.seeAlsoStyle
-{
- padding-top:5px;
-}
-/* end of syntax styles */
-
-/* Glossary */
-SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;}
-DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;}
+/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */ + +@import url("tabs.css"); +@import url("syntax.css"); + +/*********************************************************** + * SCRIPT-SUPPORTING STYLES + ***********************************************************/ + +/* Defines the userData cache persistence mechanism. */ +.userDataStyle +{ + behavior: url(#default#userData); +} + +/* Used to save the scroll bar position when navigating away from a page. */ +div.saveHistory +{ + behavior: url(#default#saveHistory); +} + +/* Formats the expand/collapse images for all collapsible regions. */ +img.toggle +{ + border: 0px; + margin-right: 5px; +} + +/* Formats the Language filter drop-down image. */ +img#languageFilterImage +{ + border: 0px; + margin-left: 0px; + vertical-align: middle; +} + +/* Formats the Members Options filter drop-down image. */ +img#membersOptionsFilterImage +{ + border: 0px; + margin-left: 0px; + vertical-align: middle; +} + +/* Formats the Collapse All/Expand All images. */ +img#toggleAllImage +{ + margin-left: 0px; + vertical-align: middle; +} + +/* Supports XLinks */ +MSHelp\:link +{ + text-decoration: underline; + /*color: #0000ff; */ + color: #0481DA; + hoverColor: #3366ff; + filterString: ; +} + + +/*********************************************************** + * CONTENT PRESENTATION STYLES + ***********************************************************/ + +body +{ + background: #FFFFFF; + color: #000000; + font-family: Verdana; + font-size: medium; + font-style: normal; + font-weight: normal; + margin: 0px; + width: 100%; +} + +dl +{ + margin-top: 15px; + margin-bottom:5px; + padding-left: 1px; +} + +/*dt +{ + font-style: italic; +}*/ + +dd +{ + margin-left: 0px; +} + +ul +{ + margin-top:0px; + margin-bottom:0px; + margin-left: 17px; + list-style-type: disc; +} + +ul ul +{ + margin-bottom: 4px; + margin-left: 17px; + margin-top: 3px; + list-style-type: disc; +} + +ol +{ + margin-top:0px; + margin-bottom:0px; + margin-left: 28px; + list-style-type: decimal; +} + +ol ol +{ + margin-bottom: 4px; + margin-left: 28px; + margin-top: 3px; + list-style-type: lower-alpha; +} + +li +{ + margin-top: 5; + margin-bottom: 5; +} + +p +{ + margin-top: 10px; + margin-bottom: 5px; +} +a[href] +{ + color: #0481DA; +} +a +{ + color:#0481DA; +} + +a:visited +{ + color: #0481DA; +} + +a:hover +{ + /*color: #3366FF;*/ + color: #E85F17; +} + +code +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} + +span.parameter { + font-style: italic; + font-weight:bold; +} + +span.italic { + font-style: italic; +} + +span.referenceNoLink { + font-weight: bold; +} +span.nolink { + font-weight: bold; +} + +span.selflink { + font-weight: bold; +} + +span.nonLinkTerm { + font-weight: bold; +} +span.linkTerm { + font-weight:normal; +} + +/*********************************************************** + * STRUCTURE PRESENTATION STYLES + ***********************************************************/ + +/* Applies to everything below the non-scrolling header region. */ +div#mainSection +{ + font-size: 62.5%; + width: 100%; + overflow:hidden; +} +html>body #mainSection +{ + font-size:73%; + width: 100%; +} + +/* Applies to everything below the non-scrolling header region, minus the footer. */ +div#mainBody +{ + font-size: 100%; + margin-left: 15px; + margin-top: 10px; + padding-bottom: 20px; + overflow:hidden; +} + +html>body #mainBody +{ + font-size: 93%; + margin-left: 15px; + margin-top: 10px; + padding-bottom: 20px; +} + +/* Adds right padding for all blocks in mainBody */ +div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl +{ + padding-right: 5px; +} + +/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/ +/* Applies to the entire non-scrolling header region. */ +div#header +{ + background-color: white; + padding-top: 0px; + padding-bottom: 0px; + padding-left: 0px; + padding-right: 0px; + width: 100%; +} + +/* Applies to both tables in the non-scrolling header region. */ +div#header table +{ + width: 100%; +} + +/* Applies to cells in both tables in the non-scrolling header region. */ +div#header table td +{ + /*color: #0000FF;*/ + color:#0481DA; + font-size: 70%; + margin-top: 0px; + margin-bottom: 0; + padding-right: 20; +} + +/* Applies to the last row in the upper table of the non-scrolling header region. Text + in this row includes See Also, Constructors, Methods, and Properties. */ +div#header table tr#headerTableRow3 td +{ + padding-bottom: 2px; + padding-top: 5px; + padding-left: 15px; +} + +/* Applies to the lower table in the non-scrolling header region. Text in this table + includes Collapse All/Expand All, Language Filter, and Members Options. */ +div#header table#bottomTable +{ + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1px; + text-align: left; + padding-left: 15px; +} + +/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors, + Protected Constructors, Public Properties, Protected Properties, and so on). */ +div#mainSection table td.imageCell +{ + white-space: nowrap; +} +/*------------------------------ End General Table Styles -------------------------------*/ + +/*------------------------------ Begin General Table Styles -------------------------------*/ + +div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection +{ + width:98.9%; +} + +div#mainBody div.section div.alert, div#mainBody div.section div.code, +div#mainBody div.section div.tableSection +{ + width:100%; +} + +div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code, +div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert, +div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection +{ + width:100%; +} + +div.alert p, div.code p +{ + margin-top:5px; + margin-bottom:8px; +} +dd p +{ + margin-top:2px; + margin-bottom:8px; +} +div.tableSection p +{ + margin-top:1px; + margin-bottom:4px; +} +li p +{ + margin-top:2px; + margin-bottom:2px; +} +div.seeAlsoNoToggleSection dl +{ + margin-top:8px; + margin-bottom:1px; + padding-left:1px; +} +div.seeAlsoNoToggleSection dd p +{ + margin-top:2px; + margin-bottom:8px; +} +div.section dl +{ + margin-top:8px; + margin-bottom:1px; + padding-left:1px; +} +div.section dd p +{ + margin-top:2px; + margin-bottom:8px; +} +/*------------------------------ End General Table Styles -------------------------------*/ + +/* Applies to the running header text in the first row of the upper table in the + non-scrolling header region. */ +span#runningHeaderText +{ + color: #495F7F; + font-size: 90%; + padding-left: 13px; +} + +/* Applies to the topic title in the second row of the upper table in the + non-scrolling header region. */ +span#nsrTitle +{ + color: #495F7F; + font-size: 120%; + font-weight: 600; + padding-left: 13px; +} +/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/ + + +/* Formats the footer. Currently, the transforms pass in two parameters to the + footer SSC, but the default footer SSC doesn't use either parameter. + TODO: Investigate whether the default footer SSC has any impact on doc spec. */ +div#footer +{ + font-size: 80%; + margin: 0px; + padding-top: 8px; + padding-bottom: 6px; + padding-left: 5px; + padding-right: 2px; + width: 100%; +} + +html>body div#footer +{ + font-size: 80%; + margin: 0px; + padding-top: 2px; + padding-bottom: 6px; + padding-left: 5px; + padding-right: 2px; + width: 98%; +} + +/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule. + TODO: Determine whether this style is required by the doc spec. */ +/* +hr#footerHR +{ + border-bottom-color: #EEEEFF; + border-bottom-style: solid; + border-bottom-width: 1px; + border-top-color: C8CDDE; + border-top-style: solid; + border-top-width: 1px; + height: 3px; + color: #D4DFFF; +} +*/ + +/******************************************************************************************************************** + Collapsible Section Structure + + <h1 class="heading"> // Format of the collapsible section text + <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section + <img id="xxxToggle"> // Expand/collapse image + </img> + </span> + </h1> + + <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default + </div> + + + The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for + displaying/hiding the body of the collapsible section. +********************************************************************************************************************/ + +/* Applies to the body of a collapsible section */ +div.seeAlsoNoToggleSection +{ + margin-left:0; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 0px; + padding-right: 15px; + width: 100%; +} + +div.section +{ + margin-left:0px; + padding-left: 16px; + padding-right: 15px; + width: 100%; +} +html>body div.section +{ + margin-left:0px; + padding-top: 2px; + padding-bottom: 2px; + padding-left: 16px; + padding-right: 15px; + width: 97%; +} +div.seeSection +{ + margin-left:0px; + padding-top: 0px; + padding-bottom: 2px; + padding-left: 16px; + padding-right: 15px; + width: 100%; +} + +/*------------------------------ Begin Heading Styles -------------------------------*/ +/* As far as I can tell, only <h1> tags use this class. + TODO: Decide whether to roll these attributes into the h1.heading style */ +.heading +{ + font-weight: bold; + margin-top: 18px; + margin-bottom: 8px; +} + +/* All <h1> headings. */ +h1.heading +{ + color: #0481DA; + font-size: 130%; +} + +/* Applies to table titles and subsection titles. */ +.subHeading +{ + font-weight: bold; + margin-bottom: 4px; +} +.procedureSubHeading +{ + font-weight: bold; + margin-bottom: 4px; +} + +/* Formats the titles of author-generated tables. */ +h3.subHeading +{ + color: #000000; + font-size: 120%; + font-weight:800; +} + +h3.procedureSubHeading +{ + color: #0481DA; + font-size: 120%; +} + +/* Formats the titles of all subsections. */ +h4.subHeading +{ + color: #000000; + font-size: 110%; + font-weight:800; +} +span.labelheading, div.labelheading +{ + font-size:100%; + color: #0481DA; +} + +/*------------------------------ End Heading Styles -------------------------------*/ + + +/*------------------------------ Begin Image Styles -------------------------------*/ +img.copyCodeImage +{ + border: 0px; + margin: 1px; + margin-right: 3px; +} + +img.downloadCodeImage +{ + border: 0px; + margin-right: 3px; +} + +img.viewCodeImage +{ + border: 0px; + margin-right: 3px; +} + +img.note +{ + border: 0px; + margin-right: 3px; +} +/*------------------------------ End Image Styles -------------------------------*/ + +/*------------------------------ Begin Note Styles -------------------------------*/ +div.alert table +{ + border: 0px; + font-size: 100%; + width: 100%; +} + +div.alert table th +{ + background: #EFEFF7; + border-bottom-width: 0px; + color: #000066; + padding-left: 5px; + padding-right: 5px; +} + +div.alert table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1px; + padding-left: 5px; + padding-right: 5px; +} + + +/*------------------------------ End Note Styles -------------------------------*/ + + +/* Applies to the copy code text and image. */ +span.copyCode +{ + color: #0481DA; + font-size:xx-small; + font-weight: normal; + cursor: pointer; + float: left; + display: inline; + text-align: left; + padding-bottom:10px; +} +span.copyCodeOnHover +{ + color: #E85F17; + font-size:xx-small; + font-weight: normal; + cursor: pointer; + float: left; + display: inline; + text-align: left; + padding-bottom:10px; + text-decoration: underline; +} + +.downloadCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +.viewCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +/* Formats parameter tooltips. */ +.tip +{ + color: #0000FF; + font-style: italic; + cursor: pointer; + text-decoration:underline; +} + +/* Applies to the language labels in the Language Filter drop-down list. */ +.languageFilter +{ + color: #0000FF; + cursor: pointer; + text-decoration:underline; + padding-bottom:4px; +} + +/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */ +.math +{ + font-family: Times New Roman; + font-size: 125% +} + +/* The sourceCodeList class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +.sourceCodeList +{ + font-family: Verdana; + font-size: 90%; +} +*/ + +/* The viewCode class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +pre.viewCode +{ + width: 100%; + overflow: auto; +} +*/ + +/* Dropdown areas */ + +#languageSpan +{ + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #C8CDDE; + background:white; + padding: 4px; + font-size:82.5%; + } + +#membersOptionsSpan { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #C8CDDE; + background: #d4dfff; + padding: 4px; + font-size: 62.5%; +} + +/* Line seperating footer from main body */ + +div.footerLine { + margin: 0; + width: 100%; + padding-top: 8px; + padding-bottom: 6px; + padding-left: 5px; + padding-right: 2px; + +} + +div.hr1 +{ + margin: 0px; + width: 100%; + height: 1px; + padding: 0px; + background: #C8CDDE; + font-size: 1px; +} + +div.hr2 +{ + margin: 0px; + width: 100%; + height: 1px; + padding: 0px; + background: #D4DFFF; + font-size: 1px; +} + +div.hr3 +{ + margin: 0px; + width: 100%; + height: 1px; + padding: 0px; + background: #EEEEFF; + font-size: 1px; +} + +span.cs +{ + display: none; +} + +span.vb +{ + display: inline; +} + +span.cpp +{ + display: none; +} + +span.nu +{ + display: none; +} + +span.code +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} +span.ui +{ + font-weight: bold; +} +span.math +{ + font-style: italic; +} +span.input +{ + font-weight: bold; +} +span.term +{ + font-style: italic; +} +span.label +{ + font-weight: bold; +} +span.foreignPhrase +{ + font-style: italic; +} +span.placeholder +{ + font-style: italic; +} +span.keyword +{ + font-weight: bold; +} +span.typeparameter +{ + font-style:italic; +} + +div.caption +{ + font-weight: bold; + font-size:100%; + color:#003399; +} + +div.code +{ + clear: both; + width: 100%; + background: #E3E6EB; + padding: 0.4em; + font-family: "Andale Mono", "Courier New", Courier, monospace; + font-size: 9pt; + margin-bottom: 1em; + border-bottom:solid 1px #bfc2c7; + border-right:solid 1px #bfc2c7; + display:block; + background-image:url(../icons/tab_sel_lft_grad.gif); + background-repeat:repeat-y; +} + +div.memberSection +{ + background: #E3E6EB; + border-bottom:solid 1px #bfc2c7; + border-right:solid 1px #bfc2c7; + padding:8px; + background-image:url(../icons/tab_sel_lft_grad.gif); + background-repeat:repeat-y; + width:100%; +} + +div.listSection +{ + background: #E3E6EB; + border-top:solid 1px #bfc2c7; + border-bottom:solid 1px #bfc2c7; + border-right:solid 1px #bfc2c7; + padding:8px; + background-image:url(../icons/tab_sel_lft_grad.gif); + background-repeat:repeat-y; + width:100%; +} + +/* table styles */ + +table.memberOptions +{ + font-size:xx-small; + padding:0px; +} +table.members { + table-layout: fixed; + background: white; + padding:0px; + width:100%; +} + +table.members tr { + min-height: 20px; +} + +table.members th.iconColumn { + width: 60px; +} + +table.members th.nameColumn { + width: 33%; +} + +table.members th.descriptionColumn { + width: 66%; +} + +table.members th { + border-color: #c7ced8; + border-style: solid; + border-width: 1px; + background: white; + text-align: left; + color: #000066; + font-weight: bold; + font-size:xx-small; +} + +table.members td { + border-style: solid; + border-color: #c7ced8; + border-width: 1px; + background: white; + vertical-align: top; + overflow: hidden; + font-size:xx-small; +} + +div.section table.filter { + table-layout: fixed; +} + +/* end of table styles */ + + +td.line +{ + width:22em; +} + +td.nsrBottom +{ + height:0.6em; +} +/* end of tab styles */ + +span.syntaxLabel +{ + color:#0481DA; + font-weight:bold; +} + +div.seeAlsoStyle +{ + padding-top:5px; +} +/* end of syntax styles */ + +/* Glossary */ +SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;} +DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;} diff --git a/tools/Sandcastle/Presentation/hana/Styles/syntax.css b/tools/Sandcastle/Presentation/hana/Styles/syntax.css index eb27346..ec5b4dd 100644 --- a/tools/Sandcastle/Presentation/hana/Styles/syntax.css +++ b/tools/Sandcastle/Presentation/hana/Styles/syntax.css @@ -1,22 +1,22 @@ -
-/* syntax styles */
-
-div.code span.identifier {
- font-weight: bold;
-}
-
-div.code span.keyword {
- color: #0000ff;
-}
-
-div.code span.parameter {
- font-style: italic;
-}
-
-div.code span.literal {
- color: #a31515;
-}
-
-div.code span.comment {
- color: #007f00;
-}
+ +/* syntax styles */ + +div.code span.identifier { + font-weight: bold; +} + +div.code span.keyword { + color: #0000ff; +} + +div.code span.parameter { + font-style: italic; +} + +div.code span.literal { + color: #a31515; +} + +div.code span.comment { + color: #007f00; +} diff --git a/tools/Sandcastle/Presentation/hana/Styles/tabs.css b/tools/Sandcastle/Presentation/hana/Styles/tabs.css index dbf0f14..af06695 100644 --- a/tools/Sandcastle/Presentation/hana/Styles/tabs.css +++ b/tools/Sandcastle/Presentation/hana/Styles/tabs.css @@ -1,118 +1,118 @@ -/* tab styles */
-
-/* unselected label */
-div.section table.filter tr.tabs td.tab {
- width: 10em;
- background: white;
- text-align: center;
- color: #0481DA;
- font-weight: normal;
- overflow: hidden;
- cursor: pointer;
- border-bottom: solid 1px #cad1da;
- font-size: xx-small;
-}
-
-/* selected label */
-div.section table.filter tr.tabs td.activeTab {
- width: 10em;
- background: #E3E6EB;
- text-align: center;
- color: #000066;
- font-weight: bold;
- overflow: hidden;
- font-size: xx-small;
-}
-
-/* unselected upper left corner */
-td.LeftTab {
- width: 5px;
- height: 5px;
- background-image: url("../icons/tab_unsel_lft_cnr.gif");
- background-repeat: no-repeat;
- font-size:2pt;
-}
-
-/* selected upper left corner */
-td.activeLeftTab {
- width: 5px;
- height: 5px;
- background-image: url("../icons/tab_sel_lft_cnr.gif");
- background-repeat: no-repeat;
- font-size:2pt;
-}
-
-/* unselected upper right corner */
-td.RightTab {
- width: 5px;
- height: 5px;
- background-image: url("../icons/tab_unsel_rt_cnr.gif");
- background-repeat: no-repeat;
- font-size:2pt;
-}
-
-/* selected upper right corner */
-td.activeRightTab {
- width: 5px;
- height: 5px;
- background-image: url("../icons/tab_sel_rt_cnr.gif");
- background-repeat: no-repeat;
- font-size:2pt;
-}
-
-/* unselected left gradient */
-td.leftGrad {
- width: 5px;
- border-bottom: solid 1px #cad1da;
- background-image: url("../icons/tab_unsel_lft_grad.gif");
- background-repeat: repeat-y;
- font-size:2pt;
-}
-
-/* selected left gradient */
-td.activeLeftGrad {
- width: 5px;
- background-image: url("../icons/tab_sel_lft_grad.gif");
- background-repeat: repeat-y;
- font-size:2pt;
-}
-
-/* unselected right gradient */
-td.RightGrad {
- width: 5px;
- border-bottom: solid 1px #cad1da;
- background-image: url("../icons/tab_unsel_rt_grad.gif");
- background-repeat: repeat-y;
- white-space:nowrap;
- font-size:2pt;
-}
-
-/* selected right gradient */
-td.activeRightGrad {
- width: 5px;
- background-image: url("../icons/tab_sel_rt_grad.gif");
- background-repeat: repeat-y;
- white-space:nowrap;
- font-size:2pt;
-}
-
-/* unselected label top */
-td.middleTab {
- width: 10em;
- background: white;
- height: 5px;
- border-top: solid 1px #cad1da;
- font-size:2pt;
-}
-
-/* selected label top */
-td.activeMiddleTab
-{
- width: 10em;
- background: #E3E6EB;
- height: 5px;
- border-top: solid 1px #bdc6d2;
- font-size:2pt;
-}
-
-
+/* tab styles */ + +/* unselected label */ +div.section table.filter tr.tabs td.tab { + width: 10em; + background: white; + text-align: center; + color: #0481DA; + font-weight: normal; + overflow: hidden; + cursor: pointer; + border-bottom: solid 1px #cad1da; + font-size: xx-small; +} + +/* selected label */ +div.section table.filter tr.tabs td.activeTab { + width: 10em; + background: #E3E6EB; + text-align: center; + color: #000066; + font-weight: bold; + overflow: hidden; + font-size: xx-small; +} + +/* unselected upper left corner */ +td.LeftTab { + width: 5px; + height: 5px; + background-image: url("../icons/tab_unsel_lft_cnr.gif"); + background-repeat: no-repeat; + font-size:2pt; +} + +/* selected upper left corner */ +td.activeLeftTab { + width: 5px; + height: 5px; + background-image: url("../icons/tab_sel_lft_cnr.gif"); + background-repeat: no-repeat; + font-size:2pt; +} + +/* unselected upper right corner */ +td.RightTab { + width: 5px; + height: 5px; + background-image: url("../icons/tab_unsel_rt_cnr.gif"); + background-repeat: no-repeat; + font-size:2pt; +} + +/* selected upper right corner */ +td.activeRightTab { + width: 5px; + height: 5px; + background-image: url("../icons/tab_sel_rt_cnr.gif"); + background-repeat: no-repeat; + font-size:2pt; +} + +/* unselected left gradient */ +td.leftGrad { + width: 5px; + border-bottom: solid 1px #cad1da; + background-image: url("../icons/tab_unsel_lft_grad.gif"); + background-repeat: repeat-y; + font-size:2pt; +} + +/* selected left gradient */ +td.activeLeftGrad { + width: 5px; + background-image: url("../icons/tab_sel_lft_grad.gif"); + background-repeat: repeat-y; + font-size:2pt; +} + +/* unselected right gradient */ +td.RightGrad { + width: 5px; + border-bottom: solid 1px #cad1da; + background-image: url("../icons/tab_unsel_rt_grad.gif"); + background-repeat: repeat-y; + white-space:nowrap; + font-size:2pt; +} + +/* selected right gradient */ +td.activeRightGrad { + width: 5px; + background-image: url("../icons/tab_sel_rt_grad.gif"); + background-repeat: repeat-y; + white-space:nowrap; + font-size:2pt; +} + +/* unselected label top */ +td.middleTab { + width: 10em; + background: white; + height: 5px; + border-top: solid 1px #cad1da; + font-size:2pt; +} + +/* selected label top */ +td.activeMiddleTab +{ + width: 10em; + background: #E3E6EB; + height: 5px; + border-top: solid 1px #bdc6d2; + font-size:2pt; +} + + diff --git a/tools/Sandcastle/Presentation/hana/configuration/conceptual.config b/tools/Sandcastle/Presentation/hana/configuration/conceptual.config index 7942ebe..08b4d3c 100644 --- a/tools/Sandcastle/Presentation/hana/configuration/conceptual.config +++ b/tools/Sandcastle/Presentation/hana/configuration/conceptual.config @@ -1,108 +1,108 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\Vsorcas\transforms\skeleton_conceptual.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/topic" key="@id">
- <data files=".\DdueXml\*.xml" />
- </index>
- <copy name="comments" source="/topic" target="/document" />
- </component>
-
- <!-- resolve tokens -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
- <content file="%DXROOT%\Data\tokens.xml" />
- <replace elements="/*//ddue:token" item="string(.)" />
- </component>
-
- <!-- copy in metadata keywords -->
- <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" />
- </component>
-
- <!-- copy in metadata attributes -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="metadata" value="/metadata/topic" key="@id">
- <data files=".\ExtractedFiles\*.ContentMetadata.xml" />
- </index>
- <copy name="metadata" source="*" target="/document/metadata" />
- <copy name="metadata" key="string('*')" source="*" target="/document/metadata" />
- </component>
-
- <!-- Resolve code snippets -->
- <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <examples file="%DXROOT%\Data\CodeSnippet.xml" />
- <colors language="VisualBasic">
- <color pattern="^\s*'[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((AddHandler)|(AddressOf)|(As)|(ByRef)|(ByVal)|(Case)|(Catch)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(Function)|(Get)|(Handles)|(Implements)|(Imports)|(In)|(Inherits)|(Interface)|(Is)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(While)|(With)|(WriteOnly))\b" class="keyword" />
- </colors>
- <colors language="CSharp">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((abstract)|(as)|(base)|(bool)|(break)|(case)|(catch)|(class)|(const)|(continue)|(default)|(delegate)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(foreach)|(get)|(if)|(in)|(interface)|(internal)|(is)|(namespace)|(new)|(null)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(while))\b" class="keyword" />
- </colors>
- <colors language="ManagedCPlusPlus">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\".*\"" class="literal" />
- <color pattern="\b((abstract)|(array)|(break)|(case)|(catch)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
- </colors>
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\vsorcas\transforms\main_conceptual.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cs" />
- <language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />
- <language label="XAML" name="XAML" style="cs" />
- </argument>
- </transform>
- </component>
-
- <!-- resolve art links -->
- <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" />
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\vsorcas\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\vsorcas\content\conceptual_content.xml" />
- </component>
-
- <!-- resolve conceptual links -->
- <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base=".\XmlComp" type="local" />
- <targets base="%DXROOT%\Data\XmlComp" type="index"/>
- </component>
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="index" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\Vsorcas\transforms\skeleton_conceptual.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/topic" key="@id"> + <data files=".\DdueXml\*.xml" /> + </index> + <copy name="comments" source="/topic" target="/document" /> + </component> + + <!-- resolve tokens --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" /> + <content file="%DXROOT%\Data\tokens.xml" /> + <replace elements="/*//ddue:token" item="string(.)" /> + </component> + + <!-- copy in metadata keywords --> + <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" /> + </component> + + <!-- copy in metadata attributes --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="metadata" value="/metadata/topic" key="@id"> + <data files=".\ExtractedFiles\*.ContentMetadata.xml" /> + </index> + <copy name="metadata" source="*" target="/document/metadata" /> + <copy name="metadata" key="string('*')" source="*" target="/document/metadata" /> + </component> + + <!-- Resolve code snippets --> + <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <examples file="%DXROOT%\Data\CodeSnippet.xml" /> + <colors language="VisualBasic"> + <color pattern="^\s*'[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((AddHandler)|(AddressOf)|(As)|(ByRef)|(ByVal)|(Case)|(Catch)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(Function)|(Get)|(Handles)|(Implements)|(Imports)|(In)|(Inherits)|(Interface)|(Is)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(While)|(With)|(WriteOnly))\b" class="keyword" /> + </colors> + <colors language="CSharp"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((abstract)|(as)|(base)|(bool)|(break)|(case)|(catch)|(class)|(const)|(continue)|(default)|(delegate)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(foreach)|(get)|(if)|(in)|(interface)|(internal)|(is)|(namespace)|(new)|(null)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(while))\b" class="keyword" /> + </colors> + <colors language="ManagedCPlusPlus"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\".*\"" class="literal" /> + <color pattern="\b((abstract)|(array)|(break)|(case)|(catch)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" /> + </colors> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\vsorcas\transforms\main_conceptual.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cs" /> + <language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" /> + <language label="XAML" name="XAML" style="cs" /> + </argument> + </transform> + </component> + + <!-- resolve art links --> + <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" /> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\vsorcas\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\vsorcas\content\conceptual_content.xml" /> + </component> + + <!-- resolve conceptual links --> + <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base=".\XmlComp" type="local" /> + <targets base="%DXROOT%\Data\XmlComp" type="index"/> + </component> + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="index" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/hana/configuration/sandcastle-scbuild.config b/tools/Sandcastle/Presentation/hana/configuration/sandcastle-scbuild.config index ba51add..c2e1097 100644 --- a/tools/Sandcastle/Presentation/hana/configuration/sandcastle-scbuild.config +++ b/tools/Sandcastle/Presentation/hana/configuration/sandcastle-scbuild.config @@ -1,126 +1,126 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\hana\Transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/parameters/parameter//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements//element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in comments for the member's declaring type. -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\hana\Transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <!--<language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />
- <language label="XAML" name="XAML" style="cs" /> -->
- </argument>
- </transform>
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\hana\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\hana\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
- </component>
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" />
- <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" />
- <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\hana\Transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in parameter data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/parameters/parameter//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements//element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in comments for the member's declaring type. --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" /> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\hana\Transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <!--<language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" /> + <language label="XAML" name="XAML" style="cs" /> --> + </argument> + </transform> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\hana\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\hana\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" /> + </component> + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" /> + <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" /> + <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="false" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/hana/configuration/sandcastle.config b/tools/Sandcastle/Presentation/hana/configuration/sandcastle.config index 494f3b8..cfa51df 100644 --- a/tools/Sandcastle/Presentation/hana/configuration/sandcastle.config +++ b/tools/Sandcastle/Presentation/hana/configuration/sandcastle.config @@ -1,127 +1,127 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\hana\Transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" />
- <data files=".\reflection.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/parameters/parameter//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data files="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\*.xml" />
- <data files=".\comments.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements//element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in comments for the member's declaring type. -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\hana\Transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <!--<language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />
- <language label="XAML" name="XAML" style="cs" /> -->
- </argument>
- </transform>
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\hana\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\hana\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
- </component>
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="msdn" />
- <targets files=".\reflection.xml" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base =".\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="false" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\hana\Transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" /> + <data files=".\reflection.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in parameter data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/parameters/parameter//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data files="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\*.xml" /> + <data files=".\comments.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements//element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements//element[@api=$key]/apidata)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in comments for the member's declaring type. --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" /> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\hana\Transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <!--<language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" /> + <language label="XAML" name="XAML" style="cs" /> --> + </argument> + </transform> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\hana\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\hana\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" /> + </component> + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DXROOT%\Data\Reflection" recurse="true" files="*.xml" type="msdn" /> + <targets files=".\reflection.xml" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base =".\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="false" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/hana/copyOutput.bat b/tools/Sandcastle/Presentation/hana/copyOutput.bat index c7a5326..60fc216 100644 --- a/tools/Sandcastle/Presentation/hana/copyOutput.bat +++ b/tools/Sandcastle/Presentation/hana/copyOutput.bat @@ -1,11 +1,11 @@ -if not exist Output mkdir Output
-if not exist Output\html mkdir Output\html
-if not exist Output\icons mkdir Output\icons
-if not exist Output\scripts mkdir Output\scripts
-if not exist Output\styles mkdir Output\styles
-if not exist Output\media mkdir Output\media
-copy "%DXROOT%\Presentation\hana\icons\*" Output\icons
-copy "%DXROOT%\Presentation\hana\scripts\*" Output\scripts
-copy "%DXROOT%\Presentation\hana\styles\*" Output\styles
-if not exist Intellisense mkdir Intellisense
-
+if not exist Output mkdir Output +if not exist Output\html mkdir Output\html +if not exist Output\icons mkdir Output\icons +if not exist Output\scripts mkdir Output\scripts +if not exist Output\styles mkdir Output\styles +if not exist Output\media mkdir Output\media +copy "%DXROOT%\Presentation\hana\icons\*" Output\icons +copy "%DXROOT%\Presentation\hana\scripts\*" Output\scripts +copy "%DXROOT%\Presentation\hana\styles\*" Output\styles +if not exist Intellisense mkdir Intellisense + diff --git a/tools/Sandcastle/Presentation/hana/transforms/globalTemplates.xsl b/tools/Sandcastle/Presentation/hana/transforms/globalTemplates.xsl index 8ca4528..abf6d2d 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/globalTemplates.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/globalTemplates.xsl @@ -1,125 +1,125 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:template name="autogenSeeAlsoLinks">
-
- <!-- a link to the containing type on all list and member topics -->
- <xsl:if test="$group='member' or $group='list'">
- <div class="seeAlsoStyle">
- <include item="SeeAlsoTypeLinkText">
- <parameter>
- <referenceLink target="{$typeId}" />
- <!--<xsl:value-of select="$typeName"/> -->
- </parameter>
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </parameter>
- </include>
- </div>
- </xsl:if>
-
- <!-- a link to the namespace topic -->
- <xsl:if test="normalize-space($namespaceId)">
- <div class="seeAlsoStyle">
- <include item="SeeAlsoNamespaceLinkText">
- <parameter>
- <referenceLink target="{$namespaceId}" />
- <!--<xsl:value-of select="/document/reference/containers/namespace/apidata/@name"/> -->
- </parameter>
- </include>
- </div>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:variable name="typeId">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata[@group='api'] and /document/reference/apidata[@group='type']">
- <xsl:value-of select="$key"/>
- </xsl:when>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/@api"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="namespaceId">
- <xsl:value-of select="/document/reference/containers/namespace/@api"/>
- </xsl:variable>
-
- <!-- indent by 2*n spaces -->
- <xsl:template name="indent">
- <xsl:param name="count" />
- <xsl:if test="$count > 1">
- <xsl:text>  </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$count - 1" />
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Gets the substring after the last occurence of a period in a given string -->
- <xsl:template name="subString">
- <xsl:param name="name" />
-
- <xsl:choose>
- <xsl:when test="contains($name, '.')">
- <xsl:call-template name="subString">
- <xsl:with-param name="name" select="substring-after($name, '.')" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="codeSection">
-
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th>
- <span class="copyCode" onclick="CopyCode(this)" onkeypress="CopyCode_CheckKey(this, event)" onmouseover="ChangeCopyCodeIcon(this)" onmouseout="ChangeCopyCodeIcon(this)" tabindex="0">
- <img class="copyCodeImage" name="ccImage" align="absmiddle">
- <includeAttribute name="title" item="copyImage" />
- <includeAttribute name="src" item="iconPath">
- <parameter>copycode.gif</parameter>
- </includeAttribute>
- </img>
- <include item="copyCode"/>
- </span>
- </th>
- </tr>
- <tr>
- <td colspan="2">
- <pre><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre>
- </td>
- </tr>
- </table>
-
- </xsl:template>
-
- <xsl:template name="languageCheck">
- <xsl:param name="codeLanguage"/>
-
- <xsl:if test="$languages != 'false'">
- <xsl:if test="count($languages/language) > 0">
- <xsl:for-each select="$languages/language">
- <xsl:if test="$codeLanguage = @name">
- <xsl:value-of select="@style"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:template name="autogenSeeAlsoLinks"> + + <!-- a link to the containing type on all list and member topics --> + <xsl:if test="$group='member' or $group='list'"> + <div class="seeAlsoStyle"> + <include item="SeeAlsoTypeLinkText"> + <parameter> + <referenceLink target="{$typeId}" /> + <!--<xsl:value-of select="$typeName"/> --> + </parameter> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </parameter> + </include> + </div> + </xsl:if> + + <!-- a link to the namespace topic --> + <xsl:if test="normalize-space($namespaceId)"> + <div class="seeAlsoStyle"> + <include item="SeeAlsoNamespaceLinkText"> + <parameter> + <referenceLink target="{$namespaceId}" /> + <!--<xsl:value-of select="/document/reference/containers/namespace/apidata/@name"/> --> + </parameter> + </include> + </div> + </xsl:if> + + </xsl:template> + + <xsl:variable name="typeId"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata[@group='api'] and /document/reference/apidata[@group='type']"> + <xsl:value-of select="$key"/> + </xsl:when> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/@api"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="namespaceId"> + <xsl:value-of select="/document/reference/containers/namespace/@api"/> + </xsl:variable> + + <!-- indent by 2*n spaces --> + <xsl:template name="indent"> + <xsl:param name="count" /> + <xsl:if test="$count > 1"> + <xsl:text>  </xsl:text> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$count - 1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- Gets the substring after the last occurence of a period in a given string --> + <xsl:template name="subString"> + <xsl:param name="name" /> + + <xsl:choose> + <xsl:when test="contains($name, '.')"> + <xsl:call-template name="subString"> + <xsl:with-param name="name" select="substring-after($name, '.')" /> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name" /> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template name="codeSection"> + + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th> + <span class="copyCode" onclick="CopyCode(this)" onkeypress="CopyCode_CheckKey(this, event)" onmouseover="ChangeCopyCodeIcon(this)" onmouseout="ChangeCopyCodeIcon(this)" tabindex="0"> + <img class="copyCodeImage" name="ccImage" align="absmiddle"> + <includeAttribute name="title" item="copyImage" /> + <includeAttribute name="src" item="iconPath"> + <parameter>copycode.gif</parameter> + </includeAttribute> + </img> + <include item="copyCode"/> + </span> + </th> + </tr> + <tr> + <td colspan="2"> + <pre><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre> + </td> + </tr> + </table> + + </xsl:template> + + <xsl:template name="languageCheck"> + <xsl:param name="codeLanguage"/> + + <xsl:if test="$languages != 'false'"> + <xsl:if test="count($languages/language) > 0"> + <xsl:for-each select="$languages/language"> + <xsl:if test="$codeLanguage = @name"> + <xsl:value-of select="@style"/> + </xsl:if> + </xsl:for-each> + </xsl:if> + </xsl:if> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/hana/transforms/htmlBody.xsl b/tools/Sandcastle/Presentation/hana/transforms/htmlBody.xsl index aae3d28..64fb50e 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/htmlBody.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/htmlBody.xsl @@ -1,507 +1,507 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="globalTemplates.xsl"/>
- <xsl:template name="upperBodyStuff">
- <input type="hidden" id="userDataCache" class="userDataStyle"/>
- <input type="hidden" id="hiddenScrollOffset"/>
-
- <xsl:call-template name="commonImages"/>
-
- <xsl:call-template name="bodyHeader"/>
-
- </xsl:template>
-
- <xsl:template name="bodyHeader">
- <div id="header">
- <xsl:call-template name="bodyHeaderTopTable"/>
- </div>
- </xsl:template>
-
- <xsl:template name="bodyHeaderTopTable">
- <table id="topTable">
- <tr id="headerTableRow3">
- <td>
- <xsl:call-template name="headerRowLinks"/>
- </td>
- </tr>
- <tr id="headerTableRow1">
- <td align="left">
- <span id="runningHeaderText">
- <xsl:call-template name="runningHeader" />
- </span>
- </td>
- </tr>
- <tr id="headerTableRow2">
- <td align="left">
- <span id="nsrTitle">
- <xsl:call-template name="topicTitleDecorated"/>
- </span>
- </td>
- </tr>
- <tr>
- <td class="nsrBottom">
- <includeAttribute name="background" item="iconPath">
- <parameter>NSRbottomgrad.gif</parameter>
- </includeAttribute>
- </td>
- </tr>
- </table>
- </xsl:template>
-
- <xsl:template name="headerRowLinks">
- <!-- most mref topics get autogenerated see also links to see also section -->
-
- <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0">
- <img ID="toggleAllImage" class="toggleAll">
- <includeAttribute name="src" item="iconPath">
- <parameter>collall.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="collapseAllImage" />
- </img>
- <label id="collapseAllLabel" for="toggleAllImage" style="display: none;">
- <include item="collapseAll"/>
- </label>
- <label id="expandAllLabel" for="toggleAllImage" style="display: none;">
- <include item="expandAll"/>
- </label>
- <xsl:text> </xsl:text>
- </span>
-
- <xsl:if test="$languages != 'false'">
- <xsl:if test="count($languages/language) > 0">
- <xsl:text> | </xsl:text>
- <xsl:call-template name="languageFilterToolTip"/>
- <xsl:call-template name="languageSpan"/>
- </xsl:if>
- </xsl:if>
-
-
- <!-- include Example link if there's an Example section -->
- <xsl:choose>
- <xsl:when test="$examplesSection">
- <xsl:text> | </xsl:text>
- <a href="#exampleToggle" onclick="OpenSection(exampleToggle)">
- <xsl:text/>
- <include item="Example"/>
- <xsl:text/>
- </a>
- </xsl:when>
- </xsl:choose>
-
- <!-- class, structure, and interface About topics get link to Members topic (unless the doc model has the all members lists on the type topic) -->
- <xsl:choose>
- <xsl:when test="normalize-space(/document/reference/topicdata/@allMembersTopicId)">
- <xsl:text> | </xsl:text>
- <referenceLink target="{/document/reference/topicdata/@allMembersTopicId}">
- <include item="allMembersTitle"/>
- </referenceLink>
- </xsl:when>
- <xsl:when test="count(/document/reference/elements/element) > 0 and ($subgroup='class' or $subgroup='structure' or $subgroup='interface')">
- <xsl:text> | </xsl:text>
- <a href="#membersToggle" onclick="OpenSection(membersToggle)">
- <xsl:text/>
- <include item="allMembersTitle"/>
- <xsl:text/>
- </a>
- </xsl:when>
- </xsl:choose>
-
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:text> | </xsl:text>
- <a href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)">
- <xsl:text/>
- <include item="SeeAlso"/>
- <xsl:text/>
- </a>
- </xsl:if>
-
- <!--all members only -->
- <xsl:if test="$subgroup='members'">
- <xsl:variable name="visibility">
- <xsl:for-each select="/document/reference/elements/element">
- <xsl:choose>
- <xsl:when test="memberdata[@visibility = 'public']">
- <xsl:choose>
- <xsl:when test="not(apidata[@subsubgroup])">
- <xsl:value-of select="concat('Public', apidata/@subgroup, ';')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Public', apidata/@subsubgroup, ';')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="memberdata[@visibility = 'private'] and not(proceduredata[@virtual = 'true'])">
- <xsl:choose>
- <xsl:when test="not(apidata[@subsubgroup])">
- <xsl:value-of select="concat('Private', apidata/@subgroup, ';')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Private', apidata/@subsubgroup, ';')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="memberdata[@visibility = 'private'] and proceduredata[@virtual = 'true']">
- explicit;
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="not(apidata[@subsubgroup])">
- <xsl:value-of select="concat('Protected', apidata/@subgroup, ';')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Protected', apidata/@subsubgroup, ';')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:variable>
-
-
- <xsl:for-each select="/document/reference/elements/element">
- <xsl:variable name="subgroup" select="apidata/@subgroup"/>
- <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" />
- <xsl:if test="not(preceding-sibling::element[apidata[@subgroup=$subgroup]]) and not($subsubgroup='attachedProperty' or $subsubgroup='attachedEvent')">
- <xsl:if test="not($subsubgroup)">
- <xsl:variable name="elementVisibility">
- <xsl:choose>
- <xsl:when test="contains($visibility, concat('Public', $subgroup))">
- <xsl:value-of select="concat('Public', $subgroup)"/>
- </xsl:when>
- <xsl:when test="contains($visibility, concat('Private', $subgroup))">
- <xsl:value-of select="concat('Private', $subgroup)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Protected', $subgroup)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- add a link to the member list section for this subgroup -->
- <a href="#{$elementVisibility}Toggle" onclick="OpenSection({$elementVisibility}Toggle)">
- <xsl:text/>
- <include item="{$subgroup}Group"/>
- <xsl:text/>
- </a> 
- </xsl:if>
- </xsl:if>
- <xsl:if test="not(preceding-sibling::element[apidata[@subsubgroup=$subsubgroup]]) and ($subsubgroup='attachedProperty' or $subsubgroup='attachedEvent')">
- <xsl:variable name="elementVisibility">
- <xsl:choose>
- <xsl:when test="contains($visibility, concat('Public', $subsubgroup))">
- <xsl:value-of select="concat('Public', $subsubgroup)"/>
- </xsl:when>
- <xsl:when test="contains($visibility, concat('Private', $subsubgroup))">
- <xsl:value-of select="concat('Private', $subsubgroup)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Protected', $subsubgroup)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!-- add a link to the member list section for this subgroup -->
- <a href="#{$elementVisibility}Toggle" onclick="OpenSection({$elementVisibility}Toggle)">
- <xsl:text/>
- <include item="{$subsubgroup}Group"/>
- <xsl:text/>
- </a> 
- </xsl:if>
- </xsl:for-each>
-
- <xsl:if test="contains($visibility, 'explicit')">
- <a href="#ExplicitInterfaceImplementationToggle" onclick="OpenSection(ExplicitInterfaceImplementationSection)">
- <xsl:text/>
- <include item="ExplicitInterfaceImplementation"/>
- <xsl:text/>
- </a> 
- </xsl:if>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="bodyHeaderBottomTable">
- <table id="bottomTable" cellspacing="0" cellpadding="0">
- <tr>
- <td>
- <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0">
- <img ID="toggleAllImage" class="toggleAll">
- <includeAttribute name="src" item="iconPath">
- <parameter>collall.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="collapseAllImage" />
- </img>
- <label id="collapseAllLabel" for="toggleAllImage" style="display: none;">
- <include item="collapseAll"/>
- </label>
- <label id="expandAllLabel" for="toggleAllImage" style="display: none;">
- <include item="expandAll"/>
- </label>
- <xsl:text> </xsl:text>
- </span>
-
- <xsl:text> </xsl:text>
-
- <xsl:call-template name="languageFilterToolTip"/>
-
- </td>
- </tr>
- </table>
- </xsl:template>
-
- <xsl:template name="languageFilterToolTip">
- <span id="languageFilterToolTip" style="cursor:default;" onmouseover="languageFilterImage.src=dropDownHoverImage.src;" onmouseout="languageFilterImage.src=dropDownImage.src;" tabindex="0">
- <img id="languageFilterImage">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_unselected.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="dropDownImage" />
- </img>
- <xsl:for-each select="$languages/language">
- <label id="{@name}Label" for="languageFilterImage" style="display: none;">
- <include item="languageFilter">
- <parameter>
- <include item="{@label}Label"/>
- </parameter>
- </include>
- </label>
- </xsl:for-each>
- </span>
- </xsl:template>
-
- <xsl:template name="membersOptionsSpan">
- <div id="membersOptionsSpan">
- <input id="inheritedCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/>
- <label class="membersOptionsFilter" for="inheritedCheckbox">
- <include item="includeInheritedMembers"/>
- </label>
- <br/>
- <input id="protectedCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/>
- <label class="membersOptionsFilter" for="protectedCheckbox">
- <include item="includeProtectedMembers"/>
- </label>
- <br/>
- <input id="netcfCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/>
- <label class="membersOptionsFilter" for="netcfCheckbox">
- <include item="netcfMembersOnly"/>
- </label>
- <br/>
- <!-- add a checkbox for XNA filtering -->
- <input id="netXnaCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/>
- <label class="membersOptionsFilter" for="netXnaCheckbox">
- <include item="netXnaMembersOnly"/>
- </label>
- </div>
- </xsl:template>
-
- <xsl:template name="membersOptionsFilterToolTip">
- <span id="membersOptionsFilterToolTip" style="cursor:default;" onmouseover="membersOptionsFilterImage.src=dropDownHoverImage.src;" onmouseout="membersOptionsFilterImage.src=dropDownImage.src;" tabindex="0">
- <img id="membersOptionsFilterImage">
- <includeAttribute name="src" item="iconPath">
- <parameter>drpdown.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="dropDownImage" />
- </img>
- <label id="showAllMembersLabel" for="membersOptionsFilterImage" style="display: none;">
- <include item="membersOptionsShowAll"/>
- </label>
- <label id="filteredMembersLabel" for="membersOptionsFilterImage" style="display: none;">
- <include item="membersOptionsFiltered"/>
- </label>
- </span>
- </xsl:template>
-
- <xsl:template name="languageSpan">
- <div id="languageSpan">
- <xsl:for-each select="$languages/language">
- <div id="{@name}" onclick="languageFilter.changeLanguage(data, '{@name}', '{@style}');">
- <img id="{@name}Image" onmouseover="mouseOverCheck({@name}Image,radioSelectImage,radioUnSelectImage,radioSelectHoverImage,radioUnSelectHoverImage)" onmouseout="mouseOutCheck({@name}Image,radioSelectImage,radioUnSelectImage,radioSelectHoverImage,radioUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>r_unselect.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="{@label}Label" />
- </div>
- <br />
- </xsl:for-each>
- <script>var languageFilter = new Selector('languageSpan');languageFilter.register(codeBlockHandler); languageFilter.register(styleSheetHandler); languageFilter.register(persistenceHandler);languageFilter.register(languageHandler);toggleLanguage('languageSpan', 'x-lang', 'CSharp');toggleInlineStyle('cs');</script>
- </div>
- </xsl:template>
-
-
-
- <!-- image links
-current ndppick XSLT behavior:
-expandAllImage - all
-dropDownImage - not namespace or derivedTypeList
-dropDownHoverImage - not namespace or derivedTypeList
-collapseImage - all
-expandImage - all
-collapseAllImage - all
-copyImage - overview (not namespace); list (only overload lists ctor, method, prop)
-copyHoverImage - overview (not namespace); list (only overload lists ctor, method, prop)
- -->
- <xsl:template name="commonImages">
- <img id="collapseImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="collapseImage" />
- </img>
- <img id="expandImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>expand_all.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="expandImage" />
- </img>
- <img id="collapseAllImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>collall.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="collapseAllImage" />
- </img>
- <img id="expandAllImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>expall.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="expandAllImage" />
- </img>
- <img id="dropDownImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_unselected.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="dropDownImage" />
- </img>
- <img id="dropDownHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_unselected_hover.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="dropDownHoverImage" />
- </img>
- <img id="copyImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>copycode.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="copyImage" />
- </img>
- <img id="copyHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>copycodeHighlight.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="copyHoverImage" />
- </img>
- <img id="checkBoxSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <img id="checkBoxUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_unselected.gif</parameter>
- </includeAttribute>
- </img>
- <img id="checkBoxSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="checkBoxUnSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_unselected_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="radioSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>r_select.gif</parameter>
- </includeAttribute>
- </img>
- <img id="radioUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>r_unselect.gif</parameter>
- </includeAttribute>
- </img>
- <img id="radioSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>r_select_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="radioUnSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>r_unselect_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="curvedLeftSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_sel_lft_cnr.gif</parameter>
- </includeAttribute>
- </img>
- <img id="curvedRightSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_sel_rt_cnr.gif</parameter>
- </includeAttribute>
- </img>
- <img id="curvedLeftUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_unsel_lft_cnr.gif</parameter>
- </includeAttribute>
- </img>
- <img id="curvedRightUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_unsel_rt_cnr.gif</parameter>
- </includeAttribute>
- </img>
- <img id="gradLeftSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_sel_lft_grad.gif</parameter>
- </includeAttribute>
- </img>
- <img id="gradRightSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_sel_rt_grad.gif</parameter>
- </includeAttribute>
- </img>
- <img id="gradLeftUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_unsel_lft_grad.gif</parameter>
- </includeAttribute>
- </img>
- <img id="gradRightUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>tab_unsel_rt_grad.gif</parameter>
- </includeAttribute>
- </img>
- <img id="twirlSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_selected.gif</parameter>
- </includeAttribute>
- </img>
- <img id="twirlUnSelectImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_unselected.gif</parameter>
- </includeAttribute>
- </img>
- <img id="twirlSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_selected_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="twirlUnSelectHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_unselected_hover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="NSRBottomImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>NSRbottomgrad.gif</parameter>
- </includeAttribute>
- </img>
- </xsl:template>
-
-
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="globalTemplates.xsl"/> + <xsl:template name="upperBodyStuff"> + <input type="hidden" id="userDataCache" class="userDataStyle"/> + <input type="hidden" id="hiddenScrollOffset"/> + + <xsl:call-template name="commonImages"/> + + <xsl:call-template name="bodyHeader"/> + + </xsl:template> + + <xsl:template name="bodyHeader"> + <div id="header"> + <xsl:call-template name="bodyHeaderTopTable"/> + </div> + </xsl:template> + + <xsl:template name="bodyHeaderTopTable"> + <table id="topTable"> + <tr id="headerTableRow3"> + <td> + <xsl:call-template name="headerRowLinks"/> + </td> + </tr> + <tr id="headerTableRow1"> + <td align="left"> + <span id="runningHeaderText"> + <xsl:call-template name="runningHeader" /> + </span> + </td> + </tr> + <tr id="headerTableRow2"> + <td align="left"> + <span id="nsrTitle"> + <xsl:call-template name="topicTitleDecorated"/> + </span> + </td> + </tr> + <tr> + <td class="nsrBottom"> + <includeAttribute name="background" item="iconPath"> + <parameter>NSRbottomgrad.gif</parameter> + </includeAttribute> + </td> + </tr> + </table> + </xsl:template> + + <xsl:template name="headerRowLinks"> + <!-- most mref topics get autogenerated see also links to see also section --> + + <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0"> + <img ID="toggleAllImage" class="toggleAll"> + <includeAttribute name="src" item="iconPath"> + <parameter>collall.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="collapseAllImage" /> + </img> + <label id="collapseAllLabel" for="toggleAllImage" style="display: none;"> + <include item="collapseAll"/> + </label> + <label id="expandAllLabel" for="toggleAllImage" style="display: none;"> + <include item="expandAll"/> + </label> + <xsl:text> </xsl:text> + </span> + + <xsl:if test="$languages != 'false'"> + <xsl:if test="count($languages/language) > 0"> + <xsl:text> | </xsl:text> + <xsl:call-template name="languageFilterToolTip"/> + <xsl:call-template name="languageSpan"/> + </xsl:if> + </xsl:if> + + + <!-- include Example link if there's an Example section --> + <xsl:choose> + <xsl:when test="$examplesSection"> + <xsl:text> | </xsl:text> + <a href="#exampleToggle" onclick="OpenSection(exampleToggle)"> + <xsl:text/> + <include item="Example"/> + <xsl:text/> + </a> + </xsl:when> + </xsl:choose> + + <!-- class, structure, and interface About topics get link to Members topic (unless the doc model has the all members lists on the type topic) --> + <xsl:choose> + <xsl:when test="normalize-space(/document/reference/topicdata/@allMembersTopicId)"> + <xsl:text> | </xsl:text> + <referenceLink target="{/document/reference/topicdata/@allMembersTopicId}"> + <include item="allMembersTitle"/> + </referenceLink> + </xsl:when> + <xsl:when test="count(/document/reference/elements/element) > 0 and ($subgroup='class' or $subgroup='structure' or $subgroup='interface')"> + <xsl:text> | </xsl:text> + <a href="#membersToggle" onclick="OpenSection(membersToggle)"> + <xsl:text/> + <include item="allMembersTitle"/> + <xsl:text/> + </a> + </xsl:when> + </xsl:choose> + + <xsl:if test="$hasSeeAlsoSection"> + <xsl:text> | </xsl:text> + <a href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)"> + <xsl:text/> + <include item="SeeAlso"/> + <xsl:text/> + </a> + </xsl:if> + + <!--all members only --> + <xsl:if test="$subgroup='members'"> + <xsl:variable name="visibility"> + <xsl:for-each select="/document/reference/elements/element"> + <xsl:choose> + <xsl:when test="memberdata[@visibility = 'public']"> + <xsl:choose> + <xsl:when test="not(apidata[@subsubgroup])"> + <xsl:value-of select="concat('Public', apidata/@subgroup, ';')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Public', apidata/@subsubgroup, ';')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="memberdata[@visibility = 'private'] and not(proceduredata[@virtual = 'true'])"> + <xsl:choose> + <xsl:when test="not(apidata[@subsubgroup])"> + <xsl:value-of select="concat('Private', apidata/@subgroup, ';')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Private', apidata/@subsubgroup, ';')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="memberdata[@visibility = 'private'] and proceduredata[@virtual = 'true']"> + explicit; + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="not(apidata[@subsubgroup])"> + <xsl:value-of select="concat('Protected', apidata/@subgroup, ';')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Protected', apidata/@subsubgroup, ';')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:variable> + + + <xsl:for-each select="/document/reference/elements/element"> + <xsl:variable name="subgroup" select="apidata/@subgroup"/> + <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" /> + <xsl:if test="not(preceding-sibling::element[apidata[@subgroup=$subgroup]]) and not($subsubgroup='attachedProperty' or $subsubgroup='attachedEvent')"> + <xsl:if test="not($subsubgroup)"> + <xsl:variable name="elementVisibility"> + <xsl:choose> + <xsl:when test="contains($visibility, concat('Public', $subgroup))"> + <xsl:value-of select="concat('Public', $subgroup)"/> + </xsl:when> + <xsl:when test="contains($visibility, concat('Private', $subgroup))"> + <xsl:value-of select="concat('Private', $subgroup)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Protected', $subgroup)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- add a link to the member list section for this subgroup --> + <a href="#{$elementVisibility}Toggle" onclick="OpenSection({$elementVisibility}Toggle)"> + <xsl:text/> + <include item="{$subgroup}Group"/> + <xsl:text/> + </a>  + </xsl:if> + </xsl:if> + <xsl:if test="not(preceding-sibling::element[apidata[@subsubgroup=$subsubgroup]]) and ($subsubgroup='attachedProperty' or $subsubgroup='attachedEvent')"> + <xsl:variable name="elementVisibility"> + <xsl:choose> + <xsl:when test="contains($visibility, concat('Public', $subsubgroup))"> + <xsl:value-of select="concat('Public', $subsubgroup)"/> + </xsl:when> + <xsl:when test="contains($visibility, concat('Private', $subsubgroup))"> + <xsl:value-of select="concat('Private', $subsubgroup)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Protected', $subsubgroup)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- add a link to the member list section for this subgroup --> + <a href="#{$elementVisibility}Toggle" onclick="OpenSection({$elementVisibility}Toggle)"> + <xsl:text/> + <include item="{$subsubgroup}Group"/> + <xsl:text/> + </a>  + </xsl:if> + </xsl:for-each> + + <xsl:if test="contains($visibility, 'explicit')"> + <a href="#ExplicitInterfaceImplementationToggle" onclick="OpenSection(ExplicitInterfaceImplementationSection)"> + <xsl:text/> + <include item="ExplicitInterfaceImplementation"/> + <xsl:text/> + </a>  + </xsl:if> + </xsl:if> + + </xsl:template> + + <xsl:template name="bodyHeaderBottomTable"> + <table id="bottomTable" cellspacing="0" cellpadding="0"> + <tr> + <td> + <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0"> + <img ID="toggleAllImage" class="toggleAll"> + <includeAttribute name="src" item="iconPath"> + <parameter>collall.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="collapseAllImage" /> + </img> + <label id="collapseAllLabel" for="toggleAllImage" style="display: none;"> + <include item="collapseAll"/> + </label> + <label id="expandAllLabel" for="toggleAllImage" style="display: none;"> + <include item="expandAll"/> + </label> + <xsl:text> </xsl:text> + </span> + + <xsl:text> </xsl:text> + + <xsl:call-template name="languageFilterToolTip"/> + + </td> + </tr> + </table> + </xsl:template> + + <xsl:template name="languageFilterToolTip"> + <span id="languageFilterToolTip" style="cursor:default;" onmouseover="languageFilterImage.src=dropDownHoverImage.src;" onmouseout="languageFilterImage.src=dropDownImage.src;" tabindex="0"> + <img id="languageFilterImage"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_unselected.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="dropDownImage" /> + </img> + <xsl:for-each select="$languages/language"> + <label id="{@name}Label" for="languageFilterImage" style="display: none;"> + <include item="languageFilter"> + <parameter> + <include item="{@label}Label"/> + </parameter> + </include> + </label> + </xsl:for-each> + </span> + </xsl:template> + + <xsl:template name="membersOptionsSpan"> + <div id="membersOptionsSpan"> + <input id="inheritedCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/> + <label class="membersOptionsFilter" for="inheritedCheckbox"> + <include item="includeInheritedMembers"/> + </label> + <br/> + <input id="protectedCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/> + <label class="membersOptionsFilter" for="protectedCheckbox"> + <include item="includeProtectedMembers"/> + </label> + <br/> + <input id="netcfCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/> + <label class="membersOptionsFilter" for="netcfCheckbox"> + <include item="netcfMembersOnly"/> + </label> + <br/> + <!-- add a checkbox for XNA filtering --> + <input id="netXnaCheckbox" type='checkbox' name="membersOptionsFilter" onClick="SetMembersOptions(this)"/> + <label class="membersOptionsFilter" for="netXnaCheckbox"> + <include item="netXnaMembersOnly"/> + </label> + </div> + </xsl:template> + + <xsl:template name="membersOptionsFilterToolTip"> + <span id="membersOptionsFilterToolTip" style="cursor:default;" onmouseover="membersOptionsFilterImage.src=dropDownHoverImage.src;" onmouseout="membersOptionsFilterImage.src=dropDownImage.src;" tabindex="0"> + <img id="membersOptionsFilterImage"> + <includeAttribute name="src" item="iconPath"> + <parameter>drpdown.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="dropDownImage" /> + </img> + <label id="showAllMembersLabel" for="membersOptionsFilterImage" style="display: none;"> + <include item="membersOptionsShowAll"/> + </label> + <label id="filteredMembersLabel" for="membersOptionsFilterImage" style="display: none;"> + <include item="membersOptionsFiltered"/> + </label> + </span> + </xsl:template> + + <xsl:template name="languageSpan"> + <div id="languageSpan"> + <xsl:for-each select="$languages/language"> + <div id="{@name}" onclick="languageFilter.changeLanguage(data, '{@name}', '{@style}');"> + <img id="{@name}Image" onmouseover="mouseOverCheck({@name}Image,radioSelectImage,radioUnSelectImage,radioSelectHoverImage,radioUnSelectHoverImage)" onmouseout="mouseOutCheck({@name}Image,radioSelectImage,radioUnSelectImage,radioSelectHoverImage,radioUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>r_unselect.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="{@label}Label" /> + </div> + <br /> + </xsl:for-each> + <script>var languageFilter = new Selector('languageSpan');languageFilter.register(codeBlockHandler); languageFilter.register(styleSheetHandler); languageFilter.register(persistenceHandler);languageFilter.register(languageHandler);toggleLanguage('languageSpan', 'x-lang', 'CSharp');toggleInlineStyle('cs');</script> + </div> + </xsl:template> + + + + <!-- image links +current ndppick XSLT behavior: +expandAllImage - all +dropDownImage - not namespace or derivedTypeList +dropDownHoverImage - not namespace or derivedTypeList +collapseImage - all +expandImage - all +collapseAllImage - all +copyImage - overview (not namespace); list (only overload lists ctor, method, prop) +copyHoverImage - overview (not namespace); list (only overload lists ctor, method, prop) + --> + <xsl:template name="commonImages"> + <img id="collapseImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="collapseImage" /> + </img> + <img id="expandImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>expand_all.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="expandImage" /> + </img> + <img id="collapseAllImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>collall.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="collapseAllImage" /> + </img> + <img id="expandAllImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>expall.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="expandAllImage" /> + </img> + <img id="dropDownImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_unselected.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="dropDownImage" /> + </img> + <img id="dropDownHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_unselected_hover.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="dropDownHoverImage" /> + </img> + <img id="copyImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>copycode.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="copyImage" /> + </img> + <img id="copyHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>copycodeHighlight.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="copyHoverImage" /> + </img> + <img id="checkBoxSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <img id="checkBoxUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_unselected.gif</parameter> + </includeAttribute> + </img> + <img id="checkBoxSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected_hover.gif</parameter> + </includeAttribute> + </img> + <img id="checkBoxUnSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_unselected_hover.gif</parameter> + </includeAttribute> + </img> + <img id="radioSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>r_select.gif</parameter> + </includeAttribute> + </img> + <img id="radioUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>r_unselect.gif</parameter> + </includeAttribute> + </img> + <img id="radioSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>r_select_hover.gif</parameter> + </includeAttribute> + </img> + <img id="radioUnSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>r_unselect_hover.gif</parameter> + </includeAttribute> + </img> + <img id="curvedLeftSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_sel_lft_cnr.gif</parameter> + </includeAttribute> + </img> + <img id="curvedRightSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_sel_rt_cnr.gif</parameter> + </includeAttribute> + </img> + <img id="curvedLeftUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_unsel_lft_cnr.gif</parameter> + </includeAttribute> + </img> + <img id="curvedRightUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_unsel_rt_cnr.gif</parameter> + </includeAttribute> + </img> + <img id="gradLeftSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_sel_lft_grad.gif</parameter> + </includeAttribute> + </img> + <img id="gradRightSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_sel_rt_grad.gif</parameter> + </includeAttribute> + </img> + <img id="gradLeftUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_unsel_lft_grad.gif</parameter> + </includeAttribute> + </img> + <img id="gradRightUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>tab_unsel_rt_grad.gif</parameter> + </includeAttribute> + </img> + <img id="twirlSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_selected.gif</parameter> + </includeAttribute> + </img> + <img id="twirlUnSelectImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_unselected.gif</parameter> + </includeAttribute> + </img> + <img id="twirlSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_selected_hover.gif</parameter> + </includeAttribute> + </img> + <img id="twirlUnSelectHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_unselected_hover.gif</parameter> + </includeAttribute> + </img> + <img id="NSRBottomImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>NSRbottomgrad.gif</parameter> + </includeAttribute> + </img> + </xsl:template> + + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/hana/transforms/main_conceptual.xsl b/tools/Sandcastle/Presentation/hana/transforms/main_conceptual.xsl index 1ef53a4..9c67ca5 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/main_conceptual.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/main_conceptual.xsl @@ -1,455 +1,455 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:output method="xml" indent="no" encoding="utf-8" />
-
- <xsl:include href="htmlBody.xsl" />
- <xsl:include href="utilities_dduexml.xsl" />
-
- <xsl:variable name="hasSeeAlsoSection" select="boolean(count(/document/topic/*/ddue:relatedTopics/*[local-name()!='sampleRef']) > 0)"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/topic/*/ddue:codeExample[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="normalize-space(/document/topic/*/ddue:codeExample)
- or normalize-space(/document/topic/*//ddue:snippets/ddue:snippet)
- or /document/topic/ddue:developerSampleDocument/ddue:relatedTopics/ddue:sampleRef[@srcID]" />
- <xsl:variable name="group" select="/document/reference/apidata/@group" />
- <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" />
- <xsl:variable name="pseudo" select="boolean(/document/reference/apidata[@pseudo='true'])"/>
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
- <xsl:param name="metadata" value="false" />
- <xsl:param name="languages">false</xsl:param>
-
- <xsl:template match="/document">
- <html>
- <head>
- <META NAME="save" CONTENT="history"/>
- <title>
- <xsl:call-template name="topicTitlePlain"/>
- </title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
- <xsl:call-template name="upperBodyStuff"/>
- <xsl:call-template name="main"/>
- <script type="text/javascript">
- var data = new DataStore('docs');
- registerEventHandler(window, 'load', function() {languageFilter.select(data)});
- </script>
- </body>
- </html>
- </xsl:template>
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- <link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>EventUtilities.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>SplitScreen.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>Dropdown.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>script_manifold.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>LanguageFilter.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>DataStore.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>CommonUtilities.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>MemberFilter.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template name="insertMetadata">
- <xsl:if test="$metadata='true'">
- <xml>
- <!-- mshelp metadata -->
-
- <!-- insert toctitle -->
- <MSHelp:TOCTitle Title="{/document/metadata/tableOfContentsTitle}" />
-
- <!-- link index -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
-
- <!-- authored K -->
- <xsl:variable name="docset" select="translate(/document/metadata/attribute[@name='DocSet'][1]/text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/>
- <xsl:for-each select="/document/metadata/keyword[@index='K']">
- <xsl:variable name="nestedKeywordText">
- <xsl:call-template name="nestedKeywordText"/>
- </xsl:variable>
- <MSHelp:Keyword Index="K">
- <xsl:choose>
- <xsl:when test="normalize-space($docset)='' or contains(text(),'[')">
- <xsl:attribute name="Term">
- <xsl:value-of select="concat(text(),$nestedKeywordText)"/>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="Term" item="kIndexTermWithTechQualifier">
- <parameter><xsl:value-of select="text()"/></parameter>
- <parameter><xsl:value-of select="$docset"/></parameter>
- <parameter><xsl:value-of select="$nestedKeywordText"/></parameter>
- </includeAttribute>
- </xsl:otherwise>
- </xsl:choose>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored F -->
- <xsl:for-each select="/document/metadata/keyword[@index='F']">
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='F']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored B -->
- <xsl:for-each select="/document/metadata/keyword[@index='B']">
- <MSHelp:Keyword Index="B">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='B']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- Topic version -->
- <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" />
-
- <!-- Asset ID -->
- <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" />
-
- <!-- Abstract -->
- <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" />
- <xsl:choose>
- <xsl:when test="string-length($abstract) > 254">
- <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" />
- </xsl:when>
- <xsl:when test="string-length($abstract) > 0">
- <MSHelp:Attr Name="Abstract" Value="{$abstract}" />
- </xsl:when>
- </xsl:choose>
-
- <!-- authored attributes -->
- <xsl:for-each select="/document/metadata/attribute">
- <MSHelp:Attr Name="{@name}" Value="{text()}" />
- </xsl:for-each>
-
- <!-- TopicType attribute -->
- <xsl:for-each select="/document/topic/*[1]">
- <MSHelp:Attr Name="TopicType">
- <includeAttribute name="Value" item="TT_{local-name()}"/>
- </MSHelp:Attr>
- </xsl:for-each>
-
- <!-- Locale attribute -->
- <MSHelp:Attr Name="Locale">
- <includeAttribute name="Value" item="locale"/>
- </MSHelp:Attr>
-
- </xml>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="nestedKeywordText">
- <xsl:for-each select="keyword[@index='K']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:template>
-
- <!-- document body -->
-
- <!-- Title in topic -->
-
- <xsl:template name="topicTitleDecorated">
- <xsl:call-template name="topicTitle" />
- </xsl:template>
-
- <xsl:template name="topicTitlePlain">
- <xsl:call-template name="topicTitle" />
- </xsl:template>
-
- <xsl:template name="topicTitle">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/metadata/title)">
- <xsl:value-of select="normalize-space(/document/metadata/title)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="mainSection">
-
- <div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/>
- <xsl:call-template name="head" />
- <xsl:call-template name="body" />
- <xsl:call-template name="foot" />
- </div>
- </div>
-
- </xsl:template>
-
- <xsl:template name="head">
- <include item="header" />
- </xsl:template>
-
- <xsl:template name="body">
- <xsl:apply-templates select="topic" />
- </xsl:template>
-
- <!-- sections that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:title">
- <!-- don't print title -->
- </xsl:template>
-
- <xsl:template match="ddue:introduction">
- <xsl:apply-templates select="@address" />
- <div class="introduction">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:parameters">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'parameters'"/>
- <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:returnValue">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'returnValue'"/>
- <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:exceptions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:relatedSections">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'relatedSections'"/>
- <xsl:with-param name="title"><include item="relatedSectionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:relatedTopics">
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'"/>
- <xsl:with-param name="title">
- <include item="relatedTopicsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
-
- <!-- Concepts sub-section -->
- <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoConcepts"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Reference sub-section -->
- <xsl:if test="normalize-space(ddue:codeEntityReference)">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoReference"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Other Resources sub-section -->
- <xsl:if test="ddue:externalLink">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoOtherResources"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'externalLink'">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <!-- create Example section for the first codeExample node -->
- <xsl:if test="not(preceding-sibling::ddue:codeExample) and ../ddue:codeExample[normalize-space(.)!='']">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title">
- <include item="Example" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- <!-- if there are additional codeExample nodes, put them inside this section -->
- <xsl:for-each select="following-sibling::ddue:codeExample">
- <xsl:apply-templates />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeReference">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <xsl:variable name="runningHeaderText">
- <xsl:value-of select="/document/metadata/runningHeaderText/@uscid"/>
- </xsl:variable>
- <include item="{$runningHeaderText}" />
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <div id="footer">
- <div class="footerLine">
- <img width="100%" height="3px">
- <includeAttribute name="src" item="iconPath">
- <parameter>footer.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="footerImage" />
- </img>
- </div>
-
- <include item="footer">
- <parameter>
- <xsl:value-of select="$key"/>
- </parameter>
- <parameter>
- <xsl:call-template name="topicTitlePlain"/>
- </parameter>
- </include>
- </div>
- </xsl:template>
-
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:output method="xml" indent="no" encoding="utf-8" /> + + <xsl:include href="htmlBody.xsl" /> + <xsl:include href="utilities_dduexml.xsl" /> + + <xsl:variable name="hasSeeAlsoSection" select="boolean(count(/document/topic/*/ddue:relatedTopics/*[local-name()!='sampleRef']) > 0)"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/topic/*/ddue:codeExample[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="normalize-space(/document/topic/*/ddue:codeExample) + or normalize-space(/document/topic/*//ddue:snippets/ddue:snippet) + or /document/topic/ddue:developerSampleDocument/ddue:relatedTopics/ddue:sampleRef[@srcID]" /> + <xsl:variable name="group" select="/document/reference/apidata/@group" /> + <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" /> + <xsl:variable name="pseudo" select="boolean(/document/reference/apidata[@pseudo='true'])"/> + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + <xsl:param name="metadata" value="false" /> + <xsl:param name="languages">false</xsl:param> + + <xsl:template match="/document"> + <html> + <head> + <META NAME="save" CONTENT="history"/> + <title> + <xsl:call-template name="topicTitlePlain"/> + </title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + <xsl:call-template name="upperBodyStuff"/> + <xsl:call-template name="main"/> + <script type="text/javascript"> + var data = new DataStore('docs'); + registerEventHandler(window, 'load', function() {languageFilter.select(data)}); + </script> + </body> + </html> + </xsl:template> + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + <link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" /> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>EventUtilities.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>SplitScreen.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>Dropdown.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>script_manifold.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>LanguageFilter.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>DataStore.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>CommonUtilities.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>MemberFilter.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + </xsl:template> + + <xsl:template name="insertMetadata"> + <xsl:if test="$metadata='true'"> + <xml> + <!-- mshelp metadata --> + + <!-- insert toctitle --> + <MSHelp:TOCTitle Title="{/document/metadata/tableOfContentsTitle}" /> + + <!-- link index --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + + <!-- authored K --> + <xsl:variable name="docset" select="translate(/document/metadata/attribute[@name='DocSet'][1]/text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/> + <xsl:for-each select="/document/metadata/keyword[@index='K']"> + <xsl:variable name="nestedKeywordText"> + <xsl:call-template name="nestedKeywordText"/> + </xsl:variable> + <MSHelp:Keyword Index="K"> + <xsl:choose> + <xsl:when test="normalize-space($docset)='' or contains(text(),'[')"> + <xsl:attribute name="Term"> + <xsl:value-of select="concat(text(),$nestedKeywordText)"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="Term" item="kIndexTermWithTechQualifier"> + <parameter><xsl:value-of select="text()"/></parameter> + <parameter><xsl:value-of select="$docset"/></parameter> + <parameter><xsl:value-of select="$nestedKeywordText"/></parameter> + </includeAttribute> + </xsl:otherwise> + </xsl:choose> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored F --> + <xsl:for-each select="/document/metadata/keyword[@index='F']"> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='F']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored B --> + <xsl:for-each select="/document/metadata/keyword[@index='B']"> + <MSHelp:Keyword Index="B"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='B']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- Topic version --> + <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" /> + + <!-- Asset ID --> + <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" /> + + <!-- Abstract --> + <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" /> + <xsl:choose> + <xsl:when test="string-length($abstract) > 254"> + <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" /> + </xsl:when> + <xsl:when test="string-length($abstract) > 0"> + <MSHelp:Attr Name="Abstract" Value="{$abstract}" /> + </xsl:when> + </xsl:choose> + + <!-- authored attributes --> + <xsl:for-each select="/document/metadata/attribute"> + <MSHelp:Attr Name="{@name}" Value="{text()}" /> + </xsl:for-each> + + <!-- TopicType attribute --> + <xsl:for-each select="/document/topic/*[1]"> + <MSHelp:Attr Name="TopicType"> + <includeAttribute name="Value" item="TT_{local-name()}"/> + </MSHelp:Attr> + </xsl:for-each> + + <!-- Locale attribute --> + <MSHelp:Attr Name="Locale"> + <includeAttribute name="Value" item="locale"/> + </MSHelp:Attr> + + </xml> + </xsl:if> + </xsl:template> + + <xsl:template name="nestedKeywordText"> + <xsl:for-each select="keyword[@index='K']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:template> + + <!-- document body --> + + <!-- Title in topic --> + + <xsl:template name="topicTitleDecorated"> + <xsl:call-template name="topicTitle" /> + </xsl:template> + + <xsl:template name="topicTitlePlain"> + <xsl:call-template name="topicTitle" /> + </xsl:template> + + <xsl:template name="topicTitle"> + <xsl:choose> + <xsl:when test="normalize-space(/document/metadata/title)"> + <xsl:value-of select="normalize-space(/document/metadata/title)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- main window --> + + <xsl:template name="main"> + <div id="mainSection"> + + <div id="mainBody"> + <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/> + <xsl:call-template name="head" /> + <xsl:call-template name="body" /> + <xsl:call-template name="foot" /> + </div> + </div> + + </xsl:template> + + <xsl:template name="head"> + <include item="header" /> + </xsl:template> + + <xsl:template name="body"> + <xsl:apply-templates select="topic" /> + </xsl:template> + + <!-- sections that behave differently in conceptual and reference --> + + <xsl:template match="ddue:title"> + <!-- don't print title --> + </xsl:template> + + <xsl:template match="ddue:introduction"> + <xsl:apply-templates select="@address" /> + <div class="introduction"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="ddue:parameters"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'parameters'"/> + <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:returnValue"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'returnValue'"/> + <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:exceptions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:relatedSections"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'relatedSections'"/> + <xsl:with-param name="title"><include item="relatedSectionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:relatedTopics"> + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'"/> + <xsl:with-param name="title"> + <include item="relatedTopicsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + + <!-- Concepts sub-section --> + <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoConcepts"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Reference sub-section --> + <xsl:if test="normalize-space(ddue:codeEntityReference)"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoReference"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Other Resources sub-section --> + <xsl:if test="ddue:externalLink"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoOtherResources"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'externalLink'"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <!-- create Example section for the first codeExample node --> + <xsl:if test="not(preceding-sibling::ddue:codeExample) and ../ddue:codeExample[normalize-space(.)!='']"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'"/> + <xsl:with-param name="title"> + <include item="Example" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + <!-- if there are additional codeExample nodes, put them inside this section --> + <xsl:for-each select="following-sibling::ddue:codeExample"> + <xsl:apply-templates /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeReference"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template name="runningHeader"> + <xsl:variable name="runningHeaderText"> + <xsl:value-of select="/document/metadata/runningHeaderText/@uscid"/> + </xsl:variable> + <include item="{$runningHeaderText}" /> + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <div id="footer"> + <div class="footerLine"> + <img width="100%" height="3px"> + <includeAttribute name="src" item="iconPath"> + <parameter>footer.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="footerImage" /> + </img> + </div> + + <include item="footer"> + <parameter> + <xsl:value-of select="$key"/> + </parameter> + <parameter> + <xsl:call-template name="topicTitlePlain"/> + </parameter> + </include> + </div> + </xsl:template> + + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/main_reference.xsl b/tools/Sandcastle/Presentation/hana/transforms/main_reference.xsl index e508966..57d36dc 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/main_reference.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/main_reference.xsl @@ -1,447 +1,447 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <!-- stuff specific to comments authored in DDUEXML -->
-
- <xsl:include href="utilities_reference.xsl" />
- <xsl:include href="utilities_dduexml.xsl" />
- <xsl:include href="htmlBody.xsl"/>
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" />
-
- <xsl:variable name="abstractSummary">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:summary">
- <xsl:apply-templates select="." mode="abstract" />
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:variable name="hasSeeAlsoSection"
- select="boolean(
- (count(/document/comments/ddue:dduexml/ddue:relatedTopics/*) > 0) or
- ($group='type' or $group='member' or $group='list')
- )"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)" />
- <xsl:template name="body">
-
- <!--internalOnly boilerplate -->
- <xsl:call-template name="internalOnly"/>
-
- <!-- obsolete boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:call-template name="obsoleteSection" />
- </xsl:if>
-
- <!-- HostProtectionAttribute boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <p>
- <include item="hostProtectionAttributeLong">
- <parameter>
- <xsl:value-of select="concat($subgroup, 'Lower')"/>
- </parameter>
- <parameter>
- <b>
- <xsl:for-each select="/document/reference/attributes/attribute[type[@api='T:System.Security.Permissions.HostProtectionAttribute']]/assignment">
- <xsl:value-of select="@name"/>
- <xsl:if test="position() != last()">
- <xsl:text> | </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </b>
- </parameter>
- </include>
- </p>
- </xsl:if>
-
- <!-- summary -->
- <span data="authoredSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[1]" />
- </span>
- <xsl:if test="$group='namespace'">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" />
- </xsl:if>
-
- <!-- assembly information -->
- <xsl:if test="not($group='list' or $group='root' or $group='namespace')">
- <xsl:call-template name="requirementsInfo"/>
- </xsl:if>
-
- <!-- syntax -->
- <xsl:if test="not($group='list' or $group='namespace')">
- <xsl:apply-templates select="/document/syntax" />
- </xsl:if>
-
- <!-- show authored Dependency Property Information section for properties -->
- <xsl:if test="$subgroup='property'">
- <xsl:apply-templates select="//ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"/>
- </xsl:if>
-
- <!-- show authored Routed Event Information section for events -->
- <xsl:if test="$subgroup='event'">
- <xsl:apply-templates select="//ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"/>
- </xsl:if>
-
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$group='root'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- <xsl:when test="$subgroup='DerivedTypeList'">
- <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/reference/elements" mode="member" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- exceptions -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" />
- <!-- remarks -->
- <xsl:if test="not($group='namespace')">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks[1]" />
- </xsl:if>
- <!-- example -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" />
- <!-- permissions -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:permissions" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <!-- other comment sections -->
- <xsl:if test="$subgroup='class' or $subgroup='structure'">
- <xsl:call-template name="threadSafety" />
- </xsl:if>
- <xsl:if test="not($group='list' or $group='namespace' or $group='root')">
- <!--platforms-->
- <xsl:apply-templates select="/document/reference/platforms" />
- <!--versions-->
- <xsl:apply-templates select="/document/reference/versions" />
- </xsl:if>
- <!-- see also -->
- <xsl:call-template name="seeAlsoSection"/>
-
- </xsl:template>
-
- <xsl:template name="obsoleteSection">
- <p>
- <include item="ObsoleteBoilerPlate">
- <parameter>
- <xsl:value-of select="$subgroup"/>
- </parameter>
- </include>
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity">
- <xsl:text> </xsl:text>
- <include item="nonobsoleteAlternative">
- <parameter><xsl:apply-templates select="ddue:codeEntityReference" /></parameter>
- </include>
- </xsl:for-each>
- </p>
- </xsl:template>
-
- <xsl:template name="internalOnly">
- <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly or /document/reference/containers/ddue:internalOnly">
- <div id="internalonly" class="seeAlsoNoToggleSection">
- <p/>
- <include item="internalOnly" />
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <span data="authoredParameterSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
- </span>
- </xsl:template>
-
- <xsl:template match="returns">
- <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue)">
- <div id="returns">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include>
- <xsl:attribute name="item">
- <xsl:value-of select="$subgroup" />
- <xsl:text>ValueTitle</xsl:text>
- </xsl:attribute>
- </include>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="getReturnsDescription" />
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <xsl:choose>
- <xsl:when test="type">
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="type/@api" />
- <xsl:with-param name="qualified" select="true()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="*[1]" />
- </xsl:otherwise>
- </xsl:choose>
- <br/>
- <span data="authoredValueSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue" />
- </span>
- </xsl:template>
-
- <xsl:template match="templates">
- <div id="genericParameters">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="template">
- <xsl:variable name="parameterName" select="@name" />
- <dl paramName="{$parameterName}">
- <dt>
- <span class="parameter"><xsl:value-of select="$parameterName"/></span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]/ddue:content" />
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <span data="memberAuthoredSummary">
- <xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" />
- </span>
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
- <xsl:choose>
- <xsl:when test="ddue:internalOnly">
- <include item="infraStructure" />
- </xsl:when>
- <xsl:when test="count(element) > 0">
- <xsl:variable name="internal">
- <xsl:for-each select="element">
- <xsl:if test="not(ddue:internalOnly)">
- <xsl:text>no</xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="not(normalize-space($internal))">
- <include item="infraStructure" />
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="getOverloadSummary">
-
- </xsl:template>
-
- <xsl:template name="getOverloadSections">
-
- </xsl:template>
-
- <xsl:template match="syntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'syntax'" />
- <xsl:with-param name="title">
- <include item="syntaxTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="syntaxBlocks" />
-
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/templates" />
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/reference/returns" />
- <xsl:apply-templates select="/document/reference/implements" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
-
- <!-- DDUEXML elements that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:exceptions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="ddue:exception">
- <div class="listSection">
- <table class="members" width="100%" cellspacing="0" frame="lhs">
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="ddue:exception">
- <tr>
- <td>
- <xsl:apply-templates select="ddue:codeEntityReference" />
- </td>
- <td>
- <xsl:apply-templates select="ddue:content" />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:permissions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'permissions'" />
- <xsl:with-param name="title">
- <include item="permissionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <ul>
- <xsl:for-each select="ddue:permission">
- <li>
- <xsl:apply-templates select="ddue:codeEntityReference" />
- <xsl:text> </xsl:text>
- <xsl:apply-templates select="ddue:content" />
- </li>
- </xsl:for-each>
- </ul>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <include item="runningHeaderText" />
- </xsl:template>
-
- <xsl:template name="memberIntro">
- <xsl:if test="$subgroup='members'">
- <p>
- <xsl:apply-templates select="/document/reference/containers/ddue:summary"/>
- </p>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <!-- if there are exposed members, show a boilerplate intro p -->
- <xsl:variable name="introTextItemId">
- <xsl:choose>
- <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when>
- <xsl:otherwise>exposedMembersTableText</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <p>
- <include item="{$introTextItemId}">
- <parameter>
- <referenceLink target="{$typeId}" />
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text>
- </parameter>
- </include>
- </p>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="mshelpCodelangAttributes">
-
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:snippets/ddue:snippet">
-
- <xsl:if test="not(@language=preceding::*/@language)">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'VBScript' or @language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" >
- <xsl:text>kbLangVB</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" >
- <xsl:text>kbLangCPP</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'">
- <xsl:text>kbJScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xml</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$codeLang='other'" />
- <xsl:otherwise>
- <xsl:call-template name="codeLang">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:codeEntityReference" mode="abstract">
- <xsl:call-template name="subString">
- <xsl:with-param name="name" select="." />
- </xsl:call-template>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <!-- stuff specific to comments authored in DDUEXML --> + + <xsl:include href="utilities_reference.xsl" /> + <xsl:include href="utilities_dduexml.xsl" /> + <xsl:include href="htmlBody.xsl"/> + + <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" /> + + <xsl:variable name="abstractSummary"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:summary"> + <xsl:apply-templates select="." mode="abstract" /> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="hasSeeAlsoSection" + select="boolean( + (count(/document/comments/ddue:dduexml/ddue:relatedTopics/*) > 0) or + ($group='type' or $group='member' or $group='list') + )"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)" /> + <xsl:template name="body"> + + <!--internalOnly boilerplate --> + <xsl:call-template name="internalOnly"/> + + <!-- obsolete boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:call-template name="obsoleteSection" /> + </xsl:if> + + <!-- HostProtectionAttribute boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <p> + <include item="hostProtectionAttributeLong"> + <parameter> + <xsl:value-of select="concat($subgroup, 'Lower')"/> + </parameter> + <parameter> + <b> + <xsl:for-each select="/document/reference/attributes/attribute[type[@api='T:System.Security.Permissions.HostProtectionAttribute']]/assignment"> + <xsl:value-of select="@name"/> + <xsl:if test="position() != last()"> + <xsl:text> | </xsl:text> + </xsl:if> + </xsl:for-each> + </b> + </parameter> + </include> + </p> + </xsl:if> + + <!-- summary --> + <span data="authoredSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[1]" /> + </span> + <xsl:if test="$group='namespace'"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" /> + </xsl:if> + + <!-- assembly information --> + <xsl:if test="not($group='list' or $group='root' or $group='namespace')"> + <xsl:call-template name="requirementsInfo"/> + </xsl:if> + + <!-- syntax --> + <xsl:if test="not($group='list' or $group='namespace')"> + <xsl:apply-templates select="/document/syntax" /> + </xsl:if> + + <!-- show authored Dependency Property Information section for properties --> + <xsl:if test="$subgroup='property'"> + <xsl:apply-templates select="//ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"/> + </xsl:if> + + <!-- show authored Routed Event Information section for events --> + <xsl:if test="$subgroup='event'"> + <xsl:apply-templates select="//ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"/> + </xsl:if> + + <!-- members --> + <xsl:choose> + <xsl:when test="$group='root'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='list'"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + <xsl:when test="$subgroup='DerivedTypeList'"> + <xsl:apply-templates select="/document/reference/elements" mode="derivedType" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/reference/elements" mode="member" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + <!-- exceptions --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" /> + <!-- remarks --> + <xsl:if test="not($group='namespace')"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks[1]" /> + </xsl:if> + <!-- example --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" /> + <!-- permissions --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:permissions" /> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <!-- other comment sections --> + <xsl:if test="$subgroup='class' or $subgroup='structure'"> + <xsl:call-template name="threadSafety" /> + </xsl:if> + <xsl:if test="not($group='list' or $group='namespace' or $group='root')"> + <!--platforms--> + <xsl:apply-templates select="/document/reference/platforms" /> + <!--versions--> + <xsl:apply-templates select="/document/reference/versions" /> + </xsl:if> + <!-- see also --> + <xsl:call-template name="seeAlsoSection"/> + + </xsl:template> + + <xsl:template name="obsoleteSection"> + <p> + <include item="ObsoleteBoilerPlate"> + <parameter> + <xsl:value-of select="$subgroup"/> + </parameter> + </include> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity"> + <xsl:text> </xsl:text> + <include item="nonobsoleteAlternative"> + <parameter><xsl:apply-templates select="ddue:codeEntityReference" /></parameter> + </include> + </xsl:for-each> + </p> + </xsl:template> + + <xsl:template name="internalOnly"> + <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly or /document/reference/containers/ddue:internalOnly"> + <div id="internalonly" class="seeAlsoNoToggleSection"> + <p/> + <include item="internalOnly" /> + </div> + </xsl:if> + </xsl:template> + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <span data="authoredParameterSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" /> + </span> + </xsl:template> + + <xsl:template match="returns"> + <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue)"> + <div id="returns"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include> + <xsl:attribute name="item"> + <xsl:value-of select="$subgroup" /> + <xsl:text>ValueTitle</xsl:text> + </xsl:attribute> + </include> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="getReturnsDescription" /> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:if> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <xsl:choose> + <xsl:when test="type"> + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="type/@api" /> + <xsl:with-param name="qualified" select="true()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*[1]" /> + </xsl:otherwise> + </xsl:choose> + <br/> + <span data="authoredValueSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue" /> + </span> + </xsl:template> + + <xsl:template match="templates"> + <div id="genericParameters"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="template"> + <xsl:variable name="parameterName" select="@name" /> + <dl paramName="{$parameterName}"> + <dt> + <span class="parameter"><xsl:value-of select="$parameterName"/></span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]/ddue:content" /> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template name="getElementDescription"> + <span data="memberAuthoredSummary"> + <xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" /> + </span> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + <xsl:choose> + <xsl:when test="ddue:internalOnly"> + <include item="infraStructure" /> + </xsl:when> + <xsl:when test="count(element) > 0"> + <xsl:variable name="internal"> + <xsl:for-each select="element"> + <xsl:if test="not(ddue:internalOnly)"> + <xsl:text>no</xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="not(normalize-space($internal))"> + <include item="infraStructure" /> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="getOverloadSummary"> + + </xsl:template> + + <xsl:template name="getOverloadSections"> + + </xsl:template> + + <xsl:template match="syntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'syntax'" /> + <xsl:with-param name="title"> + <include item="syntaxTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="syntaxBlocks" /> + + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/templates" /> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/reference/returns" /> + <xsl:apply-templates select="/document/reference/implements" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + <!-- DDUEXML elements that behave differently in conceptual and reference --> + + <xsl:template match="ddue:exceptions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="ddue:exception"> + <div class="listSection"> + <table class="members" width="100%" cellspacing="0" frame="lhs"> + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="ddue:exception"> + <tr> + <td> + <xsl:apply-templates select="ddue:codeEntityReference" /> + </td> + <td> + <xsl:apply-templates select="ddue:content" /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:permissions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'permissions'" /> + <xsl:with-param name="title"> + <include item="permissionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <ul> + <xsl:for-each select="ddue:permission"> + <li> + <xsl:apply-templates select="ddue:codeEntityReference" /> + <xsl:text> </xsl:text> + <xsl:apply-templates select="ddue:content" /> + </li> + </xsl:for-each> + </ul> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template name="runningHeader"> + <include item="runningHeaderText" /> + </xsl:template> + + <xsl:template name="memberIntro"> + <xsl:if test="$subgroup='members'"> + <p> + <xsl:apply-templates select="/document/reference/containers/ddue:summary"/> + </p> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <!-- if there are exposed members, show a boilerplate intro p --> + <xsl:variable name="introTextItemId"> + <xsl:choose> + <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when> + <xsl:otherwise>exposedMembersTableText</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <p> + <include item="{$introTextItemId}"> + <parameter> + <referenceLink target="{$typeId}" /> + </parameter> + <parameter> + <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text> + </parameter> + </include> + </p> + </xsl:if> + </xsl:template> + + <xsl:template name="mshelpCodelangAttributes"> + + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:snippets/ddue:snippet"> + + <xsl:if test="not(@language=preceding::*/@language)"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'VBScript' or @language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" > + <xsl:text>kbLangVB</xsl:text> + </xsl:when> + <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" > + <xsl:text>kbLangCPP</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'"> + <xsl:text>kbJScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xml</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$codeLang='other'" /> + <xsl:otherwise> + <xsl:call-template name="codeLang"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:codeEntityReference" mode="abstract"> + <xsl:call-template name="subString"> + <xsl:with-param name="name" select="." /> + </xsl:call-template> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/main_sandcastle.xsl b/tools/Sandcastle/Presentation/hana/transforms/main_sandcastle.xsl index 61b32b6..cd9ac6b 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/main_sandcastle.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/main_sandcastle.xsl @@ -1,710 +1,710 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <!-- stuff specified to comments authored in DDUEXML -->
-
-
- <xsl:include href="htmlBody.xsl"/>
- <xsl:include href="utilities_reference.xsl" />
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
- <xsl:variable name="abstractSummary" select="/document/comments/summary" />
- <xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments/seealso | /document/comments/summary/seealso) > 0) or
- ($group='type' or $group='member' or $group='list'))"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)" />
-
- <xsl:template name="body">
-
- <!-- auto-inserted info -->
- <!-- <xsl:apply-templates select="/document/reference/attributes" /> -->
- <xsl:apply-templates select="/document/comments/preliminary" />
- <xsl:apply-templates select="/document/comments/summary" />
- <xsl:if test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" />
- </xsl:if>
- <!-- assembly information -->
- <xsl:if test="not($group='list' or $group='root' or $group='namespace')">
- <xsl:call-template name="requirementsInfo"/>
- </xsl:if>
- <!-- syntax -->
- <xsl:if test="not($group='list' or $group='namespace')">
- <xsl:apply-templates select="/document/syntax" />
- </xsl:if>
-
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$group='root'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- <xsl:when test="$subgroup='DerivedTypeList'">
- <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/reference/elements" mode="member" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- remarks -->
- <xsl:apply-templates select="/document/comments/remarks" />
- <!-- example -->
- <xsl:apply-templates select="/document/comments/example" />
- <!-- other comment sections -->
- <!-- permissions -->
- <xsl:call-template name="permissions" />
- <!-- exceptions -->
- <xsl:call-template name="exceptions" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <xsl:apply-templates select="/document/comments/threadsafety" />
- <!--versions-->
- <xsl:if test="not($group='list' or $group='namespace' or $group='root' )">
- <xsl:apply-templates select="/document/reference/versions" />
- </xsl:if>
- <!-- see also -->
- <xsl:call-template name="seealso" />
-
- </xsl:template>
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <xsl:apply-templates select="summary[1]" />
- </xsl:template>
-
- <xsl:template name="getOverloadSummary">
- <xsl:apply-templates select="overloads" mode="summary"/>
- </xsl:template>
-
- <xsl:template name="getOverloadSections">
- <xsl:apply-templates select="overloads" mode="sections"/>
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
-
- </xsl:template>
-
-
- <!-- block sections -->
-
- <xsl:template match="summary">
- <div class="summary">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="overloads" mode="summary">
- <xsl:choose>
- <xsl:when test="count(summary) > 0">
- <xsl:apply-templates select="summary" />
- </xsl:when>
- <xsl:otherwise>
- <div class="summary">
- <xsl:apply-templates/>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="overloads" mode="sections">
- <xsl:apply-templates select="remarks" />
- <xsl:apply-templates select="example"/>
- </xsl:template>
-
- <xsl:template match="value">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="fieldValueTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="returns">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="methodValueTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="templates">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'templates'" />
- <xsl:with-param name="title">
- <include item="templatesTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <dl>
- <xsl:for-each select="template">
- <xsl:variable name="templateName" select="@name" />
- <dt>
- <span class="parameter">
- <xsl:value-of select="$templateName"/>
- </span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" />
- </dd>
- </xsl:for-each>
- </dl>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="remarks">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="example">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'" />
- <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="code/@language">
- <xsl:variable name="codeId" select="generate-id()" />
- <table class="filter">
- <tr id="curvedTabs_{$codeId}">
- <xsl:for-each select="code">
- <td class="leftTab" x-lang="{@language}"> </td>
- <td class="middleTab" x-lang="{@language}"> </td>
- <td class="rightTab" x-lang="{@language}"> </td>
- </xsl:for-each>
- </tr>
- <tr class="tabs" id="ct_{$codeId}">
- <xsl:for-each select="code">
-
- <xsl:variable name="style">
- <xsl:call-template name="languageCheck">
- <xsl:with-param name="codeLanguage" select="@language" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="languageEvent">
- <xsl:choose>
- <xsl:when test="$style != ''">
- <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>', '</xsl:text><xsl:value-of select="$style" />
- <xsl:text>');</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>toggleClass('ct_</xsl:text><xsl:value-of select="$codeId" />
- <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>','activeTab','tab'); curvedToggleClass('curvedTabs_</xsl:text><xsl:value-of select="$codeId"/>
- <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>'); toggleStyle('cb_</xsl:text><xsl:value-of select="$codeId"/>
- <xsl:text>', 'x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>','display','block','none');</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <td class="leftGrad" x-lang="{@language}"> </td>
- <td class="tab" x-lang="{@language}" onclick="{$languageEvent}">
- <include item="{@language}Label" />
- </td>
- <td class="rightGrad" x-lang="{@language}"> </td>
- </xsl:for-each>
- </tr>
- </table>
- <div id="cb_{$codeId}">
- <xsl:for-each select="code">
- <div class="code" x-lang="{@language}">
- <xsl:call-template name="codeSection" />
- </div>
- </xsl:for-each>
- </div>
- <script type="text/javascript">
- <xsl:if test="$languages != 'false'">
- languageFilter.registerTabbedArea(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','cb_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>);
- </xsl:if>
- toggleClass(<xsl:text>'ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','activeTab','tab');
- curvedToggleClass(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>,'x-lang', 'CSharp');
- toggleStyle(<xsl:text>'cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','display','block','none');
- </script>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="para">
- <p><xsl:apply-templates /></p>
- </xsl:template>
-
- <xsl:template match="code">
- <div class="code">
- <xsl:call-template name="codeSection" />
- </div>
- </xsl:template>
- <xsl:template name="exceptions">
- <xsl:if test="count(/document/comments/exception) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'exceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="members" width="100%" cellspacing="0" frame="lhs" >
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="/document/comments/exception">
- <tr>
- <td><referenceLink target="{@cref}" qualified="true" /></td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="permissions">
- <xsl:if test="count(/document/comments/permission) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'permissions'" />
- <xsl:with-param name="title">
- <include item="permissionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="members" width="100%" cellspacing="0" frame="lhs" >
- <tr>
- <th class="permissionNameColumn">
- <include item="permissionNameHeader" />
- </th>
- <th class="permissionDescriptionColumn">
- <include item="permissionDescriptionHeader" />
- </th>
- </tr>
- <xsl:for-each select="/document/comments/permission">
- <tr>
- <td>
- <referenceLink target="{@cref}" qualified="true" />
- </td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="seealso">
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'" />
- <xsl:with-param name="title">
- <include item="relatedTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="." />
- </div>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="list[@type='bullet']">
- <ul>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ul>
- </xsl:template>
-
- <xsl:template match="list[@type='number']">
- <ol>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ol>
- </xsl:template>
-
- <xsl:template match="list[@type='table']">
- <div class="listSection">
- <table class="members" width="100%" cellspacing="0" frame="lhs" >
- <xsl:for-each select="listheader">
- <tr>
- <xsl:for-each select="*">
- <th><xsl:apply-templates /></th>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- <xsl:for-each select="item">
- <tr>
- <xsl:for-each select="*">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:template>
-
- <!-- inline tags -->
-
- <xsl:template match="see[@cref]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="seealso[@href]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="." />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="@href" />
- </a>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="see[@langword]">
- <span class="keyword">
- <xsl:choose>
- <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </xsl:when>
- <xsl:when test="@langword='static' or @langword='Shared'">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </xsl:when>
- <xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </xsl:when>
- <xsl:when test="@langword='true' or @langword='True'">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </xsl:when>
- <xsl:when test="@langword='false' or @langword='False'">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </xsl:when>
- <xsl:when test="@langword='abstract'">
- <span class="cs">abstract</span>
- <span class="vb">MustInherit</span>
- <span class="cpp">abstract</span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@langword" />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
-
- <xsl:template match="seealso">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}" qualified="true">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}" qualified="true" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="c">
- <span class="code">
- <xsl:value-of select="." />
- </span>
- </xsl:template>
-
- <xsl:template match="paramref">
- <span class="parameter">
- <xsl:value-of select="@name" />
- </span>
- </xsl:template>
-
- <xsl:template match="typeparamref">
- <span class="typeparameter">
- <xsl:value-of select="@name" />
- </span>
- </xsl:template>
-
- <xsl:template match="syntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'syntax'" />
- <xsl:with-param name="title">
- <include item="syntaxTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <div id="syntaxCodeBlocks">
- <xsl:call-template name="syntaxBlocks" />
- </div>
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/reference/templates" />
- <xsl:apply-templates select="/document/comments/value" />
- <xsl:apply-templates select="/document/comments/returns" />
- <xsl:apply-templates select="/document/reference/implements" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <include item="runningHeaderText" />
- </xsl:template>
-
- <!-- pass through html tags -->
-
- <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font">
- <xsl:copy>
- <xsl:copy-of select="@*" />
- <xsl:apply-templates />
- </xsl:copy>
- </xsl:template>
-
- <!-- extra tag support -->
-
- <xsl:template match="threadsafety">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'threadSafety'" />
- <xsl:with-param name="title">
- <include item="threadSafetyTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <xsl:apply-templates />
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="@static='true'">
- <include item="staticThreadSafe" />
- </xsl:if>
- <xsl:if test="@static='false'">
- <include item="staticNotThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='true'">
- <include item="instanceThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='false'">
- <include item="instanceNotThreadSafe" />
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="note">
- <div class="alert">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="noteAltText"/>
- </img>
- <xsl:text> </xsl:text>
- <include item="noteTitle" />
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="preliminary">
- <div class="preliminary">
- <include item="preliminaryText" />
- </div>
- </xsl:template>
-
- <!-- move these off into a shared file -->
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
-
- <referenceLink target="{$id}" qualified="{$qualified}" />
-
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" />
- <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" />
-
- <h1 class="heading">
- <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
- <img id="{$toggleTitle}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:copy-of select="$title" />
- </span>
- </h1>
-
- <div id="{$toggleSection}" class="section" name="collapseableSection" style="">
- <xsl:copy-of select="$content" />
- </div>
-
- </xsl:template>
-
- <xsl:template name="subSection">
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <h4 class="subHeading">
- <xsl:copy-of select="$title" />
- </h4>
- <xsl:copy-of select="$content" />
-
- </xsl:template>
-
- <xsl:template name="memberIntro">
- <xsl:if test="$subgroup='members'">
- <p>
- <xsl:apply-templates select="/document/reference/containers/summary"/>
- </p>
- </xsl:if>
- <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <!-- if there are exposed members, show a boilerplate intro p -->
- <xsl:variable name="introTextItemId">
- <xsl:choose>
- <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when>
- <xsl:otherwise>exposedMembersTableText</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <p>
- <include item="{$introTextItemId}">
- <parameter>
- <referenceLink target="{$typeId}" />
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text>
- </parameter>
- </include>
- </p>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="mshelpCodelangAttributes">
- <xsl:for-each select="/document/comments/example/code">
-
- <xsl:if test="not(@language=preceding::*/@language)">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'VBScript' or @language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" >
- <xsl:text>kbLangVB</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" >
- <xsl:text>kbLangCPP</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'">
- <xsl:text>kbJScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xml</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$codeLang='other'" />
- <xsl:otherwise>
- <xsl:call-template name="codeLang">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:template>
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <!-- stuff specified to comments authored in DDUEXML --> + + + <xsl:include href="htmlBody.xsl"/> + <xsl:include href="utilities_reference.xsl" /> + + <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" /> + <xsl:variable name="abstractSummary" select="/document/comments/summary" /> + <xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments/seealso | /document/comments/summary/seealso) > 0) or + ($group='type' or $group='member' or $group='list'))"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)" /> + + <xsl:template name="body"> + + <!-- auto-inserted info --> + <!-- <xsl:apply-templates select="/document/reference/attributes" /> --> + <xsl:apply-templates select="/document/comments/preliminary" /> + <xsl:apply-templates select="/document/comments/summary" /> + <xsl:if test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" /> + </xsl:if> + <!-- assembly information --> + <xsl:if test="not($group='list' or $group='root' or $group='namespace')"> + <xsl:call-template name="requirementsInfo"/> + </xsl:if> + <!-- syntax --> + <xsl:if test="not($group='list' or $group='namespace')"> + <xsl:apply-templates select="/document/syntax" /> + </xsl:if> + + <!-- members --> + <xsl:choose> + <xsl:when test="$group='root'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='list'"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + <xsl:when test="$subgroup='DerivedTypeList'"> + <xsl:apply-templates select="/document/reference/elements" mode="derivedType" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/reference/elements" mode="member" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + <!-- remarks --> + <xsl:apply-templates select="/document/comments/remarks" /> + <!-- example --> + <xsl:apply-templates select="/document/comments/example" /> + <!-- other comment sections --> + <!-- permissions --> + <xsl:call-template name="permissions" /> + <!-- exceptions --> + <xsl:call-template name="exceptions" /> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <xsl:apply-templates select="/document/comments/threadsafety" /> + <!--versions--> + <xsl:if test="not($group='list' or $group='namespace' or $group='root' )"> + <xsl:apply-templates select="/document/reference/versions" /> + </xsl:if> + <!-- see also --> + <xsl:call-template name="seealso" /> + + </xsl:template> + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getElementDescription"> + <xsl:apply-templates select="summary[1]" /> + </xsl:template> + + <xsl:template name="getOverloadSummary"> + <xsl:apply-templates select="overloads" mode="summary"/> + </xsl:template> + + <xsl:template name="getOverloadSections"> + <xsl:apply-templates select="overloads" mode="sections"/> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + + </xsl:template> + + + <!-- block sections --> + + <xsl:template match="summary"> + <div class="summary"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="overloads" mode="summary"> + <xsl:choose> + <xsl:when test="count(summary) > 0"> + <xsl:apply-templates select="summary" /> + </xsl:when> + <xsl:otherwise> + <div class="summary"> + <xsl:apply-templates/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="overloads" mode="sections"> + <xsl:apply-templates select="remarks" /> + <xsl:apply-templates select="example"/> + </xsl:template> + + <xsl:template match="value"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="fieldValueTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="returns"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="methodValueTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="templates"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'templates'" /> + <xsl:with-param name="title"> + <include item="templatesTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <dl> + <xsl:for-each select="template"> + <xsl:variable name="templateName" select="@name" /> + <dt> + <span class="parameter"> + <xsl:value-of select="$templateName"/> + </span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" /> + </dd> + </xsl:for-each> + </dl> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="remarks"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'remarks'"/> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="example"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'" /> + <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="code/@language"> + <xsl:variable name="codeId" select="generate-id()" /> + <table class="filter"> + <tr id="curvedTabs_{$codeId}"> + <xsl:for-each select="code"> + <td class="leftTab" x-lang="{@language}"> </td> + <td class="middleTab" x-lang="{@language}"> </td> + <td class="rightTab" x-lang="{@language}"> </td> + </xsl:for-each> + </tr> + <tr class="tabs" id="ct_{$codeId}"> + <xsl:for-each select="code"> + + <xsl:variable name="style"> + <xsl:call-template name="languageCheck"> + <xsl:with-param name="codeLanguage" select="@language" /> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="languageEvent"> + <xsl:choose> + <xsl:when test="$style != ''"> + <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@language"/> + <xsl:text>', '</xsl:text><xsl:value-of select="$style" /> + <xsl:text>');</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>toggleClass('ct_</xsl:text><xsl:value-of select="$codeId" /> + <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>','activeTab','tab'); curvedToggleClass('curvedTabs_</xsl:text><xsl:value-of select="$codeId"/> + <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>'); toggleStyle('cb_</xsl:text><xsl:value-of select="$codeId"/> + <xsl:text>', 'x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>','display','block','none');</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <td class="leftGrad" x-lang="{@language}"> </td> + <td class="tab" x-lang="{@language}" onclick="{$languageEvent}"> + <include item="{@language}Label" /> + </td> + <td class="rightGrad" x-lang="{@language}"> </td> + </xsl:for-each> + </tr> + </table> + <div id="cb_{$codeId}"> + <xsl:for-each select="code"> + <div class="code" x-lang="{@language}"> + <xsl:call-template name="codeSection" /> + </div> + </xsl:for-each> + </div> + <script type="text/javascript"> + <xsl:if test="$languages != 'false'"> + languageFilter.registerTabbedArea(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','cb_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>); + </xsl:if> + toggleClass(<xsl:text>'ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','activeTab','tab'); + curvedToggleClass(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>,'x-lang', 'CSharp'); + toggleStyle(<xsl:text>'cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','display','block','none'); + </script> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="para"> + <p><xsl:apply-templates /></p> + </xsl:template> + + <xsl:template match="code"> + <div class="code"> + <xsl:call-template name="codeSection" /> + </div> + </xsl:template> + <xsl:template name="exceptions"> + <xsl:if test="count(/document/comments/exception) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'exceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="members" width="100%" cellspacing="0" frame="lhs" > + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="/document/comments/exception"> + <tr> + <td><referenceLink target="{@cref}" qualified="true" /></td> + <td> + <xsl:apply-templates select="." /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="permissions"> + <xsl:if test="count(/document/comments/permission) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'permissions'" /> + <xsl:with-param name="title"> + <include item="permissionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="members" width="100%" cellspacing="0" frame="lhs" > + <tr> + <th class="permissionNameColumn"> + <include item="permissionNameHeader" /> + </th> + <th class="permissionDescriptionColumn"> + <include item="permissionDescriptionHeader" /> + </th> + </tr> + <xsl:for-each select="/document/comments/permission"> + <tr> + <td> + <referenceLink target="{@cref}" qualified="true" /> + </td> + <td> + <xsl:apply-templates select="." /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="seealso"> + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'" /> + <xsl:with-param name="title"> + <include item="relatedTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="autogenSeeAlsoLinks"/> + <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="." /> + </div> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="list[@type='bullet']"> + <ul> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ul> + </xsl:template> + + <xsl:template match="list[@type='number']"> + <ol> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ol> + </xsl:template> + + <xsl:template match="list[@type='table']"> + <div class="listSection"> + <table class="members" width="100%" cellspacing="0" frame="lhs" > + <xsl:for-each select="listheader"> + <tr> + <xsl:for-each select="*"> + <th><xsl:apply-templates /></th> + </xsl:for-each> + </tr> + </xsl:for-each> + <xsl:for-each select="item"> + <tr> + <xsl:for-each select="*"> + <td> + <xsl:apply-templates /> + </td> + </xsl:for-each> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:template> + + <!-- inline tags --> + + <xsl:template match="see[@cref]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="seealso[@href]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="." /> + </a> + </xsl:when> + <xsl:otherwise> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="@href" /> + </a> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="see[@langword]"> + <span class="keyword"> + <xsl:choose> + <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </xsl:when> + <xsl:when test="@langword='static' or @langword='Shared'"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </xsl:when> + <xsl:when test="@langword='virtual' or @langword='Overridable'"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </xsl:when> + <xsl:when test="@langword='true' or @langword='True'"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </xsl:when> + <xsl:when test="@langword='false' or @langword='False'"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </xsl:when> + <xsl:when test="@langword='abstract'"> + <span class="cs">abstract</span> + <span class="vb">MustInherit</span> + <span class="cpp">abstract</span> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@langword" /> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + + <xsl:template match="seealso"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}" qualified="true"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}" qualified="true" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="c"> + <span class="code"> + <xsl:value-of select="." /> + </span> + </xsl:template> + + <xsl:template match="paramref"> + <span class="parameter"> + <xsl:value-of select="@name" /> + </span> + </xsl:template> + + <xsl:template match="typeparamref"> + <span class="typeparameter"> + <xsl:value-of select="@name" /> + </span> + </xsl:template> + + <xsl:template match="syntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'syntax'" /> + <xsl:with-param name="title"> + <include item="syntaxTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <div id="syntaxCodeBlocks"> + <xsl:call-template name="syntaxBlocks" /> + </div> + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/reference/templates" /> + <xsl:apply-templates select="/document/comments/value" /> + <xsl:apply-templates select="/document/comments/returns" /> + <xsl:apply-templates select="/document/reference/implements" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="runningHeader"> + <include item="runningHeaderText" /> + </xsl:template> + + <!-- pass through html tags --> + + <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font"> + <xsl:copy> + <xsl:copy-of select="@*" /> + <xsl:apply-templates /> + </xsl:copy> + </xsl:template> + + <!-- extra tag support --> + + <xsl:template match="threadsafety"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'threadSafety'" /> + <xsl:with-param name="title"> + <include item="threadSafetyTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <xsl:apply-templates /> + </xsl:when> + <xsl:otherwise> + <xsl:if test="@static='true'"> + <include item="staticThreadSafe" /> + </xsl:if> + <xsl:if test="@static='false'"> + <include item="staticNotThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='true'"> + <include item="instanceThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='false'"> + <include item="instanceNotThreadSafe" /> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="note"> + <div class="alert"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="noteAltText"/> + </img> + <xsl:text> </xsl:text> + <include item="noteTitle" /> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="preliminary"> + <div class="preliminary"> + <include item="preliminaryText" /> + </div> + </xsl:template> + + <!-- move these off into a shared file --> + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + + <referenceLink target="{$id}" qualified="{$qualified}" /> + + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="toggleSwitch" /> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" /> + <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" /> + + <h1 class="heading"> + <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0"> + <img id="{$toggleTitle}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:copy-of select="$title" /> + </span> + </h1> + + <div id="{$toggleSection}" class="section" name="collapseableSection" style=""> + <xsl:copy-of select="$content" /> + </div> + + </xsl:template> + + <xsl:template name="subSection"> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <h4 class="subHeading"> + <xsl:copy-of select="$title" /> + </h4> + <xsl:copy-of select="$content" /> + + </xsl:template> + + <xsl:template name="memberIntro"> + <xsl:if test="$subgroup='members'"> + <p> + <xsl:apply-templates select="/document/reference/containers/summary"/> + </p> + </xsl:if> + <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <!-- if there are exposed members, show a boilerplate intro p --> + <xsl:variable name="introTextItemId"> + <xsl:choose> + <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when> + <xsl:otherwise>exposedMembersTableText</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <p> + <include item="{$introTextItemId}"> + <parameter> + <referenceLink target="{$typeId}" /> + </parameter> + <parameter> + <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text> + </parameter> + </include> + </p> + </xsl:if> + </xsl:template> + + <xsl:template name="mshelpCodelangAttributes"> + <xsl:for-each select="/document/comments/example/code"> + + <xsl:if test="not(@language=preceding::*/@language)"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'VBScript' or @language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" > + <xsl:text>kbLangVB</xsl:text> + </xsl:when> + <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" > + <xsl:text>kbLangCPP</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'"> + <xsl:text>kbJScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xml</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$codeLang='other'" /> + <xsl:otherwise> + <xsl:call-template name="codeLang"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + </xsl:for-each> + </xsl:template> +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/skeleton.xml b/tools/Sandcastle/Presentation/hana/transforms/skeleton.xml index 74c0a91..4d699b9 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/skeleton.xml +++ b/tools/Sandcastle/Presentation/hana/transforms/skeleton.xml @@ -1,7 +1,7 @@ -<document>
- <reference />
- <syntax />
- <USyntax />
- <comments />
- <metadata />
-</document>
+<document> + <reference /> + <syntax /> + <USyntax /> + <comments /> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/hana/transforms/skeleton_conceptual.xml b/tools/Sandcastle/Presentation/hana/transforms/skeleton_conceptual.xml index d772566..6de97d4 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/skeleton_conceptual.xml +++ b/tools/Sandcastle/Presentation/hana/transforms/skeleton_conceptual.xml @@ -1,3 +1,3 @@ -<document>
- <metadata />
-</document>
+<document> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/hana/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/hana/transforms/utilities_dduexml.xsl index 3bfc29e..e652388 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/utilities_dduexml.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/utilities_dduexml.xsl @@ -1,1293 +1,1293 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" />
-
- <!-- sections -->
-
- <!-- the Remarks section includes content from these nodes, excluding the xaml sections are captured in the xaml syntax processing -->
- <xsl:template name="HasRemarksContent">
- <xsl:choose>
- <xsl:when test="normalize-space(ddue:content)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForImplementers)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForCallers)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForInheritors)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:platformNotes)">true</xsl:when>
- <xsl:when test="normalize-space(ddue:sections/ddue:section[not(
- starts-with(@address,'xamlValues') or
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage') or
- starts-with(@address,'dependencyPropertyInfo') or
- starts-with(@address,'routedEventInfo')
- )])">true</xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:remarks">
- <xsl:variable name="hasRemarks">
- <xsl:call-template name="HasRemarksContent"/>
- </xsl:variable>
- <xsl:if test="$hasRemarks='true'">
- <xsl:choose>
- <xsl:when test="not($group = 'namespace')">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- <xsl:apply-templates select="../ddue:notesForImplementers"/>
- <xsl:apply-templates select="../ddue:notesForCallers"/>
- <xsl:apply-templates select="../ddue:notesForInheritors"/>
- <xsl:apply-templates select="../ddue:platformNotes"/>
- <include item="mshelpKTable">
- <parameter>
- <xsl:text>tt_</xsl:text>
- <xsl:value-of select="$key"/>
- </parameter>
- </include>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExamples">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title">
- <include item="examplesTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- <xsl:call-template name="moreCodeSection"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!--
- **************************************************************
- CODE EXAMPLES section
- **************************************************************
- -->
- <!-- tasks/task nodes are inserted by TaskGrabberComponent which gets content from HowTo topics -->
- <!-- these nodes are handled below in the moreCodeSection -->
- <xsl:template match="ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/tasks"/>
-
- <xsl:template name="moreCodeSection">
- <xsl:variable name="gotCodeAlready" select="boolean(
- (ddue:codeExample/ddue:legacy/ddue:content[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) or
- (ddue:codeExample[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet])
- )"/>
-
- <xsl:variable name="gotMoreCode" select="(count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>1) or
- ($gotCodeAlready and count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>0)"/>
-
- <!-- if no preceding code in the code examples section, display the tasks[1]/task[1] -->
- <xsl:if test="not($gotCodeAlready)">
- <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks[1]/task[1]">
- <xsl:apply-templates select="ddue:introduction | ddue:codeExample"/>
- </xsl:for-each>
- </xsl:if>
-
- <xsl:if test="$gotMoreCode">
- <sections>
- <h4 class="subHeading">
- <include item="mrefTaskMoreCodeHeading" />
- </h4>
- <div class="subsection">
- <div class="listSection">
- <table class="members" width="100%" cellspacing="0">
- <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks/task">
- <xsl:choose>
- <xsl:when test="not($gotCodeAlready) and position()=1"/>
- <xsl:otherwise>
- <tr valign="top">
- <td>
- <conceptualLink target="{@topicId}">
- <xsl:value-of select="ddue:title"/>
- </conceptualLink>
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="ddue:introduction/ddue:para[1][normalize-space(.)!='']">
- <xsl:apply-templates select="ddue:introduction/ddue:para[1]/node()"/>
- </xsl:when>
- <xsl:when test="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1][normalize-space(.)!='']">
- <xsl:apply-templates select="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1]/node()"/>
- </xsl:when>
- </xsl:choose>
- </td>
- </tr>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </table>
- </div>
- </div>
- </sections>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="threadSafety">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'threadSafety'"/>
- <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="/document/comments/ddue:dduexml/ddue:threadSafety">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSafety"/>
- </xsl:when>
- <xsl:otherwise>
- <include item="ThreadSafetyBP"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:notesForImplementers">
- <p/>
- <b>
- <include item="NotesForImplementers"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:notesForCallers">
- <p/>
- <b>
- <include item="NotesForCallers"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:notesForInheritors">
- <p/>
- <b>
- <include item="NotesForInheritors"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:platformNotes">
- <xsl:for-each select="ddue:platformNote[normalize-space(ddue:content)]">
- <p>
- <include item="PlatformNote">
- <parameter>
- <xsl:for-each select="ddue:platforms/ddue:platform">
- <xsl:variable name="platformName"><xsl:value-of select="."/></xsl:variable>
- <include item="{$platformName}"/>
- <xsl:if test="position() != last()">, </xsl:if>
- </xsl:for-each>
- </parameter>
- <parameter><xsl:apply-templates select="ddue:content"/></parameter>
- </include>
- </p>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:schemaHierarchy">
- <xsl:for-each select="ddue:link">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="position()"/>
- </xsl:call-template>
- <xsl:apply-templates select="."/>
- <br/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:syntaxSection">
- <div id="syntaxSection" class="section">
- <div id="syntaxCodeBlocks">
- <xsl:for-each select="ddue:legacySyntax">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" >
- <xsl:text>VisualBasic</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" >
- <xsl:text>ManagedCPlusPlus</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'j#' or @language = 'jsharp'">
- <xsl:text>JSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xmlLang</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <span codeLanguage="{$codeLang}">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th align="left">
- <include item="{$codeLang}"/>
- </th>
- </tr>
- <tr>
- <td>
- <pre>
- <xsl:apply-templates xml:space="preserve"/>
- </pre>
- </td>
- </tr>
- </table>
- </span>
-
- </xsl:for-each>
- </div>
- </div>
- </xsl:template>
-
- <xsl:template name="seeAlsoSection">
-
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'"/>
- <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param>
- <xsl:with-param name="content">
-
- <!-- Concepts sub-section -->
- <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoConcepts"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Reference sub-section (always one of these in an API topic) -->
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoReference"/>
- </xsl:with-param>
-
- <xsl:with-param name="content">
- <xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
-
- <!-- Other Resources sub-section -->
- <xsl:if test="ddue:externalLink">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoOtherResources"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'externalLink'">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- just skip over these -->
- <xsl:template match="ddue:content | ddue:legacy">
- <xsl:apply-templates />
- </xsl:template>
-
- <!-- block elements -->
-
- <xsl:template match="ddue:table">
- <div class="listSection">
- <table class="members" width="50%" cellspacing="0" frame="lhs">
- <xsl:apply-templates />
- </table>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader">
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template match="ddue:row">
- <tr>
- <xsl:apply-templates />
- </tr>
- </xsl:template>
-
- <xsl:template match="ddue:entry">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry">
- <th>
- <xsl:apply-templates />
- </th>
- </xsl:template>
-
- <xsl:template match="ddue:definitionTable">
- <dl>
- <xsl:apply-templates />
- </dl>
- </xsl:template>
-
- <xsl:template match="ddue:definedTerm">
- <dt><span class="nonLinkTerm"><xsl:apply-templates /></span></dt>
- </xsl:template>
-
- <xsl:template match="ddue:definition">
- <dd>
- <xsl:apply-templates />
- </dd>
- </xsl:template>
-
- <xsl:template match="ddue:code">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" >
- <xsl:text>VisualBasic</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" >
- <xsl:text>ManagedCPlusPlus</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'j#' or @language = 'jsharp'">
- <xsl:text>JSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xmlLang</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="titleName" select="../../ddue:title"/>
-
- <xsl:choose>
- <xsl:when test="(($titleName = 'Output') or ($titleName = 'Input') or ($titleName = 'SampleOutput'))">
- <div class="code">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th>
- <xsl:text> </xsl:text>
- </th>
-
- </tr>
- <tr>
- <td colspan="2">
- <pre>
- <xsl:apply-templates/>
- </pre>
- </td>
- </tr>
- </table>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="codeSection">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template match="ddue:sampleCode">
- <div><b><xsl:value-of select="@language"/></b></div>
- <div class="code"><pre><xsl:apply-templates /></pre></div>
- </xsl:template>
-
- <xsl:template name="composeCode">
- <xsl:copy-of select="." />
- <xsl:variable name="next" select="following-sibling::*[1]" />
- <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())">
- <xsl:for-each select="$next">
- <xsl:call-template name="composeCode" />
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:alert">
- <div class="alert">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th align="left">
- <xsl:choose>
- <xsl:when test="@class='tip'">
- <img class="note">
- <includeAttribute name="title" item="tipAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="tipTitle" />
- </xsl:when>
- <xsl:when test="@class='caution' or @class='warning'">
- <img class="note">
- <includeAttribute name="title" item="cautionAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <include item="cautionTitle" />
- </xsl:when>
- <xsl:when test="@class='security note'">
- <img class="note">
- <includeAttribute name="title" item="securityAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_security.gif</parameter>
- </includeAttribute>
- </img>
- <include item="securityTitle" />
- </xsl:when>
- <xsl:when test="@class='important'">
- <img class="note">
- <includeAttribute name="title" item="importantAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <include item="importantTitle" />
- </xsl:when>
- <xsl:when test="@class='visual basic note'">
- <img class="note">
- <includeAttribute name="title" item="visualBasicAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualBasicTitle" />
- </xsl:when>
- <xsl:when test="@class='visual c# note'">
- <img class="note">
- <includeAttribute name="title" item="visualC#AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualC#Title" />
- </xsl:when>
- <xsl:when test="@class='visual c++ note'">
- <img class="note">
- <includeAttribute name="title" item="visualC++AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualC++Title" />
- </xsl:when>
- <xsl:when test="@class='visual j# note'">
- <img class="note">
- <includeAttribute name="title" item="visualJ#AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualJ#Title" />
- </xsl:when>
- <xsl:when test="@class='note'">
- <img class="note">
- <includeAttribute name="title" item="noteAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="noteTitle" />
- </xsl:when>
- <xsl:otherwise>
- <img class="note">
- <includeAttribute name="title" item="noteAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="{@class}" />
- </xsl:otherwise>
- </xsl:choose>
- </th>
- </tr>
- <tr>
- <td>
- <xsl:apply-templates/>
- </td>
- </tr>
- </table>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:sections">
- <xsl:apply-templates select="ddue:section" />
- </xsl:template>
-
- <xsl:template match="ddue:section">
- <xsl:if test="descendant::ddue:content[normalize-space(.)]">
- <xsl:apply-templates select="@address" />
- <!-- Count all the possible ancestor root nodes -->
- <xsl:variable name="a1" select="count(ancestor::ddue:attributesandElements)" />
- <xsl:variable name="a2" select="count(ancestor::ddue:codeExample)" />
- <xsl:variable name="a3" select="count(ancestor::ddue:dotNetFrameworkEquivalent)" />
- <xsl:variable name="a4" select="count(ancestor::ddue:elementInformation)" />
- <xsl:variable name="a5" select="count(ancestor::ddue:exceptions)" />
- <xsl:variable name="a6" select="count(ancestor::ddue:introduction)" />
- <xsl:variable name="a7" select="count(ancestor::ddue:languageReferenceRemarks)" />
- <xsl:variable name="a8" select="count(ancestor::ddue:nextSteps)" />
- <xsl:variable name="a9" select="count(ancestor::ddue:parameters)" />
- <xsl:variable name="a10" select="count(ancestor::ddue:prerequisites)" />
- <xsl:variable name="a11" select="count(ancestor::ddue:procedure)" />
- <xsl:variable name="a12" select="count(ancestor::ddue:relatedTopics)" />
- <xsl:variable name="a13" select="count(ancestor::ddue:remarks)" />
- <xsl:variable name="a14" select="count(ancestor::ddue:requirements)" />
- <xsl:variable name="a15" select="count(ancestor::ddue:schemaHierarchy)" />
- <xsl:variable name="a16" select="count(ancestor::ddue:syntaxSection)" />
- <xsl:variable name="a17" select="count(ancestor::ddue:textValue)" />
- <xsl:variable name="a18" select="count(ancestor::ddue:type)" />
- <xsl:variable name="a19" select="count(ancestor::ddue:section)" />
- <xsl:variable name="total" select="$a1+$a2+$a3+$a4+$a5+$a6+$a7+$a8+$a9+$a10+$a11+$a12+$a13+$a14+$a15+$a16+$a17+$a18+$a19" />
- <xsl:choose>
- <xsl:when test="$total = 0">
- <xsl:variable name="sectionCount">
- <xsl:value-of select="count(preceding-sibling::ddue:section)"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="ddue:title">
- <h1 class="heading">
- <span onclick="ExpandCollapse(sectionToggle{$sectionCount})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(sectionToggle{$sectionCount}, event)" tabindex="0">
- <img id="sectionToggle{$sectionCount}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:value-of select="ddue:title" />
- </span>
- </h1>
- <div id="sectionSection{$sectionCount}" class="section" name="collapseableSection" style="">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:when>
- <xsl:otherwise>
- <div id="sectionSection{$sectionCount}" class="seeAlsoNoToggleSection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections"/>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$total = 1">
- <h3 class="subHeading">
- <xsl:value-of select="ddue:title"/>
- </h3>
- <div class="subsection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:when>
- <xsl:otherwise>
- <h4 class="subHeading">
- <xsl:value-of select="ddue:title"/>
- </h4>
- <div class="subsection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-<!--
- <xsl:template match="@address">
- <a name="{string(.)}" />
- </xsl:template>
--->
- <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline">
- <span class="media">
- <xsl:if test="ddue:caption">
- <div class="caption">
- <xsl:apply-templates select="ddue:caption" />
- </div>
- <br />
- </xsl:if>
- <artLink target="{ddue:image/@xlink:href}" />
- </span>
- </xsl:template>
-
- <xsl:template match="ddue:procedure">
- <xsl:if test="normalize-space(ddue:title)">
- <h3 class="procedureSubHeading">
- <xsl:value-of select="ddue:title"/>
- </h3>
- </xsl:if>
- <div class="subSection">
- <xsl:apply-templates select="ddue:steps"/>
- <xsl:apply-templates select="ddue:conclusion"/>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:steps">
- <xsl:choose>
- <xsl:when test="@class = 'ordered'">
- <xsl:variable name="temp">
- <xsl:value-of select="count(ddue:step)"/>
- </xsl:variable>
- <xsl:if test="$temp = 1">
- <ul>
- <xsl:apply-templates select="ddue:step"/>
- </ul>
- </xsl:if>
- <xsl:if test="$temp > 1">
- <ol>
- <xsl:apply-templates select="ddue:step"/>
- </ol>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@class='bullet'">
- <ul>
- <xsl:apply-templates select="ddue:step" />
- </ul>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:step">
- <li><xsl:apply-templates /></li>
- </xsl:template>
-
-
- <xsl:template match="ddue:inThisSection">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'inThisSection'"/>
- <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:buildInstructions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'buildInstructions'"/>
- <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:nextSteps">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'nextSteps'"/>
- <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:requirements">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'requirementsTitle'"/>
- <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- inline elements -->
-
- <xsl:template match="ddue:languageKeyword">
- <xsl:variable name="word" select="." />
- <span class="keyword" data="langKeyword" value="{$word}">
- <xsl:choose>
- <xsl:when test="$word='null' or $word='Nothing' or $word='nullptr'">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </xsl:when>
- <xsl:when test="$word='static' or $word='Shared'">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </xsl:when>
- <xsl:when test="$word='virtual' or $word='Overridable'">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </xsl:when>
- <xsl:when test="$word='true' or $word='True'">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </xsl:when>
- <xsl:when test="$word='false' or $word='False'">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
- <!-- links -->
-
- <xsl:template match="ddue:dynamicLink[@type='inline']">
- <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" />
- <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" />
- <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" />
- </MSHelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='table']">
- <include item="mshelpKTable">
- <parameter>
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='bulleted']">
- <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <xsl:attribute name="prefix"><ul><li></xsl:attribute>
- <xsl:attribute name="postfix"></li></ul></xsl:attribute>
- <xsl:attribute name="separator"></li><li></xsl:attribute>
- </MSHelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:codeFeaturedElement">
- <xsl:if test="normalize-space(.)">
- <xsl:if test="count(preceding::ddue:codeFeaturedElement) > 0"><br/></xsl:if>
- <b><xsl:apply-templates/></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:languageReferenceRemarks">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'languageReferenceRemarks'"/>
- <xsl:with-param name="title">
- <include item="remarksTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attributesandElements">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'attributesAndElements'"/>
- <xsl:with-param name="title">
- <include item="attributesAndElements" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attributes">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="attributes"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attribute">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:attribute/ddue:title">
- <h4 class="subHeading">
- <xsl:apply-templates/>
- </h4>
- </xsl:template>
-
- <xsl:template match="ddue:childElement">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="childElement"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:parentElement">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="parentElement"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:textValue">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'textValue'"/>
- <xsl:with-param name="title">
- <include item="textValue" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:elementInformation">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'elementInformation'"/>
- <xsl:with-param name="title">
- <include item="elementInformation" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:dotNetFrameworkEquivalent">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'dotNetFrameworkEquivalent'"/>
- <xsl:with-param name="title">
- <include item="dotNetFrameworkEquivalent" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:prerequisites">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'prerequisites'"/>
- <xsl:with-param name="title">
- <include item="prerequisites" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:type">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:robustProgramming">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'robustProgramming'"/>
- <xsl:with-param name="title">
- <include item="robustProgramming" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:security">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'security'"/>
- <xsl:with-param name="title">
- <include item="securitySection" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:externalResources">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'externalResources'"/>
- <xsl:with-param name="title">
- <include item="externalResources" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:demonstrates">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'demonstrates'"/>
- <xsl:with-param name="title">
- <include item="demonstrates" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:appliesTo">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'appliesTo'"/>
- <xsl:with-param name="title">
- <include item="appliesTo" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:conclusion">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:background">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'background'"/>
- <xsl:with-param name="title">
- <include item="background" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:whatsNew">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'whatsNew'"/>
- <xsl:with-param name="title">
- <include item="whatsNew" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:reference">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'reference'"/>
- <xsl:with-param name="title">
- <include item="reference" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:developerErrorMessageDocument">
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="name() = 'secondaryErrorTitle'">
- <xsl:if test="not(../ddue:nonLocErrorTitle)">
- <xsl:apply-templates select=".">
- <xsl:with-param name="newSection">yes</xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:when>
-
- <xsl:otherwise><xsl:apply-templates select="." /></xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-
- </xsl:template>
-
- <xsl:template match="ddue:nonLocErrorTitle">
- <xsl:if test="string-length(../ddue:nonLocErrorTitle[normalize-space(.)]) > 0 or string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0">
- <div id="errorTitleSection" class="section">
- <xsl:if test="../ddue:secondaryErrorTitle">
- <h4 class="subHeading"><include item="errorMessage"/></h4>
- <xsl:apply-templates select="../ddue:secondaryErrorTitle">
- <xsl:with-param name="newSection">no</xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
- <xsl:apply-templates/><p/>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:secondaryErrorTitle">
- <xsl:param name="newSection"/>
- <xsl:if test="string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0">
- <xsl:choose>
- <xsl:when test="$newSection = 'yes'">
- <div id="errorTitleSection" class="section">
- <xsl:apply-templates/><p/>
- </div>
- </xsl:when>
- <xsl:otherwise><xsl:apply-templates/><br/></xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
- <referenceLink target="{$id}" qualified="{$qualified}" />
- </xsl:template>
-
- <xsl:template match="ddue:snippets">
- <xsl:variable name="codeId" select="generate-id()" />
- <table class="filter" cellspacing="0" cellpadding="0">
- <tr id="curvedTabs_{$codeId}">
- <xsl:for-each select="ddue:snippet">
- <td class="leftTab" x-lang="{@language}"> </td>
- <td class="middleTab" x-lang="{@language}"> </td>
- <td class="rightTab" x-lang="{@language}"> </td>
- </xsl:for-each>
- </tr>
- <tr class="tabs" id="ct_{$codeId}">
- <xsl:for-each select="ddue:snippet">
-
- <xsl:variable name="style">
- <xsl:call-template name="languageCheck">
- <xsl:with-param name="codeLanguage" select="@language" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="languageEvent">
- <xsl:choose>
- <xsl:when test="$style != ''">
- <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>', '</xsl:text><xsl:value-of select="$style" />
- <xsl:text>');</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>toggleClass('ct_</xsl:text><xsl:value-of select="$codeId" />
- <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>','activeTab','tab'); curvedToggleClass('curvedTabs_</xsl:text><xsl:value-of select="$codeId"/>
- <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>'); toggleStyle('cb_</xsl:text><xsl:value-of select="$codeId"/>
- <xsl:text>', 'x-lang','</xsl:text><xsl:value-of select="@language"/>
- <xsl:text>','display','block','none');</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <td class="leftGrad" x-lang="{@language}"> </td>
- <td class="tab" x-lang="{@language}" onclick="{$languageEvent}">
- <include item="{@language}Label" />
- </td>
- <td class="rightGrad" x-lang="{@language}"> </td>
- </xsl:for-each>
- </tr>
- </table>
- <div id="cb_{$codeId}">
- <xsl:for-each select="ddue:snippet">
- <div class="code" x-lang="{@language}">
- <xsl:call-template name="codeSection" />
- </div>
- </xsl:for-each>
- </div>
- <script type="text/javascript">
- <xsl:if test="$languages != 'false'">
- languageFilter.registerTabbedArea(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','cb_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>);
- </xsl:if>
- toggleClass(<xsl:text>'ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','activeTab','tab');
- curvedToggleClass(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>,'x-lang', 'CSharp');
- toggleStyle(<xsl:text>'cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','display','block','none');
- </script>
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" />
- <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" />
-
- <h1 class="heading">
- <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
- <img id="{$toggleTitle}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:copy-of select="$title" />
- </span>
- </h1>
-
- <div id="{$toggleSection}" class="section" name="collapseableSection" style="">
- <xsl:copy-of select="$content" />
- </div>
-
- </xsl:template>
-
- <xsl:template name="subSection">
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <h4 class="subHeading">
- <xsl:copy-of select="$title" />
- </h4>
- <xsl:copy-of select="$content" />
-
- </xsl:template>
-
- <!-- capture authored glossary <link> nodes -->
- <xsl:template match="ddue:link[starts-with(.,'GTMT#')]">
- <!-- not supporting popup definitions; just show the display text -->
- <span data="link">
- <xsl:value-of select="substring-after(.,'GTMT#')"/>
- </span>
- </xsl:template>
-
-
- <!-- fail if any unknown elements are encountered -->
- <!--
- <xsl:template match="*">
- <xsl:message terminate="yes">
- <xsl:text>An unknown element was encountered.</xsl:text>
- </xsl:message>
- </xsl:template>
--->
-
- <xsl:template match="ddue:developerSampleDocument">
- <!-- show the topic intro -->
- <xsl:apply-templates select="ddue:introduction"/>
-
- <!-- the sample download list section from dsSample -->
- <xsl:if test="ddue:relatedTopics/ddue:sampleRef">
- <include item="{ddue:relatedTopics/ddue:sampleRef/@srcID}"/>
- </xsl:if>
-
- <!-- then the rest of the topic's content -->
- <xsl:for-each select="*">
- <xsl:choose>
- <!-- introduction was already captured above -->
- <xsl:when test="name() = 'introduction'"/>
-
- <xsl:otherwise>
- <xsl:apply-templates select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" /> + + <!-- sections --> + + <!-- the Remarks section includes content from these nodes, excluding the xaml sections are captured in the xaml syntax processing --> + <xsl:template name="HasRemarksContent"> + <xsl:choose> + <xsl:when test="normalize-space(ddue:content)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForImplementers)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForCallers)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForInheritors)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:platformNotes)">true</xsl:when> + <xsl:when test="normalize-space(ddue:sections/ddue:section[not( + starts-with(@address,'xamlValues') or + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage') or + starts-with(@address,'dependencyPropertyInfo') or + starts-with(@address,'routedEventInfo') + )])">true</xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:remarks"> + <xsl:variable name="hasRemarks"> + <xsl:call-template name="HasRemarksContent"/> + </xsl:variable> + <xsl:if test="$hasRemarks='true'"> + <xsl:choose> + <xsl:when test="not($group = 'namespace')"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'remarks'"/> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + <xsl:apply-templates select="../ddue:notesForImplementers"/> + <xsl:apply-templates select="../ddue:notesForCallers"/> + <xsl:apply-templates select="../ddue:notesForInheritors"/> + <xsl:apply-templates select="../ddue:platformNotes"/> + <include item="mshelpKTable"> + <parameter> + <xsl:text>tt_</xsl:text> + <xsl:value-of select="$key"/> + </parameter> + </include> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExamples"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'"/> + <xsl:with-param name="title"> + <include item="examplesTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + <xsl:call-template name="moreCodeSection"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- + ************************************************************** + CODE EXAMPLES section + ************************************************************** + --> + <!-- tasks/task nodes are inserted by TaskGrabberComponent which gets content from HowTo topics --> + <!-- these nodes are handled below in the moreCodeSection --> + <xsl:template match="ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/tasks"/> + + <xsl:template name="moreCodeSection"> + <xsl:variable name="gotCodeAlready" select="boolean( + (ddue:codeExample/ddue:legacy/ddue:content[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) or + (ddue:codeExample[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) + )"/> + + <xsl:variable name="gotMoreCode" select="(count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>1) or + ($gotCodeAlready and count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>0)"/> + + <!-- if no preceding code in the code examples section, display the tasks[1]/task[1] --> + <xsl:if test="not($gotCodeAlready)"> + <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks[1]/task[1]"> + <xsl:apply-templates select="ddue:introduction | ddue:codeExample"/> + </xsl:for-each> + </xsl:if> + + <xsl:if test="$gotMoreCode"> + <sections> + <h4 class="subHeading"> + <include item="mrefTaskMoreCodeHeading" /> + </h4> + <div class="subsection"> + <div class="listSection"> + <table class="members" width="100%" cellspacing="0"> + <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks/task"> + <xsl:choose> + <xsl:when test="not($gotCodeAlready) and position()=1"/> + <xsl:otherwise> + <tr valign="top"> + <td> + <conceptualLink target="{@topicId}"> + <xsl:value-of select="ddue:title"/> + </conceptualLink> + </td> + <td> + <xsl:choose> + <xsl:when test="ddue:introduction/ddue:para[1][normalize-space(.)!='']"> + <xsl:apply-templates select="ddue:introduction/ddue:para[1]/node()"/> + </xsl:when> + <xsl:when test="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1][normalize-space(.)!='']"> + <xsl:apply-templates select="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1]/node()"/> + </xsl:when> + </xsl:choose> + </td> + </tr> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </table> + </div> + </div> + </sections> + </xsl:if> + </xsl:template> + + <xsl:template name="threadSafety"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'threadSafety'"/> + <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="/document/comments/ddue:dduexml/ddue:threadSafety"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSafety"/> + </xsl:when> + <xsl:otherwise> + <include item="ThreadSafetyBP"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:notesForImplementers"> + <p/> + <b> + <include item="NotesForImplementers"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:notesForCallers"> + <p/> + <b> + <include item="NotesForCallers"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:notesForInheritors"> + <p/> + <b> + <include item="NotesForInheritors"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:platformNotes"> + <xsl:for-each select="ddue:platformNote[normalize-space(ddue:content)]"> + <p> + <include item="PlatformNote"> + <parameter> + <xsl:for-each select="ddue:platforms/ddue:platform"> + <xsl:variable name="platformName"><xsl:value-of select="."/></xsl:variable> + <include item="{$platformName}"/> + <xsl:if test="position() != last()">, </xsl:if> + </xsl:for-each> + </parameter> + <parameter><xsl:apply-templates select="ddue:content"/></parameter> + </include> + </p> + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:schemaHierarchy"> + <xsl:for-each select="ddue:link"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="position()"/> + </xsl:call-template> + <xsl:apply-templates select="."/> + <br/> + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:syntaxSection"> + <div id="syntaxSection" class="section"> + <div id="syntaxCodeBlocks"> + <xsl:for-each select="ddue:legacySyntax"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" > + <xsl:text>VisualBasic</xsl:text> + </xsl:when> + <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" > + <xsl:text>ManagedCPlusPlus</xsl:text> + </xsl:when> + <xsl:when test="@language = 'j#' or @language = 'jsharp'"> + <xsl:text>JSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xmlLang</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <span codeLanguage="{$codeLang}"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th align="left"> + <include item="{$codeLang}"/> + </th> + </tr> + <tr> + <td> + <pre> + <xsl:apply-templates xml:space="preserve"/> + </pre> + </td> + </tr> + </table> + </span> + + </xsl:for-each> + </div> + </div> + </xsl:template> + + <xsl:template name="seeAlsoSection"> + + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'"/> + <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param> + <xsl:with-param name="content"> + + <!-- Concepts sub-section --> + <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoConcepts"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Reference sub-section (always one of these in an API topic) --> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoReference"/> + </xsl:with-param> + + <xsl:with-param name="content"> + <xsl:call-template name="autogenSeeAlsoLinks"/> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + + <!-- Other Resources sub-section --> + <xsl:if test="ddue:externalLink"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoOtherResources"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'externalLink'"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- just skip over these --> + <xsl:template match="ddue:content | ddue:legacy"> + <xsl:apply-templates /> + </xsl:template> + + <!-- block elements --> + + <xsl:template match="ddue:table"> + <div class="listSection"> + <table class="members" width="50%" cellspacing="0" frame="lhs"> + <xsl:apply-templates /> + </table> + </div> + </xsl:template> + + <xsl:template match="ddue:tableHeader"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template match="ddue:row"> + <tr> + <xsl:apply-templates /> + </tr> + </xsl:template> + + <xsl:template match="ddue:entry"> + <td> + <xsl:apply-templates /> + </td> + </xsl:template> + + <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry"> + <th> + <xsl:apply-templates /> + </th> + </xsl:template> + + <xsl:template match="ddue:definitionTable"> + <dl> + <xsl:apply-templates /> + </dl> + </xsl:template> + + <xsl:template match="ddue:definedTerm"> + <dt><span class="nonLinkTerm"><xsl:apply-templates /></span></dt> + </xsl:template> + + <xsl:template match="ddue:definition"> + <dd> + <xsl:apply-templates /> + </dd> + </xsl:template> + + <xsl:template match="ddue:code"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" > + <xsl:text>VisualBasic</xsl:text> + </xsl:when> + <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" > + <xsl:text>ManagedCPlusPlus</xsl:text> + </xsl:when> + <xsl:when test="@language = 'j#' or @language = 'jsharp'"> + <xsl:text>JSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xmlLang</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="titleName" select="../../ddue:title"/> + + <xsl:choose> + <xsl:when test="(($titleName = 'Output') or ($titleName = 'Input') or ($titleName = 'SampleOutput'))"> + <div class="code"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th> + <xsl:text> </xsl:text> + </th> + + </tr> + <tr> + <td colspan="2"> + <pre> + <xsl:apply-templates/> + </pre> + </td> + </tr> + </table> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="codeSection"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template match="ddue:sampleCode"> + <div><b><xsl:value-of select="@language"/></b></div> + <div class="code"><pre><xsl:apply-templates /></pre></div> + </xsl:template> + + <xsl:template name="composeCode"> + <xsl:copy-of select="." /> + <xsl:variable name="next" select="following-sibling::*[1]" /> + <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())"> + <xsl:for-each select="$next"> + <xsl:call-template name="composeCode" /> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:alert"> + <div class="alert"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th align="left"> + <xsl:choose> + <xsl:when test="@class='tip'"> + <img class="note"> + <includeAttribute name="title" item="tipAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="tipTitle" /> + </xsl:when> + <xsl:when test="@class='caution' or @class='warning'"> + <img class="note"> + <includeAttribute name="title" item="cautionAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <include item="cautionTitle" /> + </xsl:when> + <xsl:when test="@class='security note'"> + <img class="note"> + <includeAttribute name="title" item="securityAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_security.gif</parameter> + </includeAttribute> + </img> + <include item="securityTitle" /> + </xsl:when> + <xsl:when test="@class='important'"> + <img class="note"> + <includeAttribute name="title" item="importantAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <include item="importantTitle" /> + </xsl:when> + <xsl:when test="@class='visual basic note'"> + <img class="note"> + <includeAttribute name="title" item="visualBasicAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualBasicTitle" /> + </xsl:when> + <xsl:when test="@class='visual c# note'"> + <img class="note"> + <includeAttribute name="title" item="visualC#AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualC#Title" /> + </xsl:when> + <xsl:when test="@class='visual c++ note'"> + <img class="note"> + <includeAttribute name="title" item="visualC++AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualC++Title" /> + </xsl:when> + <xsl:when test="@class='visual j# note'"> + <img class="note"> + <includeAttribute name="title" item="visualJ#AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualJ#Title" /> + </xsl:when> + <xsl:when test="@class='note'"> + <img class="note"> + <includeAttribute name="title" item="noteAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="noteTitle" /> + </xsl:when> + <xsl:otherwise> + <img class="note"> + <includeAttribute name="title" item="noteAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="{@class}" /> + </xsl:otherwise> + </xsl:choose> + </th> + </tr> + <tr> + <td> + <xsl:apply-templates/> + </td> + </tr> + </table> + </div> + </xsl:template> + + <xsl:template match="ddue:sections"> + <xsl:apply-templates select="ddue:section" /> + </xsl:template> + + <xsl:template match="ddue:section"> + <xsl:if test="descendant::ddue:content[normalize-space(.)]"> + <xsl:apply-templates select="@address" /> + <!-- Count all the possible ancestor root nodes --> + <xsl:variable name="a1" select="count(ancestor::ddue:attributesandElements)" /> + <xsl:variable name="a2" select="count(ancestor::ddue:codeExample)" /> + <xsl:variable name="a3" select="count(ancestor::ddue:dotNetFrameworkEquivalent)" /> + <xsl:variable name="a4" select="count(ancestor::ddue:elementInformation)" /> + <xsl:variable name="a5" select="count(ancestor::ddue:exceptions)" /> + <xsl:variable name="a6" select="count(ancestor::ddue:introduction)" /> + <xsl:variable name="a7" select="count(ancestor::ddue:languageReferenceRemarks)" /> + <xsl:variable name="a8" select="count(ancestor::ddue:nextSteps)" /> + <xsl:variable name="a9" select="count(ancestor::ddue:parameters)" /> + <xsl:variable name="a10" select="count(ancestor::ddue:prerequisites)" /> + <xsl:variable name="a11" select="count(ancestor::ddue:procedure)" /> + <xsl:variable name="a12" select="count(ancestor::ddue:relatedTopics)" /> + <xsl:variable name="a13" select="count(ancestor::ddue:remarks)" /> + <xsl:variable name="a14" select="count(ancestor::ddue:requirements)" /> + <xsl:variable name="a15" select="count(ancestor::ddue:schemaHierarchy)" /> + <xsl:variable name="a16" select="count(ancestor::ddue:syntaxSection)" /> + <xsl:variable name="a17" select="count(ancestor::ddue:textValue)" /> + <xsl:variable name="a18" select="count(ancestor::ddue:type)" /> + <xsl:variable name="a19" select="count(ancestor::ddue:section)" /> + <xsl:variable name="total" select="$a1+$a2+$a3+$a4+$a5+$a6+$a7+$a8+$a9+$a10+$a11+$a12+$a13+$a14+$a15+$a16+$a17+$a18+$a19" /> + <xsl:choose> + <xsl:when test="$total = 0"> + <xsl:variable name="sectionCount"> + <xsl:value-of select="count(preceding-sibling::ddue:section)"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="ddue:title"> + <h1 class="heading"> + <span onclick="ExpandCollapse(sectionToggle{$sectionCount})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(sectionToggle{$sectionCount}, event)" tabindex="0"> + <img id="sectionToggle{$sectionCount}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:value-of select="ddue:title" /> + </span> + </h1> + <div id="sectionSection{$sectionCount}" class="section" name="collapseableSection" style=""> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:when> + <xsl:otherwise> + <div id="sectionSection{$sectionCount}" class="seeAlsoNoToggleSection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections"/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="$total = 1"> + <h3 class="subHeading"> + <xsl:value-of select="ddue:title"/> + </h3> + <div class="subsection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:when> + <xsl:otherwise> + <h4 class="subHeading"> + <xsl:value-of select="ddue:title"/> + </h4> + <div class="subsection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> +<!-- + <xsl:template match="@address"> + <a name="{string(.)}" /> + </xsl:template> +--> + <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline"> + <span class="media"> + <xsl:if test="ddue:caption"> + <div class="caption"> + <xsl:apply-templates select="ddue:caption" /> + </div> + <br /> + </xsl:if> + <artLink target="{ddue:image/@xlink:href}" /> + </span> + </xsl:template> + + <xsl:template match="ddue:procedure"> + <xsl:if test="normalize-space(ddue:title)"> + <h3 class="procedureSubHeading"> + <xsl:value-of select="ddue:title"/> + </h3> + </xsl:if> + <div class="subSection"> + <xsl:apply-templates select="ddue:steps"/> + <xsl:apply-templates select="ddue:conclusion"/> + </div> + </xsl:template> + + <xsl:template match="ddue:steps"> + <xsl:choose> + <xsl:when test="@class = 'ordered'"> + <xsl:variable name="temp"> + <xsl:value-of select="count(ddue:step)"/> + </xsl:variable> + <xsl:if test="$temp = 1"> + <ul> + <xsl:apply-templates select="ddue:step"/> + </ul> + </xsl:if> + <xsl:if test="$temp > 1"> + <ol> + <xsl:apply-templates select="ddue:step"/> + </ol> + </xsl:if> + </xsl:when> + <xsl:when test="@class='bullet'"> + <ul> + <xsl:apply-templates select="ddue:step" /> + </ul> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:step"> + <li><xsl:apply-templates /></li> + </xsl:template> + + + <xsl:template match="ddue:inThisSection"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'inThisSection'"/> + <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:buildInstructions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'buildInstructions'"/> + <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:nextSteps"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'nextSteps'"/> + <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:requirements"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'requirementsTitle'"/> + <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- inline elements --> + + <xsl:template match="ddue:languageKeyword"> + <xsl:variable name="word" select="." /> + <span class="keyword" data="langKeyword" value="{$word}"> + <xsl:choose> + <xsl:when test="$word='null' or $word='Nothing' or $word='nullptr'"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </xsl:when> + <xsl:when test="$word='static' or $word='Shared'"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </xsl:when> + <xsl:when test="$word='virtual' or $word='Overridable'"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </xsl:when> + <xsl:when test="$word='true' or $word='True'"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </xsl:when> + <xsl:when test="$word='false' or $word='False'"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="." /> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + <!-- links --> + + <xsl:template match="ddue:dynamicLink[@type='inline']"> + <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" /> + <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" /> + <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" /> + </MSHelp:ktable> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='table']"> + <include item="mshelpKTable"> + <parameter> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </parameter> + </include> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='bulleted']"> + <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <xsl:attribute name="prefix"><ul><li></xsl:attribute> + <xsl:attribute name="postfix"></li></ul></xsl:attribute> + <xsl:attribute name="separator"></li><li></xsl:attribute> + </MSHelp:ktable> + </xsl:template> + + <xsl:template match="ddue:codeFeaturedElement"> + <xsl:if test="normalize-space(.)"> + <xsl:if test="count(preceding::ddue:codeFeaturedElement) > 0"><br/></xsl:if> + <b><xsl:apply-templates/></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:languageReferenceRemarks"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'languageReferenceRemarks'"/> + <xsl:with-param name="title"> + <include item="remarksTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attributesandElements"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'attributesAndElements'"/> + <xsl:with-param name="title"> + <include item="attributesAndElements" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attributes"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="attributes"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attribute"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:attribute/ddue:title"> + <h4 class="subHeading"> + <xsl:apply-templates/> + </h4> + </xsl:template> + + <xsl:template match="ddue:childElement"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="childElement"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:parentElement"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="parentElement"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:textValue"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'textValue'"/> + <xsl:with-param name="title"> + <include item="textValue" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:elementInformation"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'elementInformation'"/> + <xsl:with-param name="title"> + <include item="elementInformation" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:dotNetFrameworkEquivalent"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'dotNetFrameworkEquivalent'"/> + <xsl:with-param name="title"> + <include item="dotNetFrameworkEquivalent" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:prerequisites"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'prerequisites'"/> + <xsl:with-param name="title"> + <include item="prerequisites" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:type"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:robustProgramming"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'robustProgramming'"/> + <xsl:with-param name="title"> + <include item="robustProgramming" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:security"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'security'"/> + <xsl:with-param name="title"> + <include item="securitySection" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:externalResources"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'externalResources'"/> + <xsl:with-param name="title"> + <include item="externalResources" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:demonstrates"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'demonstrates'"/> + <xsl:with-param name="title"> + <include item="demonstrates" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:appliesTo"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'appliesTo'"/> + <xsl:with-param name="title"> + <include item="appliesTo" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:conclusion"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:background"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'background'"/> + <xsl:with-param name="title"> + <include item="background" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:whatsNew"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'whatsNew'"/> + <xsl:with-param name="title"> + <include item="whatsNew" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:reference"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'reference'"/> + <xsl:with-param name="title"> + <include item="reference" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:developerErrorMessageDocument"> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="name() = 'secondaryErrorTitle'"> + <xsl:if test="not(../ddue:nonLocErrorTitle)"> + <xsl:apply-templates select="."> + <xsl:with-param name="newSection">yes</xsl:with-param> + </xsl:apply-templates> + </xsl:if> + </xsl:when> + + <xsl:otherwise><xsl:apply-templates select="." /></xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + </xsl:template> + + <xsl:template match="ddue:nonLocErrorTitle"> + <xsl:if test="string-length(../ddue:nonLocErrorTitle[normalize-space(.)]) > 0 or string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0"> + <div id="errorTitleSection" class="section"> + <xsl:if test="../ddue:secondaryErrorTitle"> + <h4 class="subHeading"><include item="errorMessage"/></h4> + <xsl:apply-templates select="../ddue:secondaryErrorTitle"> + <xsl:with-param name="newSection">no</xsl:with-param> + </xsl:apply-templates> + </xsl:if> + <xsl:apply-templates/><p/> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:secondaryErrorTitle"> + <xsl:param name="newSection"/> + <xsl:if test="string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0"> + <xsl:choose> + <xsl:when test="$newSection = 'yes'"> + <div id="errorTitleSection" class="section"> + <xsl:apply-templates/><p/> + </div> + </xsl:when> + <xsl:otherwise><xsl:apply-templates/><br/></xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + <referenceLink target="{$id}" qualified="{$qualified}" /> + </xsl:template> + + <xsl:template match="ddue:snippets"> + <xsl:variable name="codeId" select="generate-id()" /> + <table class="filter" cellspacing="0" cellpadding="0"> + <tr id="curvedTabs_{$codeId}"> + <xsl:for-each select="ddue:snippet"> + <td class="leftTab" x-lang="{@language}"> </td> + <td class="middleTab" x-lang="{@language}"> </td> + <td class="rightTab" x-lang="{@language}"> </td> + </xsl:for-each> + </tr> + <tr class="tabs" id="ct_{$codeId}"> + <xsl:for-each select="ddue:snippet"> + + <xsl:variable name="style"> + <xsl:call-template name="languageCheck"> + <xsl:with-param name="codeLanguage" select="@language" /> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="languageEvent"> + <xsl:choose> + <xsl:when test="$style != ''"> + <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@language"/> + <xsl:text>', '</xsl:text><xsl:value-of select="$style" /> + <xsl:text>');</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>toggleClass('ct_</xsl:text><xsl:value-of select="$codeId" /> + <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>','activeTab','tab'); curvedToggleClass('curvedTabs_</xsl:text><xsl:value-of select="$codeId"/> + <xsl:text>','x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>'); toggleStyle('cb_</xsl:text><xsl:value-of select="$codeId"/> + <xsl:text>', 'x-lang','</xsl:text><xsl:value-of select="@language"/> + <xsl:text>','display','block','none');</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <td class="leftGrad" x-lang="{@language}"> </td> + <td class="tab" x-lang="{@language}" onclick="{$languageEvent}"> + <include item="{@language}Label" /> + </td> + <td class="rightGrad" x-lang="{@language}"> </td> + </xsl:for-each> + </tr> + </table> + <div id="cb_{$codeId}"> + <xsl:for-each select="ddue:snippet"> + <div class="code" x-lang="{@language}"> + <xsl:call-template name="codeSection" /> + </div> + </xsl:for-each> + </div> + <script type="text/javascript"> + <xsl:if test="$languages != 'false'"> + languageFilter.registerTabbedArea(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>','cb_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>); + </xsl:if> + toggleClass(<xsl:text>'ct_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','activeTab','tab'); + curvedToggleClass(<xsl:text>'curvedTabs_</xsl:text><xsl:value-of select="$codeId"/><xsl:text>'</xsl:text>,'x-lang', 'CSharp'); + toggleStyle(<xsl:text>'cb_</xsl:text><xsl:value-of select="$codeId" /><xsl:text>'</xsl:text>,'x-lang','CSharp','display','block','none'); + </script> + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="toggleSwitch" /> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" /> + <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" /> + + <h1 class="heading"> + <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0"> + <img id="{$toggleTitle}" onload="OnLoadImage(event)" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:copy-of select="$title" /> + </span> + </h1> + + <div id="{$toggleSection}" class="section" name="collapseableSection" style=""> + <xsl:copy-of select="$content" /> + </div> + + </xsl:template> + + <xsl:template name="subSection"> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <h4 class="subHeading"> + <xsl:copy-of select="$title" /> + </h4> + <xsl:copy-of select="$content" /> + + </xsl:template> + + <!-- capture authored glossary <link> nodes --> + <xsl:template match="ddue:link[starts-with(.,'GTMT#')]"> + <!-- not supporting popup definitions; just show the display text --> + <span data="link"> + <xsl:value-of select="substring-after(.,'GTMT#')"/> + </span> + </xsl:template> + + + <!-- fail if any unknown elements are encountered --> + <!-- + <xsl:template match="*"> + <xsl:message terminate="yes"> + <xsl:text>An unknown element was encountered.</xsl:text> + </xsl:message> + </xsl:template> +--> + + <xsl:template match="ddue:developerSampleDocument"> + <!-- show the topic intro --> + <xsl:apply-templates select="ddue:introduction"/> + + <!-- the sample download list section from dsSample --> + <xsl:if test="ddue:relatedTopics/ddue:sampleRef"> + <include item="{ddue:relatedTopics/ddue:sampleRef/@srcID}"/> + </xsl:if> + + <!-- then the rest of the topic's content --> + <xsl:for-each select="*"> + <xsl:choose> + <!-- introduction was already captured above --> + <xsl:when test="name() = 'introduction'"/> + + <xsl:otherwise> + <xsl:apply-templates select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/utilities_metadata.xsl b/tools/Sandcastle/Presentation/hana/transforms/utilities_metadata.xsl index 0dced60..8da8e5e 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/utilities_metadata.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/utilities_metadata.xsl @@ -1,928 +1,928 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_metadata.xsl" />
-
- <xsl:template name="insertMetadata">
- <xsl:if test="$metadata='true'">
- <xml>
- <xsl:call-template name="mshelpTitles" />
- <MSHelp:Attr Name="AssetID" Value="{$key}" />
- <!-- toc metadata -->
- <xsl:call-template name="linkMetadata" />
- <xsl:call-template name="indexMetadata" />
- <xsl:call-template name="helpMetadata" />
- <xsl:call-template name="helpPriorityMetadata" />
- <xsl:call-template name="apiTaggingMetadata" />
- <xsl:call-template name="mshelpDevlangAttributes" />
- <MSHelp:Attr Name="Locale">
- <includeAttribute name="Value" item="locale" />
- </MSHelp:Attr>
- <!-- attribute to allow F1 help integration -->
- <MSHelp:Attr Name="TopicType">
- <includeAttribute name="Value" item="TT_ManagedReference"/>
- </MSHelp:Attr>
-
- <!-- Abstract -->
- <xsl:choose>
- <xsl:when test="string-length($abstractSummary) > 254">
- <MSHelp:Attr Name="Abstract" Value="{normalize-space(concat(substring($abstractSummary,1,250), ' ...'))}" />
- </xsl:when>
- <xsl:when test="string-length($abstractSummary) > 0">
- <MSHelp:Attr Name="Abstract" Value="{normalize-space($abstractSummary)}" />
- </xsl:when>
- </xsl:choose>
-
- <xsl:call-template name="mshelpCodelangAttributes" />
- <xsl:call-template name="versionMetadata" />
- <xsl:call-template name="authoredMetadata" />
- </xml>
- </xsl:if>
- </xsl:template>
-
- <!-- add DocSet and Technology attributes depending on the versions that support this api -->
- <xsl:template name="versionMetadata">
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:if test="count(/document/reference/versions/versions[@name='netfw']/version) > 0">
- <MSHelp:Attr Name="Technology">
- <includeAttribute name="Value" item="desktopTechnologyAttribute" />
- </MSHelp:Attr>
- </xsl:if>
- <xsl:if test="count(/document/reference/versions/versions[@name='netcfw']/version) > 0 or normalize-space($supportedOnCf)!=''">
- <MSHelp:Attr Name="Technology">
- <includeAttribute name="Value" item="netcfTechnologyAttribute" />
- </MSHelp:Attr>
- <MSHelp:Attr Name="DocSet">
- <includeAttribute name="Value" item="netcfDocSetAttribute" />
- </MSHelp:Attr>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="authoredMetadata">
-
- <!-- authored attributes -->
- <xsl:for-each select="/document/metadata/attribute">
- <MSHelp:Attr Name="{@name}" Value="{text()}" />
- </xsl:for-each>
-
- <!-- authored K -->
- <xsl:for-each select="/document/metadata/keyword[@index='K']">
- <MSHelp:Keyword Index="K">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='K']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored F -->
- <xsl:for-each select="/document/metadata/keyword[@index='F']">
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='F']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored B -->
- <xsl:for-each select="/document/metadata/keyword[@index='B']">
- <MSHelp:Keyword Index="B">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='B']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- </xsl:template>
-
- <xsl:template name="mshelpTitles">
-
- <!-- Toc List title-->
- <MSHelp:TOCTitle>
- <includeAttribute name="Title" item="tocTitle">
- <parameter>
- <xsl:call-template name="topicTitlePlain" />
- </parameter>
- </includeAttribute>
- </MSHelp:TOCTitle>
-
- <!-- The Results List title -->
- <MSHelp:RLTitle>
- <includeAttribute name="Title" item="rlTitle">
- <parameter>
- <xsl:call-template name="topicTitlePlain">
- <xsl:with-param name="qualifyMembers" value="true()" />
- </xsl:call-template>
- </parameter>
- <parameter>
- <xsl:value-of select="$namespaceName"/>
- </parameter>
- </includeAttribute>
- </MSHelp:RLTitle>
-
- </xsl:template>
-
- <xsl:template name="apiTaggingMetadata">
- <xsl:if test="($group='type' or $group='member')">
- <MSHelp:Attr Name="APIType" Value="Managed" />
- <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" />
- <xsl:choose>
- <xsl:when test="$group='type'">
- <xsl:variable name="apiTypeName">
- <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/apidata/@name)" />
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type -->
- <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" />
- <xsl:choose>
- <xsl:when test="boolean($subgroup='delegate')">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.ctor')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Attr Name="APIName" Value="{substring(@api,3)}" />
- </xsl:for-each>
- <!-- Namespace + Type + Member for each member -->
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$group='member'">
- <xsl:variable name="apiTypeName">
- <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" />
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type + Member -->
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" />
- <xsl:choose>
- <xsl:when test="boolean($subgroup='property')">
- <!-- Namespace + Type + get_Member if get-able -->
- <!-- Namespace + Type + set_Member if set-able -->
- </xsl:when>
- <xsl:when test="boolean($subgroup='event')">
- <!-- Namespace + Type + add_Member -->
- <!-- Namespace + Type + remove_Member -->
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="linkMetadata">
- <!-- code entity reference keyword -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
-
- <xsl:if test="$subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="A" Term="{@api}" />
- </xsl:for-each>
- </xsl:if>
-
- <!-- frlrf keywords -->
- <xsl:choose>
- <xsl:when test="$group='namespace'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/apidata/@name),'.','')}" />
- </xsl:when>
- <!-- types & members, too -->
- <xsl:when test="$group='type'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'ClassTopic'),'.','')}" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/topicdata/@name, 'MembersTopic'),'.','')}" />
- </xsl:when>
- <xsl:when test="$group='member'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/containers/type/apidata/@name, 'Class', /document/reference/apidata/@name, 'Topic'),'.','')}" />
- </xsl:when>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="$group='namespace'">
- <MSHelp:Keyword Index="A" Term="{concat('frlrf',translate(@name,'.',''))}" />
- </xsl:when>
- <!-- types & members, too -->
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="oldIndexMetadata">
- <!-- K keywords -->
- <xsl:choose>
- <xsl:when test="$group='namespace'">
- <!-- namespace -->
- <xsl:variable name="namespace" select="/document/reference/apidata/@name" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="namespaceIndexEntry">
- <parameter><xsl:value-of select="$namespace" /></parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- </xsl:when>
- <xsl:when test="$group='type'">
- <!-- type -->
- <xsl:choose>
- <xsl:when test="count(/document/reference/templates/template) = 0">
- <!-- non-generic type -->
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter><xsl:value-of select="/document/reference/apidata/@name" /></parameter>
- <parameter><xsl:value-of select="$subgroup" /></parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter><xsl:value-of select="concat(/document/reference/containers/namespace[@api]/apidata/@name,'.',/document/reference/apidata/@name)" /></parameter>
- <parameter><xsl:value-of select="$subgroup" /></parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <xsl:otherwise>
- <!-- generic type -->
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name" />
- <xsl:for-each select="/document/reference/templates"><xsl:call-template name="csTemplatesInIndex" /></xsl:for-each>
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name" />
- <xsl:for-each select="/document/reference/templates">
- <xsl:call-template name="vbTemplates">
- <xsl:with-param name="seperator" select="string('%2C ')" />
- </xsl:call-template>
- </xsl:for-each>
- </parameter>
- <parameter><xsl:value-of select="$subgroup" /></parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:otherwise>
- </xsl:choose>
- <!-- an entry like: "FileClassifier class, about FileClassifier class" -->
- <xsl:if test="$subgroup='class' or $subgroup='structure' or $subgroup='interface'">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="aboutTypeIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup"/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- <!-- for enums, an entry for each enum member, e.g. "Sunken enumeration member" -->
- <xsl:if test="$subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="apidata/@name" />
- </parameter>
- <parameter>
- <xsl:text>enumMember</xsl:text>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:when test="($group='member') and (starts-with($key,'Overload:') or not(/document/reference/memberdata/@overload))">
- <!-- member -->
- <xsl:variable name="indexEntryItem">
- <xsl:choose>
- <xsl:when test="boolean($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:when test="boolean($subgroup)">
- <xsl:value-of select="$subgroup" />
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="count(/document/reference/templates/template) = 0">
- <!-- non-generic member -->
- <MSHelp:Keyword Index="K">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <includeAttribute name="Term" item="listTopicIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@name"/>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:otherwise>
- </xsl:choose>
- </MSHelp:Keyword>
- </xsl:when>
- <xsl:otherwise>
- <!-- generic member -->
- <MSHelp:Keyword Index="K">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <includeAttribute name="Term" item="listTopicIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@name"/>
- <xsl:for-each select="/document/reference/templates">
- <xsl:call-template name="csTemplatesInIndex" />
- </xsl:for-each>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- <xsl:for-each select="/document/reference/templates">
- <xsl:call-template name="csTemplatesInIndex" />
- </xsl:for-each>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:otherwise>
- </xsl:choose>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <includeAttribute name="Term" item="listTopicIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@name"/>
- <xsl:for-each select="/document/reference/templates">
- <xsl:call-template name="vbTemplates">
- <xsl:with-param name="seperator" select="string('%2C ')" />
- </xsl:call-template>
- </xsl:for-each>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- <xsl:for-each select="/document/reference/templates">
- <xsl:call-template name="vbTemplates">
- <xsl:with-param name="seperator" select="string('%2C ')" />
- </xsl:call-template>
- </xsl:for-each>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </xsl:otherwise>
- </xsl:choose>
- </MSHelp:Keyword>
- </xsl:otherwise>
- </xsl:choose>
- <!-- type + member -->
- <xsl:choose>
- <xsl:when test="count(/document/reference/containers/namespace[@api]/templates/template) = 0">
- <!-- non-generic type -->
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="concat(/document/reference/containers/type/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat(/document/reference/containers/namespace[@api]/apidata/@name,'.',/document/reference/apidata/@name)" />
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <xsl:otherwise>
- <!-- generic type -->
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/containers/namespace[@api]/apidata/@name"/>
- <xsl:for-each select="/document/reference/containers/namespace[@api]/templates">
- <xsl:call-template name="vbTemplates">
- <xsl:with-param name="seperator" select="string('%2C ')" />
- </xsl:call-template>
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="nameSubgroupIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/containers/namespace[@api]/apidata/@name"/>
- <xsl:for-each select="/document/reference/containers/namespace[@api]/templates">
- <xsl:call-template name="csTemplatesInIndex" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- <parameter>
- <xsl:value-of select="$indexEntryItem" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="($group='members' or $group='derivedtype')">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="listTopicIndexEntry">
- <parameter>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </parameter>
- <parameter>
- <xsl:value-of select="/document/reference/containers/type[@api]/apidata/@subgroup"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="helpMetadata">
- <!-- F keywords -->
- <xsl:choose>
- <!-- namespace pages get the namespace keyword, if it exists -->
- <xsl:when test="$group='namespace'">
- <xsl:variable name="namespace" select="/document/reference/apidata/@name" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{$namespace}" />
- </xsl:if>
- </xsl:when>
- <!-- type overview and member list pages get type and namespace.type keywords -->
- <xsl:when test="$group='type' or ($group='list' and $subgroup='members')">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotated" select="true()" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" />
- </xsl:if>
- <xsl:if test="$subgroup = 'enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" />
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- <xsl:call-template name="xamlMSHelpFKeywords"/>
- </xsl:when>
- <!-- member pages get member, type.member, and namepsace.type.member keywords -->
- <xsl:when test="$group='member'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotate" select="true()" />
- </xsl:call-template>
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="member">
- <xsl:choose>
- <!-- if the member is a constructor, use the member name for the type name -->
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="$type" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!--
- <xsl:choose>
- -->
- <!--
- <xsl:when test="$subgroup='constructor'">
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $type)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $type)}" />
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- -->
- <MSHelp:Keyword Index="F" Term="{$member}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
- <!--
- </xsl:otherwise>
- </xsl:choose>
- -->
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
-<xsl:template name="helpPriorityMetadata">
- <xsl:choose>
- <xsl:when test="$group='namespace' or $subgroup='members'">
- <MSHelp:Attr Name="HelpPriority" Value="1"/>
- </xsl:when>
- <xsl:when test="$group='type'">
- <MSHelp:Attr Name="HelpPriority" Value="2"/>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <!--
- <xsl:template name="apiName">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/containers/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- -->
-
- <xsl:template name="codeLang">
- <xsl:param name="codeLang" />
- <MSHelp:Attr Name="codelang" Value="{$codeLang}" />
- </xsl:template>
-
- <xsl:template name="mshelpDevlangAttributes">
- <xsl:for-each select="/document/syntax/div[@codeLanguage]">
- <xsl:if test="not(@codeLanguage=preceding::*/@codeLanguage)">
- <xsl:variable name="devlang">
- <xsl:choose>
- <xsl:when test="@codeLanguage = 'CSharp' or @codeLanguage = 'c#' or @codeLanguage = 'cs' or @codeLanguage = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'ManagedCPlusPlus' or @codeLanguage = 'cpp' or @codeLanguage = 'cpp#' or @codeLanguage = 'c' or @codeLanguage = 'c++' or @codeLanguage = 'C++' or @codeLanguage = 'kbLangCPP'" >
- <xsl:text>C++</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'JScript' or @codeLanguage = 'js' or @codeLanguage = 'jscript#' or @codeLanguage = 'jscript' or @codeLanguage = 'JScript' or @codeLanguage = 'kbJScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'VisualBasic' or @codeLanguage = 'vb' or @codeLanguage = 'vb#' or @codeLanguage = 'VB' or @codeLanguage = 'kbLangVB'" >
- <xsl:text>VB</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'VBScript' or @codeLanguage = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'JSharp' or @codeLanguage = 'j#' or @codeLanguage = 'jsharp' or @codeLanguage = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'xaml' or @codeLanguage = 'XAML'">
- <xsl:text>XAML</xsl:text>
- </xsl:when>
- <xsl:when test="@codeLanguage = 'xml' or @codeLanguage = 'XML'">
- <xsl:text>XML</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$devlang='other'" />
- <xsl:otherwise>
- <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <!--
- Additional F1 keywords for class, struct, and enum topics in a set of WPF namespaces.
- This template inserts the MSHelp:Keyword nodes.
- The keyword prefixes and the WPF namespaces are hard-coded in variables.
- -->
- <xsl:variable name="var_wpf_f1index_prefix_1">http://schemas.microsoft.com/winfx/2006/xaml/presentation#</xsl:variable>
- <xsl:variable name="var_wpf_f1index_prefix_1_namespaces">N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N:</xsl:variable>
-
- <xsl:template name="xamlMSHelpFKeywords">
- <xsl:if test="$subgroup='class' or $subgroup='enumeration' or $subgroup='structure'">
- <xsl:if test="boolean(contains($var_wpf_f1index_prefix_1_namespaces, concat('#',/document/reference/containers/namespace/@api,'#'))
- or starts-with($var_wpf_f1index_prefix_1_namespaces, concat(/document/reference/containers/namespace/@api,'#')))">
- <MSHelp:Keyword Index="F" Term="{concat($var_wpf_f1index_prefix_1, /document/reference/apidata/@name)}"/>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <!-- Index Logic -->
-
- <xsl:template name="indexMetadata">
- <xsl:choose>
- <!-- namespace topics get one unqualified index entry -->
- <xsl:when test="$group='namespace'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="namespaceIndexEntry">
- <parameter>
- <xsl:value-of select="msxsl:node-set($names)/name" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <!-- type overview topics get unqualified about -->
- <xsl:when test="$group='type'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="$namespace"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- <xsl:if test="$subgroup = 'class' or $subgroup= 'structure' or $subgroup= 'interface'">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="aboutTypeIndexEntry">
- <parameter>
- <include item="{$subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- </xsl:for-each>
- <xsl:if test="$subgroup = 'enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}MemberIndexEntry">
- <parameter>
- <xsl:value-of select="apidata/@name" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <!-- all member lists get unqualified entries, qualified entries, and unqualified sub-entries -->
- <xsl:when test="$group='list' and $subgroup='members'">
- <xsl:variable name="typeSubgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$typeSubgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="membersIndexEntry">
- <parameter>
- <include item="{$typeSubgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$typeSubgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <!-- enumeration topics also get entries for each member -->
- </xsl:when>
- <!-- other member list pages get unqualified sub-entries -->
- <xsl:when test="$group='list' and not($subgroup = 'overload')">
- <xsl:variable name="typeSubgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <include item="{$typeSubgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <!-- constructor (or constructor overload) topics get unqualified sub-entries using the type names -->
- <xsl:when test="($subgroup='constructor' and not(/document/reference/memberdata/@overload)) or ($subgroup='overload' and /document/reference/apidata/@subgroup = 'constructor')">
- <xsl:variable name="typeSubgroup" select="/document/reference/containers/type/apidata/@subgroup" />
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference/containers/type">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="constructorIndexEntry">
- <parameter>
- <include item="{$typeSubgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="constructorTypeIndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <!-- other member (or overload) topics get qualified and unqualified entries using the member names -->
- <xsl:when test="($group='member' and not(/document/reference/memberdata/@overload)) or $subgroup='overload'">
- <!-- no index entries for explicit interface implementations -->
- <xsl:if test="not(/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private')">
- <xsl:variable name="entryType">
- <xsl:choose>
- <xsl:when test="string($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <!-- derived type lists get unqualified sub-entries -->
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_metadata.xsl" /> + + <xsl:template name="insertMetadata"> + <xsl:if test="$metadata='true'"> + <xml> + <xsl:call-template name="mshelpTitles" /> + <MSHelp:Attr Name="AssetID" Value="{$key}" /> + <!-- toc metadata --> + <xsl:call-template name="linkMetadata" /> + <xsl:call-template name="indexMetadata" /> + <xsl:call-template name="helpMetadata" /> + <xsl:call-template name="helpPriorityMetadata" /> + <xsl:call-template name="apiTaggingMetadata" /> + <xsl:call-template name="mshelpDevlangAttributes" /> + <MSHelp:Attr Name="Locale"> + <includeAttribute name="Value" item="locale" /> + </MSHelp:Attr> + <!-- attribute to allow F1 help integration --> + <MSHelp:Attr Name="TopicType"> + <includeAttribute name="Value" item="TT_ManagedReference"/> + </MSHelp:Attr> + + <!-- Abstract --> + <xsl:choose> + <xsl:when test="string-length($abstractSummary) > 254"> + <MSHelp:Attr Name="Abstract" Value="{normalize-space(concat(substring($abstractSummary,1,250), ' ...'))}" /> + </xsl:when> + <xsl:when test="string-length($abstractSummary) > 0"> + <MSHelp:Attr Name="Abstract" Value="{normalize-space($abstractSummary)}" /> + </xsl:when> + </xsl:choose> + + <xsl:call-template name="mshelpCodelangAttributes" /> + <xsl:call-template name="versionMetadata" /> + <xsl:call-template name="authoredMetadata" /> + </xml> + </xsl:if> + </xsl:template> + + <!-- add DocSet and Technology attributes depending on the versions that support this api --> + <xsl:template name="versionMetadata"> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:if test="count(/document/reference/versions/versions[@name='netfw']/version) > 0"> + <MSHelp:Attr Name="Technology"> + <includeAttribute name="Value" item="desktopTechnologyAttribute" /> + </MSHelp:Attr> + </xsl:if> + <xsl:if test="count(/document/reference/versions/versions[@name='netcfw']/version) > 0 or normalize-space($supportedOnCf)!=''"> + <MSHelp:Attr Name="Technology"> + <includeAttribute name="Value" item="netcfTechnologyAttribute" /> + </MSHelp:Attr> + <MSHelp:Attr Name="DocSet"> + <includeAttribute name="Value" item="netcfDocSetAttribute" /> + </MSHelp:Attr> + </xsl:if> + </xsl:template> + + <xsl:template name="authoredMetadata"> + + <!-- authored attributes --> + <xsl:for-each select="/document/metadata/attribute"> + <MSHelp:Attr Name="{@name}" Value="{text()}" /> + </xsl:for-each> + + <!-- authored K --> + <xsl:for-each select="/document/metadata/keyword[@index='K']"> + <MSHelp:Keyword Index="K"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='K']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored F --> + <xsl:for-each select="/document/metadata/keyword[@index='F']"> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='F']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored B --> + <xsl:for-each select="/document/metadata/keyword[@index='B']"> + <MSHelp:Keyword Index="B"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='B']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + </xsl:template> + + <xsl:template name="mshelpTitles"> + + <!-- Toc List title--> + <MSHelp:TOCTitle> + <includeAttribute name="Title" item="tocTitle"> + <parameter> + <xsl:call-template name="topicTitlePlain" /> + </parameter> + </includeAttribute> + </MSHelp:TOCTitle> + + <!-- The Results List title --> + <MSHelp:RLTitle> + <includeAttribute name="Title" item="rlTitle"> + <parameter> + <xsl:call-template name="topicTitlePlain"> + <xsl:with-param name="qualifyMembers" value="true()" /> + </xsl:call-template> + </parameter> + <parameter> + <xsl:value-of select="$namespaceName"/> + </parameter> + </includeAttribute> + </MSHelp:RLTitle> + + </xsl:template> + + <xsl:template name="apiTaggingMetadata"> + <xsl:if test="($group='type' or $group='member')"> + <MSHelp:Attr Name="APIType" Value="Managed" /> + <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" /> + <xsl:choose> + <xsl:when test="$group='type'"> + <xsl:variable name="apiTypeName"> + <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/apidata/@name)" /> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type --> + <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" /> + <xsl:choose> + <xsl:when test="boolean($subgroup='delegate')"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.ctor')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Attr Name="APIName" Value="{substring(@api,3)}" /> + </xsl:for-each> + <!-- Namespace + Type + Member for each member --> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="$group='member'"> + <xsl:variable name="apiTypeName"> + <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" /> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type + Member --> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" /> + <xsl:choose> + <xsl:when test="boolean($subgroup='property')"> + <!-- Namespace + Type + get_Member if get-able --> + <!-- Namespace + Type + set_Member if set-able --> + </xsl:when> + <xsl:when test="boolean($subgroup='event')"> + <!-- Namespace + Type + add_Member --> + <!-- Namespace + Type + remove_Member --> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template name="linkMetadata"> + <!-- code entity reference keyword --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + + <xsl:if test="$subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="A" Term="{@api}" /> + </xsl:for-each> + </xsl:if> + + <!-- frlrf keywords --> + <xsl:choose> + <xsl:when test="$group='namespace'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/apidata/@name),'.','')}" /> + </xsl:when> + <!-- types & members, too --> + <xsl:when test="$group='type'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/apidata/@name, 'ClassTopic'),'.','')}" /> + </xsl:when> + <xsl:when test="$group='list'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/topicdata/@name, 'MembersTopic'),'.','')}" /> + </xsl:when> + <xsl:when test="$group='member'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',/document/reference/containers/namespace/apidata/@name, /document/reference/containers/type/apidata/@name, 'Class', /document/reference/apidata/@name, 'Topic'),'.','')}" /> + </xsl:when> + </xsl:choose> + <xsl:choose> + <xsl:when test="$group='namespace'"> + <MSHelp:Keyword Index="A" Term="{concat('frlrf',translate(@name,'.',''))}" /> + </xsl:when> + <!-- types & members, too --> + </xsl:choose> + </xsl:template> + + <xsl:template name="oldIndexMetadata"> + <!-- K keywords --> + <xsl:choose> + <xsl:when test="$group='namespace'"> + <!-- namespace --> + <xsl:variable name="namespace" select="/document/reference/apidata/@name" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="namespaceIndexEntry"> + <parameter><xsl:value-of select="$namespace" /></parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + </xsl:when> + <xsl:when test="$group='type'"> + <!-- type --> + <xsl:choose> + <xsl:when test="count(/document/reference/templates/template) = 0"> + <!-- non-generic type --> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter><xsl:value-of select="/document/reference/apidata/@name" /></parameter> + <parameter><xsl:value-of select="$subgroup" /></parameter> + </includeAttribute> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter><xsl:value-of select="concat(/document/reference/containers/namespace[@api]/apidata/@name,'.',/document/reference/apidata/@name)" /></parameter> + <parameter><xsl:value-of select="$subgroup" /></parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <xsl:otherwise> + <!-- generic type --> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name" /> + <xsl:for-each select="/document/reference/templates"><xsl:call-template name="csTemplatesInIndex" /></xsl:for-each> + </parameter> + <parameter> + <xsl:value-of select="$subgroup" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name" /> + <xsl:for-each select="/document/reference/templates"> + <xsl:call-template name="vbTemplates"> + <xsl:with-param name="seperator" select="string('%2C ')" /> + </xsl:call-template> + </xsl:for-each> + </parameter> + <parameter><xsl:value-of select="$subgroup" /></parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:otherwise> + </xsl:choose> + <!-- an entry like: "FileClassifier class, about FileClassifier class" --> + <xsl:if test="$subgroup='class' or $subgroup='structure' or $subgroup='interface'"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="aboutTypeIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name" /> + </parameter> + <parameter> + <xsl:value-of select="$subgroup"/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + <!-- for enums, an entry for each enum member, e.g. "Sunken enumeration member" --> + <xsl:if test="$subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="apidata/@name" /> + </parameter> + <parameter> + <xsl:text>enumMember</xsl:text> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + <xsl:when test="($group='member') and (starts-with($key,'Overload:') or not(/document/reference/memberdata/@overload))"> + <!-- member --> + <xsl:variable name="indexEntryItem"> + <xsl:choose> + <xsl:when test="boolean($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:when test="boolean($subgroup)"> + <xsl:value-of select="$subgroup" /> + </xsl:when> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="count(/document/reference/templates/template) = 0"> + <!-- non-generic member --> + <MSHelp:Keyword Index="K"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <includeAttribute name="Term" item="listTopicIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@name"/> + </parameter> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name"/> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:otherwise> + </xsl:choose> + </MSHelp:Keyword> + </xsl:when> + <xsl:otherwise> + <!-- generic member --> + <MSHelp:Keyword Index="K"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <includeAttribute name="Term" item="listTopicIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@name"/> + <xsl:for-each select="/document/reference/templates"> + <xsl:call-template name="csTemplatesInIndex" /> + </xsl:for-each> + </parameter> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name"/> + <xsl:for-each select="/document/reference/templates"> + <xsl:call-template name="csTemplatesInIndex" /> + </xsl:for-each> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:otherwise> + </xsl:choose> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <includeAttribute name="Term" item="listTopicIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@name"/> + <xsl:for-each select="/document/reference/templates"> + <xsl:call-template name="vbTemplates"> + <xsl:with-param name="seperator" select="string('%2C ')" /> + </xsl:call-template> + </xsl:for-each> + </parameter> + <parameter> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name"/> + <xsl:for-each select="/document/reference/templates"> + <xsl:call-template name="vbTemplates"> + <xsl:with-param name="seperator" select="string('%2C ')" /> + </xsl:call-template> + </xsl:for-each> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </xsl:otherwise> + </xsl:choose> + </MSHelp:Keyword> + </xsl:otherwise> + </xsl:choose> + <!-- type + member --> + <xsl:choose> + <xsl:when test="count(/document/reference/containers/namespace[@api]/templates/template) = 0"> + <!-- non-generic type --> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="concat(/document/reference/containers/type/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat(/document/reference/containers/namespace[@api]/apidata/@name,'.',/document/reference/apidata/@name)" /> + </xsl:otherwise> + </xsl:choose> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <xsl:otherwise> + <!-- generic type --> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/containers/namespace[@api]/apidata/@name"/> + <xsl:for-each select="/document/reference/containers/namespace[@api]/templates"> + <xsl:call-template name="vbTemplates"> + <xsl:with-param name="seperator" select="string('%2C ')" /> + </xsl:call-template> + </xsl:for-each> + <xsl:text>.</xsl:text> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="nameSubgroupIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/containers/namespace[@api]/apidata/@name"/> + <xsl:for-each select="/document/reference/containers/namespace[@api]/templates"> + <xsl:call-template name="csTemplatesInIndex" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </parameter> + <parameter> + <xsl:value-of select="$indexEntryItem" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="($group='members' or $group='derivedtype')"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="listTopicIndexEntry"> + <parameter> + <xsl:value-of select="/document/reference/apidata/@name" /> + </parameter> + <parameter> + <xsl:value-of select="/document/reference/containers/type[@api]/apidata/@subgroup"/> + </parameter> + <parameter> + <xsl:value-of select="$subgroup" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="helpMetadata"> + <!-- F keywords --> + <xsl:choose> + <!-- namespace pages get the namespace keyword, if it exists --> + <xsl:when test="$group='namespace'"> + <xsl:variable name="namespace" select="/document/reference/apidata/@name" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{$namespace}" /> + </xsl:if> + </xsl:when> + <!-- type overview and member list pages get type and namespace.type keywords --> + <xsl:when test="$group='type' or ($group='list' and $subgroup='members')"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotated" select="true()" /> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="F" Term="{$type}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" /> + </xsl:if> + <xsl:if test="$subgroup = 'enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" /> + </xsl:if> + </xsl:for-each> + </xsl:if> + <xsl:call-template name="xamlMSHelpFKeywords"/> + </xsl:when> + <!-- member pages get member, type.member, and namepsace.type.member keywords --> + <xsl:when test="$group='member'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotate" select="true()" /> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="member"> + <xsl:choose> + <!-- if the member is a constructor, use the member name for the type name --> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="$type" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- + <xsl:choose> + --> + <!-- + <xsl:when test="$subgroup='constructor'"> + <MSHelp:Keyword Index="F" Term="{$type}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $type)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $type)}" /> + </xsl:if> + </xsl:when> + <xsl:otherwise> + --> + <MSHelp:Keyword Index="F" Term="{$member}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" /> + </xsl:if> + <!-- + </xsl:otherwise> + </xsl:choose> + --> + </xsl:when> + </xsl:choose> +</xsl:template> + +<xsl:template name="helpPriorityMetadata"> + <xsl:choose> + <xsl:when test="$group='namespace' or $subgroup='members'"> + <MSHelp:Attr Name="HelpPriority" Value="1"/> + </xsl:when> + <xsl:when test="$group='type'"> + <MSHelp:Attr Name="HelpPriority" Value="2"/> + </xsl:when> + </xsl:choose> + </xsl:template> + + <!-- + <xsl:template name="apiName"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/containers/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + --> + + <xsl:template name="codeLang"> + <xsl:param name="codeLang" /> + <MSHelp:Attr Name="codelang" Value="{$codeLang}" /> + </xsl:template> + + <xsl:template name="mshelpDevlangAttributes"> + <xsl:for-each select="/document/syntax/div[@codeLanguage]"> + <xsl:if test="not(@codeLanguage=preceding::*/@codeLanguage)"> + <xsl:variable name="devlang"> + <xsl:choose> + <xsl:when test="@codeLanguage = 'CSharp' or @codeLanguage = 'c#' or @codeLanguage = 'cs' or @codeLanguage = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'ManagedCPlusPlus' or @codeLanguage = 'cpp' or @codeLanguage = 'cpp#' or @codeLanguage = 'c' or @codeLanguage = 'c++' or @codeLanguage = 'C++' or @codeLanguage = 'kbLangCPP'" > + <xsl:text>C++</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'JScript' or @codeLanguage = 'js' or @codeLanguage = 'jscript#' or @codeLanguage = 'jscript' or @codeLanguage = 'JScript' or @codeLanguage = 'kbJScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'VisualBasic' or @codeLanguage = 'vb' or @codeLanguage = 'vb#' or @codeLanguage = 'VB' or @codeLanguage = 'kbLangVB'" > + <xsl:text>VB</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'VBScript' or @codeLanguage = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'JSharp' or @codeLanguage = 'j#' or @codeLanguage = 'jsharp' or @codeLanguage = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'xaml' or @codeLanguage = 'XAML'"> + <xsl:text>XAML</xsl:text> + </xsl:when> + <xsl:when test="@codeLanguage = 'xml' or @codeLanguage = 'XML'"> + <xsl:text>XML</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$devlang='other'" /> + <xsl:otherwise> + <MSHelp:Attr Name="DevLang" Value="{$devlang}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- + Additional F1 keywords for class, struct, and enum topics in a set of WPF namespaces. + This template inserts the MSHelp:Keyword nodes. + The keyword prefixes and the WPF namespaces are hard-coded in variables. + --> + <xsl:variable name="var_wpf_f1index_prefix_1">http://schemas.microsoft.com/winfx/2006/xaml/presentation#</xsl:variable> + <xsl:variable name="var_wpf_f1index_prefix_1_namespaces">N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N:</xsl:variable> + + <xsl:template name="xamlMSHelpFKeywords"> + <xsl:if test="$subgroup='class' or $subgroup='enumeration' or $subgroup='structure'"> + <xsl:if test="boolean(contains($var_wpf_f1index_prefix_1_namespaces, concat('#',/document/reference/containers/namespace/@api,'#')) + or starts-with($var_wpf_f1index_prefix_1_namespaces, concat(/document/reference/containers/namespace/@api,'#')))"> + <MSHelp:Keyword Index="F" Term="{concat($var_wpf_f1index_prefix_1, /document/reference/apidata/@name)}"/> + </xsl:if> + </xsl:if> + </xsl:template> + + <!-- Index Logic --> + + <xsl:template name="indexMetadata"> + <xsl:choose> + <!-- namespace topics get one unqualified index entry --> + <xsl:when test="$group='namespace'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="namespaceIndexEntry"> + <parameter> + <xsl:value-of select="msxsl:node-set($names)/name" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <!-- type overview topics get unqualified about --> + <xsl:when test="$group='type'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="$namespace"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + <xsl:if test="$subgroup = 'class' or $subgroup= 'structure' or $subgroup= 'interface'"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="aboutTypeIndexEntry"> + <parameter> + <include item="{$subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + </xsl:for-each> + <xsl:if test="$subgroup = 'enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}MemberIndexEntry"> + <parameter> + <xsl:value-of select="apidata/@name" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + <!-- all member lists get unqualified entries, qualified entries, and unqualified sub-entries --> + <xsl:when test="$group='list' and $subgroup='members'"> + <xsl:variable name="typeSubgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$typeSubgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="membersIndexEntry"> + <parameter> + <include item="{$typeSubgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$typeSubgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <!-- enumeration topics also get entries for each member --> + </xsl:when> + <!-- other member list pages get unqualified sub-entries --> + <xsl:when test="$group='list' and not($subgroup = 'overload')"> + <xsl:variable name="typeSubgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <include item="{$typeSubgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <!-- constructor (or constructor overload) topics get unqualified sub-entries using the type names --> + <xsl:when test="($subgroup='constructor' and not(/document/reference/memberdata/@overload)) or ($subgroup='overload' and /document/reference/apidata/@subgroup = 'constructor')"> + <xsl:variable name="typeSubgroup" select="/document/reference/containers/type/apidata/@subgroup" /> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference/containers/type"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="constructorIndexEntry"> + <parameter> + <include item="{$typeSubgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="constructorTypeIndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <!-- other member (or overload) topics get qualified and unqualified entries using the member names --> + <xsl:when test="($group='member' and not(/document/reference/memberdata/@overload)) or $subgroup='overload'"> + <!-- no index entries for explicit interface implementations --> + <xsl:if test="not(/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private')"> + <xsl:variable name="entryType"> + <xsl:choose> + <xsl:when test="string($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + <!-- derived type lists get unqualified sub-entries --> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/hana/transforms/utilities_reference.xsl index f1316e8..d35d378 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/utilities_reference.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/utilities_reference.xsl @@ -1,2442 +1,2442 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_reference.xsl"/>
-
- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" />
-<!--
- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" />
--->
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
- <xsl:param name="metadata" value="false" />
- <xsl:param name="languages">false</xsl:param>
- <xsl:param name="useOverloadRowsInMemberlists" select="false()"/>
-
- <xsl:include href="utilities_metadata.xsl" />
- <xsl:include href="xamlSyntax.xsl"/>
-
- <xsl:template match="/">
- <html>
- <head>
- <META NAME="save" CONTENT="history"/>
- <title><xsl:call-template name="topicTitlePlain"/></title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertFilename" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
-
- <xsl:call-template name="upperBodyStuff"/>
- <!--<xsl:call-template name="control"/>-->
- <xsl:call-template name="main"/>
- <xsl:if test="$languages != 'false'">
- <script type="text/javascript">
- var data = new DataStore('docs');
- registerEventHandler(window, 'load', function() {languageFilter.select(data)});
- </script>
- </xsl:if>
- </body>
- </html>
- </xsl:template>
-
- <!-- useful global variables -->
-
- <xsl:variable name="group">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@group" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@group" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="subgroup">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@subgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="subsubgroup">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@subsubgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="pseudo" select="boolean(/document/reference/topicdata[@pseudo='true'])"/>
-
- <xsl:variable name="namespaceName">
- <xsl:value-of select="substring-after(/document/reference/containers/namespace/@api,':')"/>
- </xsl:variable>
-
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- <link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>Dropdown.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>script_manifold.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>LanguageFilter.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>DataStore.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>CommonUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>MemberFilter.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template match="parameters">
- <div id="parameters">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="parametersTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="parameter">
- <xsl:variable name="paramName" select="@name"/>
- <dl paramName="{$paramName}">
- <dt>
- <span class="parameter">
- <xsl:value-of select="$paramName"/>
- </span>
- </dt>
- <dd>
- <xsl:apply-templates select="*[1]" mode="link" />
- <!--
- <xsl:choose>
- <xsl:when test="type">
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="type/@api" />
- <xsl:with-param name="qualified" select="true()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="*[1]" />
- </xsl:otherwise>
- </xsl:choose>
- -->
- <br />
- <xsl:call-template name="getParameterDescription">
- <xsl:with-param name="name" select="@name" />
- </xsl:call-template>
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template match="implements">
- <xsl:if test="member">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="implementsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="member">
- <referenceLink target="{@api}" qualified="true" />
- <br />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="element" mode="root">
- <tr>
- <td>
- <xsl:choose>
- <xsl:when test="apidata/@name = ''">
- <referenceLink target="{@api}" qualified="false">
- <include item="defaultNamespace" />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="namespace">
- <xsl:variable name="typeVisibility">
- <xsl:choose>
- <xsl:when test="typedata/@visibility='family' or typedata/@visibility='family or assembly' or typedata/@visibility='assembly'">prot</xsl:when>
- <xsl:when test="typedata/@visibility='private'">priv</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <tr>
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:text>; public</xsl:text>
- </xsl:attribute>
- <td>
- <xsl:call-template name="typeIcon">
- <xsl:with-param name="typeVisibility" select="$typeVisibility" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="member">
- <xsl:variable name="inheritedMember">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:variable>
- <xsl:variable name="staticMember">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:variable>
- <xsl:variable name="supportedOnXna">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:variable>
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:variable name="protectedMember">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:variable>
- <tr>
- <xsl:attribute name="data">
- <xsl:choose>
- <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- <xsl:text>explicit</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subsubgroup">
- <xsl:value-of select="apidata/@subsubgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>; public</xsl:text>
- </xsl:when>
- <xsl:when test="normalize-space($protectedMember)!=''">
- <xsl:text>; protected</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; public</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="normalize-space($staticMember)!=''">
- <xsl:text>; static</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; instance</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="normalize-space($inheritedMember)!=''">
- <xsl:text>; inherited</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; declared</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="normalize-space($supportedOnCf)!=''">
- <xsl:text>; compact</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; none</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="normalize-space($supportedOnXna)!=''">
- <xsl:text>; xna</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; none</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td>
- <xsl:call-template name="memberIcons">
- <xsl:with-param name="memberVisibility">
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when>
- <xsl:when test="memberdata/@visibility='private'">priv</xsl:when>
- <xsl:when test="memberdata[@visibility='public']">pub</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="staticMember" select="normalize-space($staticMember)" />
- <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/>
- <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:if test="memberdata[@overload='true']">
- <include item="Overloaded"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="@signatureset">
- <!-- TODO add boilerplate for other members in the sig set -->
- </xsl:when>
- <xsl:when test="not(topicdata[@subgroup='overload'])">
- <xsl:choose>
- <xsl:when test="normalize-space($inheritedMember)!=''">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="containers/type/@api" />
- <xsl:with-param name="qualified" select="false()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- -->
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides/member">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="overrides/member/@api"/>
- <xsl:with-param name="qualified" select="true()"/>
- </xsl:call-template>
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="enumeration">
- <tr>
- <xsl:variable name="id" select="@api" />
- <td target="{$id}">
- <span class="referenceNoLink"><xsl:value-of select="apidata/@name"/></span>
- </td>
- <td>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="derivedType">
- <tr>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
-
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="($group != 'member') and ($subgroup != 'DerivedTypeList') and not(contains($key, containers/type/@api))">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="containers/type/@api" />
- <xsl:with-param name="qualified" select="false()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- -->
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:apply-templates select="overrides/member" />
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
- </td>
- </tr>
-
-
- </xsl:template>
-
- <xsl:template match="element" mode="overload">
- <tr>
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>; public</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='family'">
- <xsl:text>; protected</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; public</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="memberdata/@static = 'true'">
- <xsl:text>; static</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; instance</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="string(containers/type/@api) = $key">
- <xsl:text>; declared</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; inherited</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="($group != 'member') and ($subgroup != 'overload') and not(contains($key, containers/type/@api))">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="containers/type/@api" />
- <xsl:with-param name="qualified" select="false()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- -->
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:apply-templates select="overrides/member" />
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
-
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template name="insertFilename">
- <meta name="guid">
- <xsl:attribute name="content">
- <xsl:value-of select="/document/reference/file/@name" />
- </xsl:attribute>
- </meta>
- </xsl:template>
-
- <!-- writing templates -->
-
- <xsl:template name="csTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text><</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>></xsl:text>
- </xsl:template>
-
- <xsl:template name="csTemplatesInIndex" >
- <xsl:text>%3C</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:text>%2C </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>%3E</xsl:text>
- </xsl:template>
-
- <xsl:template name="vbTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text>(Of </xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <xsl:template name="typeTitle">
- <xsl:if test="containers/container[@type]">
- <xsl:for-each select="containers/container[@type]">
- <xsl:call-template name="typeTitle" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="count(templates/template) > 0">
- <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <!-- document body -->
-
- <!-- control window -->
-
- <xsl:template name="control">
- <div id="control">
- <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/>
- </div>
- </xsl:template>
-
- <!-- Title in topic -->
-
- <!-- Title in topic -->
-
- <xsl:template name="topicTitlePlain">
- <xsl:param name="qualifyMembers" select="false()" />
- <include>
- <xsl:attribute name="item">
- <xsl:if test="boolean(/document/reference/templates) and not($group='list')">
- <xsl:text>generic_</xsl:text>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="string($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:when test="string($subgroup)">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$group" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNamePlain">
- <xsl:with-param name="qualifyMembers" select="$qualifyMembers" />
- </xsl:call-template>
- </parameter>
- <parameter>
- <xsl:if test="document/reference/memberdata/@overload" >
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="parameterTypesPlain" />
- </xsl:for-each>
- </xsl:if>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template name="topicTitleDecorated">
- <xsl:param name="titleType" />
- <include>
- <xsl:attribute name="item">
- <xsl:choose>
- <xsl:when test="$titleType = 'tocTitle' and $group='namespace'">
- <xsl:text>tocTitle</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="string($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:when test="string($subgroup)">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:value-of select="/document/reference/apidata/@subgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$group" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNameDecorated">
- <xsl:with-param name="titleType" select="$titleType" />
- </xsl:call-template>
- </parameter>
- <parameter>
- <xsl:if test="document/reference/memberdata/@overload" >
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="parameterTypesDecorated" />
- </xsl:for-each>
- </xsl:if>
- </parameter>
- </include>
- </xsl:template>
-
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="mainSection">
-
- <div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/>
- <xsl:call-template name="head" />
- <xsl:call-template name="body" />
- <xsl:call-template name="foot" />
- </div>
- </div>
-
- </xsl:template>
-
- <xsl:template name="head">
- <include item="header" />
- </xsl:template>
-
- <xsl:template name="syntaxBlocks">
- <table class="filter" cellspacing="0" cellpadding="0">
- <tr id="curvedSyntaxTabs">
- <xsl:for-each select="div[@codeLanguage]">
- <td class="leftTab" x-lang="{@codeLanguage}"> </td>
- <td class="middleTab" x-lang="{@codeLanguage}"> </td>
- <td class="rightTab" x-lang="{@codeLanguage}"> </td>
- </xsl:for-each>
- </tr>
- <tr class="tabs" id="syntaxTabs">
- <xsl:for-each select="div[@codeLanguage]">
-
- <xsl:variable name="style">
- <xsl:call-template name="languageCheck">
- <xsl:with-param name="codeLanguage" select="@codeLanguage" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:variable name="languageEvent">
- <xsl:choose>
- <xsl:when test="$style != ''">
- <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@codeLanguage"/>
- <xsl:text>', '</xsl:text><xsl:value-of select="$style" />
- <xsl:text>');</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>toggleClass('syntaxTabs','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/>
- <xsl:text>','activeTab','tab'); curvedToggleClass('curvedSyntaxTabs','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/>
- <xsl:text>');toggleStyle('syntaxBlocks','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/>
- <xsl:text>','display','block','none');</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <td class="leftGrad" x-lang="{@codeLanguage}"> </td>
- <td class="tab" x-lang="{@codeLanguage}" onclick="{$languageEvent}"><include item="{@codeLanguage}Label" /></td>
- <td class="rightGrad" x-lang="{@codeLanguage}"> </td>
- </xsl:for-each>
- </tr>
- </table>
- <div id="syntaxBlocks">
- <xsl:for-each select="div[@codeLanguage]">
- <xsl:variable name="language" select="@codeLanguage" />
- <div class="code" x-lang="{@codeLanguage}">
- <xsl:if test="/document/USyntax/div/@codeLanguage = $language">
- <div id="{$language}Declaration" onclick="toggleSelect({$language}DeclarationImage,{$language}DeclarationSection);">
- <img id="{$language}DeclarationImage" onmouseover="mouseOverCheck({$language}DeclarationImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)" onmouseout="mouseOutCheck({$language}DeclarationImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_selected.gif</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- <span class="syntaxLabel"><include item="declarationLabel" /></span>
- </img>
- </div>
- <br/>
- </xsl:if>
- <div id="{$language}DeclarationSection">
- <pre><xsl:copy-of select="./node()" /></pre>
- </div>
- <xsl:for-each select="/document/USyntax/div[@codeLanguage]">
- <xsl:if test="@codeLanguage = $language">
- <div id="{$language}Usage" onclick="toggleSelect({$language}UsageImage,{$language}UsageSection);">
- <img id="{$language}UsageImage" onmouseover="mouseOverCheck({$language}UsageImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)" onmouseout="mouseOutCheck({$language}UsageImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>twirl_selected.gif</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- <span class="syntaxLabel"><include item="usageLabel" /></span>
- </img>
- </div>
- <div id="{$language}UsageSection">
- <pre><xsl:copy-of select="./node()" /></pre>
- </div>
- </xsl:if>
- </xsl:for-each>
- </div>
- </xsl:for-each>
- </div>
- <script type="text/javascript">
- <xsl:text>
- toggleClass('syntaxTabs','x-lang','</xsl:text>
- <xsl:value-of select="div[1]/@codeLanguage" />
- <xsl:text>','activeTab','tab');
- toggleStyle('syntaxBlocks','x-lang','</xsl:text>
- <xsl:value-of select="div[1]/@codeLanguage" />
- <xsl:text>','display','block','none');
- curvedToggleClass('curvedSyntaxTabs', 'x-lang', '</xsl:text>
- <xsl:value-of select="div[1]/@codeLanguage" />
- <xsl:text>');
- </xsl:text>
- <xsl:if test="$languages != 'false'">
- languageFilter.registerTabbedArea('curvedSyntaxTabs', 'syntaxTabs', 'syntaxBlocks');
- </xsl:if>
- </script>
- </xsl:template>
-
- <xsl:template name="languageSyntaxBlock">
- <xsl:param name="language" select="@codeLanguage"/>
- <span codeLanguage="{$language}">
- <table>
- <tr>
- <th>
- <include item="{$language}" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:template>
-
- <xsl:template match="elements" mode="root">
- <xsl:if test="count(element) > 0">
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'namespaces'"/>
- <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <div class="listsection">
- <table class="members" id="memberList" frame="lhs" cellspacing="0">
- <tr>
- <th class="nameColumn">
- <include item="namespaceNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="namespaceDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="root">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="namespaceSection">
- <xsl:param name="listSubgroup" />
- <xsl:variable name="header" select="concat($listSubgroup, 'TypesFilterLabel')"/>
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="$listSubgroup"/>
- <xsl:with-param name="title">
- <include item="{$header}" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="namespaceList">
- <xsl:with-param name="listSubgroup" select="$listSubgroup" />
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="elements" mode="namespace">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'types'" />
- <xsl:with-param name="title">
- <include item="typesTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <table class="filter" cellspacing="0" cellpadding="0">
- <tr id="curvedTypeTabs">
- <td class="leftTab" value="all"> </td>
- <td class="middleTab" value="all"> </td>
- <td class="rightTab" value="all"> </td>
- <xsl:if test="element/apidata[@subgroup='class']">
- <td class="leftTab" value="class"> </td>
- <td class="middleTab" value="class"> </td>
- <td class="rightTab" value="class"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='structure']">
- <td class="leftTab" value="structure"> </td>
- <td class="middleTab" value="structure"> </td>
- <td class="rightTab" value="structure"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='interface']">
- <td class="leftTab" value="interface"> </td>
- <td class="middleTab" value="interface"> </td>
- <td class="rightTab" value="interface"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='enumeration']">
- <td class="leftTab" value="enumeration"> </td>
- <td class="middleTab" value="enumeration"> </td>
- <td class="rightTab" value="enumeration"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='delegate']">
- <td class="leftTab" value="delegate"> </td>
- <td class="middleTab" value="delegate"> </td>
- <td class="rightTab" value="delegate"> </td>
- </xsl:if>
- </tr>
- <tr class="tabs" id="typeFilter">
- <td class="leftGrad" value="all"> </td>
- <td class="tab" value="all" onclick="toggleClass('typeFilter','value','all','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','all');tf.subgroup='all'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="allTypesFilterLabel" />
- </td>
- <td class="rightGrad" value="all"> </td>
- <xsl:if test="element/apidata[@subgroup='class']">
- <td class="leftGrad" value="class"> </td>
- <td class="tab" value="class" onclick="toggleClass('typeFilter','value','class','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','class'); tf.subgroup='class'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="classTypesFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubclass.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubClassAltText" />
- </img>
- </td>
- <td class="rightGrad" value="class"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='structure']">
- <td class="leftGrad" value="structure"> </td>
- <td class="tab" value="structure" onclick="toggleClass('typeFilter','value','structure','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','structure'); tf.subgroup='structure'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="structureTypesFilterLabel" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubstructure.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubStructureAltText" />
- </img>
- </td>
- <td class="rightGrad" value="structure"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='interface']">
- <td class="leftGrad" value="interface"> </td>
- <td class="tab" value="interface" onclick="toggleClass('typeFilter','value','interface','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','interface'); tf.subgroup='interface'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="interfaceTypesFilterLabel" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubInterfaceAltText" />
- </img>
- </td>
- <td class="rightGrad" value="interface"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='enumeration']">
- <td class="leftGrad" value="enumeration"> </td>
- <td class="tab" value="enumeration" onclick="toggleClass('typeFilter','value','enumeration','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','enumeration'); tf.subgroup='enumeration'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="enumerationTypesFilterLabel" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubenum.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubEnumerationAltText" />
- </img>
- </td>
- <td class="rightGrad" value="enumeration"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='delegate']">
- <td class="leftGrad" value="delegate"> </td>
- <td class="tab" value="delegate" onclick="toggleClass('typeFilter','value','delegate','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','delegate'); tf.subgroup='delegate'; process('typeList',getInstanceDelegate(tf,'filterElement'));">
- <include item="delegateTypesFilterLabel" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubdelegate.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubDelegateAltText" />
- </img>
- </td>
- <td class="rightGrad" value="delegate"> </td>
- </xsl:if>
- </tr>
- </table>
- <div class="memberSection">
- <table id="typeList" class="members" cellspacing="0">
- <tr>
- <th class="iconColumn">
- <xsl:text> </xsl:text>
- </th>
- <th class="nameColumn">
- <include item="typeNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="namespace">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- <script type="text/javascript">
- <xsl:text>
- var tf = new TypeFilter();
- toggleClass('typeFilter','value','all','activeTab','tab');
- curvedToggleClass('curvedTypeTabs','value','all');
- </xsl:text>
- </script>
- </xsl:with-param>
- </xsl:call-template>
-
- </xsl:template>
-
- <xsl:template name="namespaceList">
- <xsl:param name="listSubgroup" />
-
- <table id="typeList" class="members" frame="lhs">
- <tr>
- <th class="iconColumn">
-  
- </th>
- <th class="nameColumn">
- <include item="{$listSubgroup}NameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element[apidata/@subgroup=$listSubgroup]" mode="namespace">
- <xsl:sort select="@api" />
- </xsl:apply-templates>
- </table>
-
- </xsl:template>
-
- <xsl:template match="elements" mode="enumeration">
- <xsl:if test="count(element) > 0">
- <div id="enumerationSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'members'"/>
- <xsl:with-param name="title">
- <include item="enumMembersTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="members" id="memberList" frame="lhs" cellspacing="0">
- <tr>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <!-- do not sort enumeration elements -->
- <xsl:apply-templates select="element" mode="enumeration"/>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="element" mode="members">
- <xsl:param name="subgroup"/>
- <xsl:if test="memberdata[@visibility='public'] and apidata[@subgroup=$subgroup]">
- public;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly'] and apidata[@subgroup=$subgroup]">
- protected;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and apidata[@subgroup=$subgroup] and not(proceduredata[@virtual = 'true'])">
- private;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- explicit;
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="member">
-
- <xsl:call-template name="memberIntro" />
-
- <xsl:if test="count(element) > 0">
- <xsl:variable name="header">
- <xsl:choose>
- <xsl:when test="element[apidata/@subsubgroup]">
- <xsl:value-of select="concat(element/apidata/@subsubgroup, 'MembersFilterLabel')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat(element/apidata/@subgroup, 'MembersFilterLabel')"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="$header" />
- <xsl:with-param name="title">
- <include item="{$header}" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="memberOptions">
- <tr>
- <td class="line">
- <div id="public" onclick="var checked=toggleCheck(publicImage); mf['public']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="publicImage" onmouseover="mouseOverCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="publicMembersFilterLabel" />
- </div>
- <br />
- <div id="protected" onclick="var checked=toggleCheck(protectedImage); mf['protected']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="protectedImage" onmouseover="mouseOverCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="protectedMembersFilterLabel" />
- </div>
- </td>
- <td class="line">
- <div id="instance" onclick="var checked=toggleCheck(instanceImage); mf['instance']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="instanceImage" onmouseover="mouseOverCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="instanceMembersFilterLabel" />
- </div>
- <br />
- <div id="static" onclick="var checked=toggleCheck(staticImage); mf['static']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="staticImage" onmouseover="mouseOverCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="staticMembersFilterLabel" />
- </div>
- </td>
- <td class="line">
- <div id="declared" onclick="var checked=toggleCheck(declaredImage); mf['declared']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="declaredImage" onmouseover="mouseOverCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="declaredMembersFilterLabel" />
- </div>
- <br />
- <div id="inherited" onclick="var checked=toggleCheck(inheritedImage); mf['inherited']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="inheritedImage" onmouseover="mouseOverCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="inheritedMembersFilterLabel" />
- </div>
- </td>
- <td class="line">
- <div id="xna" onclick="var checked=toggleCheck(xnaImage); mf['xna']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="xnaImage" onmouseover="mouseOverCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="XNAFilterLabel" />
- </div>
- <br/>
- <div id="compact" onclick="var checked=toggleCheck(compactImage); mf['compact']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="compactImage" onmouseover="mouseOverCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item=".NETCompactFilterLabel" />
- </div>
- </td>
- <td class="line">
- <br/>
- </td>
- </tr>
- </table>
- <table class="members" id="memberList" cellspacing="0" frame="lhs">
- <tr>
- <th class="iconColumn">
- <xsl:text> </xsl:text>
- </th>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select=".//element[not(child::element)]" mode="member">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- <script type="text/javascript">
- <xsl:text>
- var mf = new MemberFilter();
- </xsl:text>
- </script>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="memberlistSectionGroup">
- <xsl:param name="listSubgroup" />
-
- <xsl:if test="element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility='public']]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="listSubgroup" select="$listSubgroup" />
- <xsl:with-param name="listVisibility">public</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility='protected']]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="listSubgroup" select="$listSubgroup" />
- <xsl:with-param name="listVisibility">protected</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="memberlistSection">
- <xsl:param name="listSubgroup" />
- <xsl:param name="listSubsubgroup" />
- <xsl:param name="listVisibility" />
- <xsl:param name="explicit" />
-
- <xsl:variable name="header">
- <xsl:choose>
- <xsl:when test="$explicit='true'">ExplicitInterfaceImplementation</xsl:when>
- <xsl:when test="$listSubgroup='constructor'">constructorsTable</xsl:when>
- <xsl:when test="boolean($listSubsubgroup)">
- <xsl:value-of select="concat('Public', $listSubsubgroup)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($listVisibility, $listSubgroup)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="$header" />
- <xsl:with-param name="title">
- <include item="{$header}" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <table id="typeList" class="members" frame="lhs">
- <tr>
- <th class="iconColumn">
-  
- </th>
- <th class="nameColumn">
- <include item="typeNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
-
- <xsl:choose>
- <xsl:when test="boolean($listSubgroup) and boolean($useOverloadRowsInMemberlists)">
- <xsl:apply-templates select="element[not(starts-with(@api,'Overload:'))][apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]
- | element[starts-with(@api,'Overload:')][element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]]"
- mode="memberlistRow">
- <xsl:sort select="apidata/@name" />
- <xsl:with-param name="listVisibility" select="$listVisibility"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="boolean($listSubgroup)">
- <xsl:apply-templates select="element[not(starts-with(@api,'Overload:'))][apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]
- | element[starts-with(@api,'Overload:')]/element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]"
- mode="memberlistRow">
- <xsl:sort select="apidata/@name" />
- <xsl:with-param name="listVisibility" select="$listVisibility"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="boolean($listSubsubgroup)">
- <xsl:apply-templates select="element[apidata[@subsubgroup=$listSubsubgroup]]" mode="memberlistRow">
- <xsl:sort select="apidata/@name" />
- <xsl:with-param name="listVisibility" select="$listVisibility"/>
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="$explicit='true'">
- <xsl:apply-templates select="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]" mode="memberlistRow">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:when>
- </xsl:choose>
- </table>
- </xsl:with-param>
- </xsl:call-template>
-
- </xsl:template>
-
- <xsl:template match="elements" mode="type">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'members'" />
- <xsl:with-param name="title">
- <include item="allMembersTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <table class="filter" cellspacing="0" cellpadding="0">
- <tr id="curvedMemberTabs">
- <td class="leftTab" value="all"> </td>
- <td class="middleTab" value="all"> </td>
- <td class="rightTab" value="all"> </td>
- <xsl:if test="element/apidata[@subgroup='constructor']">
- <td class="leftTab" value="constructor"> </td>
- <td class="middleTab" value="constructor"> </td>
- <td class="rightTab" value="constructor"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='field']">
- <td class="leftTab" value="field"> </td>
- <td class="middleTab" value="field"> </td>
- <td class="rightTab" value="field"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='property']">
- <td class="leftTab" value="property"> </td>
- <td class="middleTab" value="property"> </td>
- <td class="rightTab" value="property"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='method']">
- <td class="leftTab" value="method"> </td>
- <td class="middleTab" value="method"> </td>
- <td class="rightTab" value="method"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='event']">
- <td class="leftTab" value="event"> </td>
- <td class="middleTab" value="event"> </td>
- <td class="rightTab" value="event"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subsubgroup='attachedProperty']">
- <td class="leftTab" value="attachedProperty"> </td>
- <td class="middleTab" value="attachedProperty"> </td>
- <td class="rightTab" value="attachedProperty"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subsubgroup='attachedEvent']">
- <td class="leftTab" value="attachedEvent"> </td>
- <td class="middleTab" value="attachedEvent"> </td>
- <td class="rightTab" value="attachedEvent"> </td>
- </xsl:if>
- <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <td class="leftTab" value="explicit"> </td>
- <td class="middleTab" value="explicit"> </td>
- <td class="rightTab" value="explicit"> </td>
- </xsl:if>
- </tr>
- <tr class="tabs" id="memberTabs">
- <td class="leftGrad" value="all"> </td>
- <td class="tab" value="all" onclick="toggleClass('memberTabs','value','all','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'all'); mf.subgroup='all'; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <include item="allMembersFilterLabel" />
- </td>
- <td class="rightGrad" value="all"> </td>
- <xsl:if test="element/apidata[@subgroup='constructor']">
- <td class="leftGrad" value="constructor"> </td>
- <td class="tab" value="constructor" onclick="toggleClass('memberTabs','value','constructor','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'constructor'); mf.subgroup='constructor'; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <include item="constructorMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubmethod.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubMethodAltText" />
- </img>
- </td>
- <td class="rightGrad" value="constructor"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='field']">
- <td class="leftGrad" value="field"> </td>
- <td class="tab" value="field" onclick="toggleClass('memberTabs','value','field','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'field'); mf.subgroup='field'; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <include item="fieldMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubfield.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubFieldAltText" />
- </img>
- </td>
- <td class="rightGrad" value="field"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='property' and not(@subsubgroup)]">
- <td class="leftGrad" value="property"> </td>
- <td class="tab" value="property" onclick="toggleClass('memberTabs','value','property','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'property'); mf.subgroup='property'; process('memberList', getInstanceDelegate(mf,'filterElement'));">
- <include item="propertyMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubproperty.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubPropertyAltText" />
- </img>
- </td>
- <td class="rightGrad" value="property"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='method']">
- <td class="leftGrad" value="method"> </td>
- <td class="tab" value="method" onclick="toggleClass('memberTabs','value','method','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'method'); mf.subgroup='method'; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <include item="methodMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubmethod.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubMethodAltText" />
- </img>
- </td>
- <td class="rightGrad" value="method"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subgroup='event' and not(@subsubgroup)]">
- <td class="leftGrad" value="event"> </td>
- <td class="tab" value="event" onclick="toggleClass('memberTabs','value','event','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'event'); mf.subgroup='event'; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <include item="eventMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubevent.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubEventAltText" />
- </img>
- </td>
- <td class="rightGrad" value="event"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subsubgroup='attachedProperty']">
- <td class="leftGrad" value="attachedProperty"> </td>
- <td class="tab" value="attachedProperty" onclick="toggleClass('memberTabs','value','attachedProperty','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'attachedProperty'); mf.subgroup='attachedProperty'; process('memberList', getInstanceDelegate(mf,'filterElement'));">
- <include item="attachedPropertyMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubproperty.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubPropertyAltText" />
- </img>
- </td>
- <td class="rightGrad" value="attachedProperty"> </td>
- </xsl:if>
- <xsl:if test="element/apidata[@subsubgroup='attachedEvent']">
- <td class="leftGrad" value="attachedEvent"> </td>
- <td class="tab" value="attachedEvent" onclick="toggleClass('memberTabs','value','attachedEvent','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'attachedEvent'); mf.subgroup='attachedEvent'; process('memberList', getInstanceDelegate(mf,'filterElement'));">
- <include item="attachedEventMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubevent.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="pubEventAltText" />
- </img>
- </td>
- <td class="rightGrad" value="attachedEvent"> </td>
- </xsl:if>
- <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <td class="leftGrad" value="explicit"> </td>
- <td class="tab" value="explicit" onclick="toggleClass('memberTabs','value','explicit','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'explicit'); mf.subgroup='explicit'; process('memberList', getInstanceDelegate(mf,'filterElement'));">
- <include item="explicitInterfaceMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="ExplicitInterfaceAltText" />
- </img>
- </td>
- <td class="rightGrad" value="explicit"> </td>
- </xsl:if>
- </tr>
- </table>
- <div class="memberSection">
- <table class="memberOptions">
- <tr>
- <td class="line">
- <div id="public" onclick="var checked=toggleCheck(publicImage); mf['public']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="publicImage" onmouseover="mouseOverCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="publicMembersFilterLabel" />
- </div>
- <br />
- <div id="protected" onclick="var checked=toggleCheck(protectedImage); mf['protected']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="protectedImage" onmouseover="mouseOverCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="protectedMembersFilterLabel" />
- </div>
- </td>
- <td class="line">
- <div id="instance" onclick="var checked=toggleCheck(instanceImage); mf['instance']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="instanceImage" onmouseover="mouseOverCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="instanceMembersFilterLabel" />
- </div>
- <br />
- <div id="static" onclick="var checked=toggleCheck(staticImage); mf['static']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="staticImage" onmouseover="mouseOverCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="staticMembersFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>static.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="staticAltText" />
- </img>
- </div>
- </td>
- <td class="line">
- <div id="declared" onclick="var checked=toggleCheck(declaredImage); mf['declared']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="declaredImage" onmouseover="mouseOverCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="declaredMembersFilterLabel" />
- </div>
- <br />
- <div id="inherited" onclick="var checked=toggleCheck(inheritedImage); mf['inherited']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="inheritedImage" onmouseover="mouseOverCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="inheritedMembersFilterLabel" />
- </div>
- </td>
- <td class="line">
- <div id="xna" onclick="var checked=toggleCheck(xnaImage); mf['xna']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="xnaImage" onmouseover="mouseOverCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item="XNAFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>xna.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="XNAFrameworkAltText" />
- </img>
- </div>
- <br/>
- <div id="compact" onclick="var checked=toggleCheck(compactImage); mf['compact']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));">
- <img id="compactImage" onmouseover="mouseOverCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)">
- <includeAttribute name="src" item="iconPath">
- <parameter>ch_selected.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <include item=".NETCompactFilterLabel" />
- <xsl:text> </xsl:text>
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>CFW.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="compactFrameworkAltText" />
- </img>
- </div>
- </td>
- <td class="line">
- <br/>
- </td>
- </tr>
- </table>
- <table class="members" id="memberList" cellspacing="0" frame="lhs">
- <tr>
- <th class="iconColumn">
- <xsl:text> </xsl:text>
- </th>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <!-- use select="element" to show overload-sets, select=".//element[not(parent::element)]" to show all overloads -->
- <xsl:apply-templates select=".//element[not(child::element)]" mode="member">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- <script type="text/javascript">
- <xsl:text>
- var mf = new MemberFilter();
- toggleClass('memberTabs','value','all','activeTab','tab');
- curvedToggleClass('curvedMemberTabs', 'value', 'all');
- </xsl:text>
- </script>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="IsMemberSupportedOnXna">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="platformFilterExcludesXna" select="boolean(platforms and not(platforms/platform[.='Xbox360']))" />
- <xsl:if test="boolean(not($platformFilterExcludesXna) and @xnafw)">
- <xsl:text>supported</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberSupportedOnCf">
- <xsl:choose>
- <xsl:when test="document/reference/topicdata[@subgroup='overload'] and document/reference/elements/element and not(@signatureset)">
- <xsl:for-each select="document/reference/elements/element">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="platformFilterExcludesCF" select="boolean( platforms and not(platforms[platform[.='PocketPC'] or platform[.='SmartPhone'] or platform[.='WindowsCE']]) )" />
- <xsl:if test="boolean(not($platformFilterExcludesCF) and @netcfw)">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberStatic">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:when test="apidata[@subsubgroup='attachedProperty' or @subsubgroup='attachedEvent']"/>
- <xsl:otherwise>
- <xsl:if test="memberdata/@static='true'">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberInherited">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="not(contains($key, containers/type/@api))">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberProtected">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="element" mode="memberlistRow">
- <xsl:param name="listVisibility"/>
- <xsl:variable name="supportedOnXna">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:variable>
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:variable name="staticMember">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:variable>
- <xsl:variable name="inheritedMember">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:variable>
- <xsl:variable name="protectedMember">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:variable>
- <tr>
- <xsl:if test="normalize-space($inheritedMember)!=''">
- <xsl:attribute name="name">inheritedMember</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($protectedMember)!=''">
- <xsl:attribute name="protected">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnXna)=''">
- <xsl:attribute name="notSupportedOnXna">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnCf)=''">
- <xsl:attribute name="notSupportedOn">netcf</xsl:attribute>
- </xsl:if>
-
- <td>
- <xsl:call-template name="memberIcons">
- <xsl:with-param name="memberVisibility">
- <xsl:choose>
- <xsl:when test="$listVisibility='public'">pub</xsl:when>
- <xsl:when test="$listVisibility='private'">priv</xsl:when>
- <xsl:when test="$listVisibility='protected'">prot</xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when>
- <xsl:when test="memberdata/@visibility='private'">priv</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="memberdata[@visibility='public']">pub</xsl:when>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="staticMember" select="normalize-space($staticMember)" />
- <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/>
- <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" show-parameters="false" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" show-parameters="false" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:text> </xsl:text>
- <include item="hostProtectionAttributeShort" />
- </xsl:if>
- <xsl:if test="topicdata[@subgroup='overload']">
- <include item="Overloaded"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="element" mode="overloadSummary" />
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="@signatureset">
- <!-- TODO add boilerplate for other members in the sig set -->
- </xsl:when>
- <xsl:when test="not(topicdata[@subgroup='overload'])">
- <xsl:choose>
- <xsl:when test="normalize-space($inheritedMember)!=''">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="containers/type/@api" />
- <xsl:with-param name="qualified" select="false()" />
- <xsl:with-param name="specialization" select="boolean(type/specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- -->
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides/member">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="overrides/member/@api"/>
- <xsl:with-param name="qualified" select="true()"/>
- </xsl:call-template>
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="elements" mode="derivedType">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'DerivedClasses'"/>
- <xsl:with-param name="title">
- <include item="derivedClasses" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="members" id="memberList" frame="lhs" cellspacing="0">
- <tr>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="derivedType">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="overload">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'overloadMembers'"/>
- <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <div class="listSection">
- <table class="members" id="memberList" frame="lhs" cellspacing="0">
- <tr>
- <th class="nameColumn">
- <include item="typeNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="overload">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <xsl:apply-templates select="element" mode="overloadSections">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="elements" mode="overloadSummary">
- <xsl:apply-templates select="element" mode="overloadSummary" >
- <xsl:sort select="apidata/@name"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="element" mode="overloadSummary">
- <xsl:call-template name="getOverloadSummary" />
- </xsl:template>
-
- <xsl:template match="element" mode="overloadSections">
- <xsl:call-template name="getOverloadSections" />
- </xsl:template>
-
- <xsl:template name="typeIcon">
- <xsl:param name="typeVisibility" />
-
- <xsl:variable name="typeSubgroup" select="apidata/@subgroup" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="concat($typeVisibility,$typeSubgroup,'.gif')" />
- </parameter>
- </includeAttribute>
- <includeAttribute name="title" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" />
- </img>
-
- </xsl:template>
-
- <xsl:template name="memberIcons">
- <xsl:param name="memberVisibility" />
- <xsl:param name="staticMember" />
- <xsl:param name="supportedOnXna"/>
- <xsl:param name="supportedOnCf"/>
-
- <xsl:variable name="memberSubgroup">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='constructor'">
- <xsl:text>method</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- test for explicit interface implementations, which get the interface icon -->
- <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="ExplicitInterfaceAltText" />
- </img>
- </xsl:if>
-
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="concat($memberVisibility,$memberSubgroup,'.gif')" />
- </parameter>
- </includeAttribute>
- <includeAttribute name="title" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" />
- </img>
-
- <xsl:if test="$staticMember!=''">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>static.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="staticAltText" />
- </img>
- </xsl:if>
-
- <xsl:if test="$supportedOnCf!=''">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>CFW.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="CompactFrameworkAltText" />
- </img>
- </xsl:if>
-
- <xsl:if test="$supportedOnXna!=''">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>xna.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="XNAFrameworkAltText" />
- </img>
- </xsl:if>
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <div id="footer">
- <div class="footerLine">
- <img width="100%" height="3px">
- <includeAttribute name="src" item="iconPath">
- <parameter>footer.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="footerImage" />
- </img>
- </div>
-
- <include item="footer">
- <parameter>
- <xsl:value-of select="$key"/>
- </parameter>
- <parameter>
- <xsl:call-template name="topicTitlePlain"/>
- </parameter>
- </include>
- </div>
- </xsl:template>
-
- <!-- Assembly information -->
-
- <xsl:template name="requirementsInfo">
- <p/>
- <include item="requirementsNamespaceLayout" />
- <xsl:text> </xsl:text>
- <referenceLink target="{/document/reference/containers/namespace/@api}" />
- <br/>
- <xsl:call-template name="assembliesInfo"/>
-
- <!-- some apis display a XAML xmlns uri -->
- <xsl:call-template name="xamlXmlnsInfo"/>
- </xsl:template>
-
- <xsl:template name="assemblyNameAndModule">
- <xsl:param name="library" select="/document/reference/containers/library"/>
- <include item="assemblyNameAndModule">
- <parameter>
- <span data="assembly">
- <xsl:value-of select="$library/@assembly"/>
- </span>
- </parameter>
- <parameter>
- <xsl:value-of select="$library/@module"/>
- </parameter>
- <parameter>
- <xsl:choose>
- <xsl:when test="$library/@kind = 'DynamicallyLinkedLibrary'">
- <xsl:text>dll</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>exe</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template name="assembliesInfo">
- <xsl:choose>
- <xsl:when test="count(/document/reference/containers/library)>1">
- <include item="requirementsAssembliesLabel"/>
- <xsl:for-each select="/document/reference/containers/library">
- <xsl:text>  </xsl:text>
- <xsl:call-template name="assemblyNameAndModule">
- <xsl:with-param name="library" select="."/>
- </xsl:call-template>
- <br/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <include item="requirementsAssemblyLabel"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="assemblyNameAndModule"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Platform information -->
-
- <xsl:template match="platforms">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'platformsTitle'"/>
- <xsl:with-param name="title">
- <include item="platformsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <p>
- <xsl:for-each select="platform">
- <include item="{.}" /><xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if>
- </xsl:for-each>
- </p>
- <p>
- <include item="developmentPlatformsLayout"/>
- </p>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Version information -->
-
- <xsl:template match="versions">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'versionsTitle'"/>
- <xsl:with-param name="title">
- <include item="versionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="processVersions" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="processVersions">
- <xsl:choose>
- <xsl:when test="versions">
- <xsl:for-each select="versions">
- <!-- $platformFilterExcluded is based on platform filtering information -->
- <xsl:variable name="platformFilterExcluded" select="boolean(/document/reference/platforms and ( (@name='netcfw' and not(/document/reference/platforms/platform[.='PocketPC']) and not(/document/reference/platforms/platform[.='SmartPhone']) and not(/document/reference/platforms/platform[.='WindowsCE']) ) or (@name='xnafw' and not(/document/reference/platforms/platform[.='Xbox360']) ) ) )" />
- <xsl:if test="not($platformFilterExcluded) and count(version) > 0">
- <h4 class ="subHeading">
- <include item="{@name}" />
- </h4>
- <xsl:call-template name="processVersions" />
- </xsl:if>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- show the versions in which the api is supported, if any -->
- <xsl:variable name="supportedCount" select="count(version[not(@obsolete)])"/>
- <xsl:if test="$supportedCount > 0">
- <include item="supportedIn_{$supportedCount}">
- <xsl:for-each select="version[not(@obsolete)]">
- <parameter>
- <include item="{@name}" />
- </parameter>
- </xsl:for-each>
- </include>
- <br/>
- </xsl:if>
- <!-- show the versions in which the api is obsolete with a compiler warning, if any -->
- <xsl:for-each select="version[@obsolete='warning']">
- <include item="obsoleteWarning">
- <parameter>
- <include item="{@name}" />
- </parameter>
- </include>
- <br/>
- </xsl:for-each>
- <!-- show the versions in which the api is obsolete and does not compile, if any -->
- <xsl:for-each select="version[@obsolete='error']">
- <xsl:if test="position()=last()">
- <include item="obsoleteError">
- <parameter>
- <include item="{@name}" />
- </parameter>
- </include>
- <br/>
- </xsl:if>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Inheritance hierarchy -->
-
- <xsl:template match="family">
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'family'"/>
- <xsl:with-param name="title">
- <include item="familyTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:variable name="ancestorCount" select="count(ancestors/*)" />
- <xsl:variable name="childCount" select="count(descendents/*)" />
-
- <xsl:for-each select="ancestors/type">
- <xsl:sort select="position()" data-type="number" order="descending" />
-
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="position()" />
- </xsl:call-template>
-
- <xsl:apply-templates select="self::type" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
-
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="@api" />
- <xsl:with-param name="qualified" select="true()" />
- <xsl:with-param name="specialization" select="boolean(specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="type/specialization" />
- -->
- <br/>
- </xsl:for-each>
-
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 1" />
- </xsl:call-template>
-
- <referenceLink target="{$key}" qualified="true"/>
- <br/>
-
- <xsl:choose>
-
- <xsl:when test="descendents/@derivedTypes">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 2" />
- </xsl:call-template>
- <referenceLink target="{descendents/@derivedTypes}" qualified="true">
- <include item="derivedClasses"/>
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:for-each select="descendents/type">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 2" />
- </xsl:call-template>
-
- <xsl:apply-templates select="self::type" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
- <!--
- <xsl:call-template name="typeReferenceLink">
- <xsl:with-param name="api" select="@api" />
- <xsl:with-param name="qualified" select="true()" />
- <xsl:with-param name="specialization" select="boolean(specialization)" />
- </xsl:call-template>
- <xsl:apply-templates select="specialization" />
- -->
- <br/>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="createTableEntries">
- <xsl:param name="count" />
- <xsl:if test="number($count) > 0">
- <td> </td>
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="number($count)-1" />
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="typeReferenceLink">
- <xsl:param name="api" />
- <xsl:param name="qualified" />
- <xsl:param name="specialization" />
-
- <referenceLink target="{$api}" qualified="{$qualified}">
- <xsl:choose>
- <xsl:when test="$specialization = 'true'">
- <xsl:attribute name="show-templates">false</xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="show-templates">true</xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </referenceLink>
-
- </xsl:template>
-
- <xsl:template match="template">
- <xsl:choose>
- <xsl:when test="@api=$key">
- <xsl:value-of select="@name" />
- </xsl:when>
- <xsl:otherwise>
- <include item="typeLinkToTypeParameter">
- <parameter>
- <xsl:value-of select="@name"/>
- </parameter>
- <parameter>
- <referenceLink target="{@api}" qualified="true" />
- </parameter>
- </include>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="member">
- <xsl:apply-templates select="type" mode="link" />
- <xsl:text>.</xsl:text>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Naming -->
-
- <xsl:template name="shortName">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/containers/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- decorated names -->
-
- <xsl:template name="shortNameDecorated">
- <!--<xsl:param name="titleType" /> -->
- <xsl:choose>
- <!-- type overview pages get the type name -->
- <xsl:when test="$group='type' or ($group='list' and not($subgroup='overload'))">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- constructors and member list pages also use the type name -->
- <xsl:when test="$subgroup='constructor' or ($subgroup='overload' and /document/reference/apidata/@subgroup='constructor')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- </xsl:when>
- <!--
- <xsl:when test="$group='member'">
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="GetTypeName" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$titleType = 'tocTitle'">
- <xsl:value-of select="$type" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($typeName, '.', $type)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- -->
- <!-- member pages use the qualified member name -->
- <xsl:when test="$group='member' or ($subgroup='overload' and /document/reference/apidata/@group='member')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <xsl:for-each select="/document/reference[1]">
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="decorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- namespace (and any other) topics just use the name -->
- <xsl:when test="/document/reference/apidata/@name = ''">
- <include item="defaultNamespace" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- plain names -->
-
- <xsl:template name="shortNamePlain">
- <xsl:param name="qualifyMembers" select="false()" />
- <xsl:choose>
- <!-- type overview pages get the type name -->
- <xsl:when test="$group='type' or (group='list' and not($subgroup = 'overload'))">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- </xsl:when>
- <!-- constructors and member list pages also use the type name -->
- <xsl:when test="$subgroup='constructor' or ($subgroup='overload' and /document/reference/apidata/@subgroup='constructor')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- </xsl:when>
- <!-- namespace, member (and any other) topics just use the name -->
- <xsl:when test="/document/reference/apidata/@name = ''">
- <include item="defaultNamespace" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="$qualifyMembers and /document/reference/apidata/@group='member'">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="typeNamePlain">
- <xsl:param name="annotate" select="false()" />
- <xsl:if test="(containers/type)|type">
- <xsl:for-each select="(containers/type)|type">
- <xsl:call-template name="typeNamePlain">
- <xsl:with-param name="annotate" select="$annotate" />
- </xsl:call-template>
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="$annotate and templates/template">
- <xsl:value-of select="concat('`',count(templates/template))"/>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_reference.xsl"/> + + <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" /> +<!-- + <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" /> +--> + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + <xsl:param name="metadata" value="false" /> + <xsl:param name="languages">false</xsl:param> + <xsl:param name="useOverloadRowsInMemberlists" select="false()"/> + + <xsl:include href="utilities_metadata.xsl" /> + <xsl:include href="xamlSyntax.xsl"/> + + <xsl:template match="/"> + <html> + <head> + <META NAME="save" CONTENT="history"/> + <title><xsl:call-template name="topicTitlePlain"/></title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertFilename" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + + <xsl:call-template name="upperBodyStuff"/> + <!--<xsl:call-template name="control"/>--> + <xsl:call-template name="main"/> + <xsl:if test="$languages != 'false'"> + <script type="text/javascript"> + var data = new DataStore('docs'); + registerEventHandler(window, 'load', function() {languageFilter.select(data)}); + </script> + </xsl:if> + </body> + </html> + </xsl:template> + + <!-- useful global variables --> + + <xsl:variable name="group"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@group" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@group" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="subgroup"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@subgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="subsubgroup"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@subsubgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="pseudo" select="boolean(/document/reference/topicdata[@pseudo='true'])"/> + + <xsl:variable name="namespaceName"> + <xsl:value-of select="substring-after(/document/reference/containers/namespace/@api,':')"/> + </xsl:variable> + + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + <link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" /> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>Dropdown.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>script_manifold.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>LanguageFilter.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>DataStore.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>CommonUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>MemberFilter.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + </xsl:template> + + <xsl:template match="parameters"> + <div id="parameters"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="parametersTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="parameter"> + <xsl:variable name="paramName" select="@name"/> + <dl paramName="{$paramName}"> + <dt> + <span class="parameter"> + <xsl:value-of select="$paramName"/> + </span> + </dt> + <dd> + <xsl:apply-templates select="*[1]" mode="link" /> + <!-- + <xsl:choose> + <xsl:when test="type"> + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="type/@api" /> + <xsl:with-param name="qualified" select="true()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="*[1]" /> + </xsl:otherwise> + </xsl:choose> + --> + <br /> + <xsl:call-template name="getParameterDescription"> + <xsl:with-param name="name" select="@name" /> + </xsl:call-template> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template match="implements"> + <xsl:if test="member"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="implementsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="member"> + <referenceLink target="{@api}" qualified="true" /> + <br /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="element" mode="root"> + <tr> + <td> + <xsl:choose> + <xsl:when test="apidata/@name = ''"> + <referenceLink target="{@api}" qualified="false"> + <include item="defaultNamespace" /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="namespace"> + <xsl:variable name="typeVisibility"> + <xsl:choose> + <xsl:when test="typedata/@visibility='family' or typedata/@visibility='family or assembly' or typedata/@visibility='assembly'">prot</xsl:when> + <xsl:when test="typedata/@visibility='private'">priv</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr> + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:text>; public</xsl:text> + </xsl:attribute> + <td> + <xsl:call-template name="typeIcon"> + <xsl:with-param name="typeVisibility" select="$typeVisibility" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="member"> + <xsl:variable name="inheritedMember"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:variable> + <xsl:variable name="staticMember"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:variable> + <xsl:variable name="supportedOnXna"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:variable> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:variable name="protectedMember"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:variable> + <tr> + <xsl:attribute name="data"> + <xsl:choose> + <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + <xsl:text>explicit</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subsubgroup"> + <xsl:value-of select="apidata/@subsubgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>; public</xsl:text> + </xsl:when> + <xsl:when test="normalize-space($protectedMember)!=''"> + <xsl:text>; protected</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; public</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="normalize-space($staticMember)!=''"> + <xsl:text>; static</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; instance</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="normalize-space($inheritedMember)!=''"> + <xsl:text>; inherited</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; declared</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="normalize-space($supportedOnCf)!=''"> + <xsl:text>; compact</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; none</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="normalize-space($supportedOnXna)!=''"> + <xsl:text>; xna</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; none</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <td> + <xsl:call-template name="memberIcons"> + <xsl:with-param name="memberVisibility"> + <xsl:choose> + <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when> + <xsl:when test="memberdata/@visibility='private'">priv</xsl:when> + <xsl:when test="memberdata[@visibility='public']">pub</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="staticMember" select="normalize-space($staticMember)" /> + <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/> + <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/> + </xsl:call-template> + </td> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:if test="memberdata[@overload='true']"> + <include item="Overloaded"/> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="@signatureset"> + <!-- TODO add boilerplate for other members in the sig set --> + </xsl:when> + <xsl:when test="not(topicdata[@subgroup='overload'])"> + <xsl:choose> + <xsl:when test="normalize-space($inheritedMember)!=''"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="containers/type/@api" /> + <xsl:with-param name="qualified" select="false()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + --> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides/member"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="overrides/member/@api"/> + <xsl:with-param name="qualified" select="true()"/> + </xsl:call-template> + </parameter> + </include> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="enumeration"> + <tr> + <xsl:variable name="id" select="@api" /> + <td target="{$id}"> + <span class="referenceNoLink"><xsl:value-of select="apidata/@name"/></span> + </td> + <td> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="derivedType"> + <tr> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="($group != 'member') and ($subgroup != 'DerivedTypeList') and not(contains($key, containers/type/@api))"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="containers/type/@api" /> + <xsl:with-param name="qualified" select="false()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + --> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:apply-templates select="overrides/member" /> + </parameter> + </include> + </xsl:when> + </xsl:choose> + </td> + </tr> + + + </xsl:template> + + <xsl:template match="element" mode="overload"> + <tr> + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>; public</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='family'"> + <xsl:text>; protected</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; public</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="memberdata/@static = 'true'"> + <xsl:text>; static</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; instance</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="string(containers/type/@api) = $key"> + <xsl:text>; declared</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; inherited</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="($group != 'member') and ($subgroup != 'overload') and not(contains($key, containers/type/@api))"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="containers/type/@api" /> + <xsl:with-param name="qualified" select="false()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + --> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:apply-templates select="overrides/member" /> + </parameter> + </include> + </xsl:when> + </xsl:choose> + + </td> + </tr> + </xsl:template> + + <xsl:template name="insertFilename"> + <meta name="guid"> + <xsl:attribute name="content"> + <xsl:value-of select="/document/reference/file/@name" /> + </xsl:attribute> + </meta> + </xsl:template> + + <!-- writing templates --> + + <xsl:template name="csTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text><</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>></xsl:text> + </xsl:template> + + <xsl:template name="csTemplatesInIndex" > + <xsl:text>%3C</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:text>%2C </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>%3E</xsl:text> + </xsl:template> + + <xsl:template name="vbTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text>(Of </xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template name="typeTitle"> + <xsl:if test="containers/container[@type]"> + <xsl:for-each select="containers/container[@type]"> + <xsl:call-template name="typeTitle" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="count(templates/template) > 0"> + <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each> + </xsl:if> + </xsl:template> + + <!-- document body --> + + <!-- control window --> + + <xsl:template name="control"> + <div id="control"> + <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/> + </div> + </xsl:template> + + <!-- Title in topic --> + + <!-- Title in topic --> + + <xsl:template name="topicTitlePlain"> + <xsl:param name="qualifyMembers" select="false()" /> + <include> + <xsl:attribute name="item"> + <xsl:if test="boolean(/document/reference/templates) and not($group='list')"> + <xsl:text>generic_</xsl:text> + </xsl:if> + <xsl:choose> + <xsl:when test="string($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:when test="string($subgroup)"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$group" /> + </xsl:otherwise> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNamePlain"> + <xsl:with-param name="qualifyMembers" select="$qualifyMembers" /> + </xsl:call-template> + </parameter> + <parameter> + <xsl:if test="document/reference/memberdata/@overload" > + <xsl:for-each select="/document/reference"> + <xsl:call-template name="parameterTypesPlain" /> + </xsl:for-each> + </xsl:if> + </parameter> + </include> + </xsl:template> + + <xsl:template name="topicTitleDecorated"> + <xsl:param name="titleType" /> + <include> + <xsl:attribute name="item"> + <xsl:choose> + <xsl:when test="$titleType = 'tocTitle' and $group='namespace'"> + <xsl:text>tocTitle</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="string($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:when test="string($subgroup)"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:value-of select="/document/reference/apidata/@subgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$group" /> + </xsl:otherwise> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNameDecorated"> + <xsl:with-param name="titleType" select="$titleType" /> + </xsl:call-template> + </parameter> + <parameter> + <xsl:if test="document/reference/memberdata/@overload" > + <xsl:for-each select="/document/reference"> + <xsl:call-template name="parameterTypesDecorated" /> + </xsl:for-each> + </xsl:if> + </parameter> + </include> + </xsl:template> + + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- main window --> + + <xsl:template name="main"> + <div id="mainSection"> + + <div id="mainBody"> + <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/> + <xsl:call-template name="head" /> + <xsl:call-template name="body" /> + <xsl:call-template name="foot" /> + </div> + </div> + + </xsl:template> + + <xsl:template name="head"> + <include item="header" /> + </xsl:template> + + <xsl:template name="syntaxBlocks"> + <table class="filter" cellspacing="0" cellpadding="0"> + <tr id="curvedSyntaxTabs"> + <xsl:for-each select="div[@codeLanguage]"> + <td class="leftTab" x-lang="{@codeLanguage}"> </td> + <td class="middleTab" x-lang="{@codeLanguage}"> </td> + <td class="rightTab" x-lang="{@codeLanguage}"> </td> + </xsl:for-each> + </tr> + <tr class="tabs" id="syntaxTabs"> + <xsl:for-each select="div[@codeLanguage]"> + + <xsl:variable name="style"> + <xsl:call-template name="languageCheck"> + <xsl:with-param name="codeLanguage" select="@codeLanguage" /> + </xsl:call-template> + </xsl:variable> + + <xsl:variable name="languageEvent"> + <xsl:choose> + <xsl:when test="$style != ''"> + <xsl:text>languageFilter.changeLanguage(data, '</xsl:text><xsl:value-of select="@codeLanguage"/> + <xsl:text>', '</xsl:text><xsl:value-of select="$style" /> + <xsl:text>');</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>toggleClass('syntaxTabs','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/> + <xsl:text>','activeTab','tab'); curvedToggleClass('curvedSyntaxTabs','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/> + <xsl:text>');toggleStyle('syntaxBlocks','x-lang','</xsl:text><xsl:value-of select="@codeLanguage"/> + <xsl:text>','display','block','none');</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <td class="leftGrad" x-lang="{@codeLanguage}"> </td> + <td class="tab" x-lang="{@codeLanguage}" onclick="{$languageEvent}"><include item="{@codeLanguage}Label" /></td> + <td class="rightGrad" x-lang="{@codeLanguage}"> </td> + </xsl:for-each> + </tr> + </table> + <div id="syntaxBlocks"> + <xsl:for-each select="div[@codeLanguage]"> + <xsl:variable name="language" select="@codeLanguage" /> + <div class="code" x-lang="{@codeLanguage}"> + <xsl:if test="/document/USyntax/div/@codeLanguage = $language"> + <div id="{$language}Declaration" onclick="toggleSelect({$language}DeclarationImage,{$language}DeclarationSection);"> + <img id="{$language}DeclarationImage" onmouseover="mouseOverCheck({$language}DeclarationImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)" onmouseout="mouseOutCheck({$language}DeclarationImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_selected.gif</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + <span class="syntaxLabel"><include item="declarationLabel" /></span> + </img> + </div> + <br/> + </xsl:if> + <div id="{$language}DeclarationSection"> + <pre><xsl:copy-of select="./node()" /></pre> + </div> + <xsl:for-each select="/document/USyntax/div[@codeLanguage]"> + <xsl:if test="@codeLanguage = $language"> + <div id="{$language}Usage" onclick="toggleSelect({$language}UsageImage,{$language}UsageSection);"> + <img id="{$language}UsageImage" onmouseover="mouseOverCheck({$language}UsageImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)" onmouseout="mouseOutCheck({$language}UsageImage,twirlSelectImage,twirlUnSelectImage,twirlSelectHoverImage,twirlUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>twirl_selected.gif</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + <span class="syntaxLabel"><include item="usageLabel" /></span> + </img> + </div> + <div id="{$language}UsageSection"> + <pre><xsl:copy-of select="./node()" /></pre> + </div> + </xsl:if> + </xsl:for-each> + </div> + </xsl:for-each> + </div> + <script type="text/javascript"> + <xsl:text> + toggleClass('syntaxTabs','x-lang','</xsl:text> + <xsl:value-of select="div[1]/@codeLanguage" /> + <xsl:text>','activeTab','tab'); + toggleStyle('syntaxBlocks','x-lang','</xsl:text> + <xsl:value-of select="div[1]/@codeLanguage" /> + <xsl:text>','display','block','none'); + curvedToggleClass('curvedSyntaxTabs', 'x-lang', '</xsl:text> + <xsl:value-of select="div[1]/@codeLanguage" /> + <xsl:text>'); + </xsl:text> + <xsl:if test="$languages != 'false'"> + languageFilter.registerTabbedArea('curvedSyntaxTabs', 'syntaxTabs', 'syntaxBlocks'); + </xsl:if> + </script> + </xsl:template> + + <xsl:template name="languageSyntaxBlock"> + <xsl:param name="language" select="@codeLanguage"/> + <span codeLanguage="{$language}"> + <table> + <tr> + <th> + <include item="{$language}" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre> + </td> + </tr> + </table> + </span> + </xsl:template> + + <xsl:template match="elements" mode="root"> + <xsl:if test="count(element) > 0"> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'namespaces'"/> + <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <div class="listsection"> + <table class="members" id="memberList" frame="lhs" cellspacing="0"> + <tr> + <th class="nameColumn"> + <include item="namespaceNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="namespaceDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="root"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="namespaceSection"> + <xsl:param name="listSubgroup" /> + <xsl:variable name="header" select="concat($listSubgroup, 'TypesFilterLabel')"/> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="$listSubgroup"/> + <xsl:with-param name="title"> + <include item="{$header}" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="namespaceList"> + <xsl:with-param name="listSubgroup" select="$listSubgroup" /> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="elements" mode="namespace"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'types'" /> + <xsl:with-param name="title"> + <include item="typesTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <table class="filter" cellspacing="0" cellpadding="0"> + <tr id="curvedTypeTabs"> + <td class="leftTab" value="all"> </td> + <td class="middleTab" value="all"> </td> + <td class="rightTab" value="all"> </td> + <xsl:if test="element/apidata[@subgroup='class']"> + <td class="leftTab" value="class"> </td> + <td class="middleTab" value="class"> </td> + <td class="rightTab" value="class"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='structure']"> + <td class="leftTab" value="structure"> </td> + <td class="middleTab" value="structure"> </td> + <td class="rightTab" value="structure"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='interface']"> + <td class="leftTab" value="interface"> </td> + <td class="middleTab" value="interface"> </td> + <td class="rightTab" value="interface"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='enumeration']"> + <td class="leftTab" value="enumeration"> </td> + <td class="middleTab" value="enumeration"> </td> + <td class="rightTab" value="enumeration"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='delegate']"> + <td class="leftTab" value="delegate"> </td> + <td class="middleTab" value="delegate"> </td> + <td class="rightTab" value="delegate"> </td> + </xsl:if> + </tr> + <tr class="tabs" id="typeFilter"> + <td class="leftGrad" value="all"> </td> + <td class="tab" value="all" onclick="toggleClass('typeFilter','value','all','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','all');tf.subgroup='all'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="allTypesFilterLabel" /> + </td> + <td class="rightGrad" value="all"> </td> + <xsl:if test="element/apidata[@subgroup='class']"> + <td class="leftGrad" value="class"> </td> + <td class="tab" value="class" onclick="toggleClass('typeFilter','value','class','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','class'); tf.subgroup='class'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="classTypesFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubclass.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubClassAltText" /> + </img> + </td> + <td class="rightGrad" value="class"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='structure']"> + <td class="leftGrad" value="structure"> </td> + <td class="tab" value="structure" onclick="toggleClass('typeFilter','value','structure','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','structure'); tf.subgroup='structure'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="structureTypesFilterLabel" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubstructure.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubStructureAltText" /> + </img> + </td> + <td class="rightGrad" value="structure"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='interface']"> + <td class="leftGrad" value="interface"> </td> + <td class="tab" value="interface" onclick="toggleClass('typeFilter','value','interface','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','interface'); tf.subgroup='interface'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="interfaceTypesFilterLabel" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubInterfaceAltText" /> + </img> + </td> + <td class="rightGrad" value="interface"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='enumeration']"> + <td class="leftGrad" value="enumeration"> </td> + <td class="tab" value="enumeration" onclick="toggleClass('typeFilter','value','enumeration','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','enumeration'); tf.subgroup='enumeration'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="enumerationTypesFilterLabel" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubenum.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubEnumerationAltText" /> + </img> + </td> + <td class="rightGrad" value="enumeration"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='delegate']"> + <td class="leftGrad" value="delegate"> </td> + <td class="tab" value="delegate" onclick="toggleClass('typeFilter','value','delegate','activeTab','tab'); curvedToggleClass('curvedTypeTabs','value','delegate'); tf.subgroup='delegate'; process('typeList',getInstanceDelegate(tf,'filterElement'));"> + <include item="delegateTypesFilterLabel" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubdelegate.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubDelegateAltText" /> + </img> + </td> + <td class="rightGrad" value="delegate"> </td> + </xsl:if> + </tr> + </table> + <div class="memberSection"> + <table id="typeList" class="members" cellspacing="0"> + <tr> + <th class="iconColumn"> + <xsl:text> </xsl:text> + </th> + <th class="nameColumn"> + <include item="typeNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="namespace"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + <script type="text/javascript"> + <xsl:text> + var tf = new TypeFilter(); + toggleClass('typeFilter','value','all','activeTab','tab'); + curvedToggleClass('curvedTypeTabs','value','all'); + </xsl:text> + </script> + </xsl:with-param> + </xsl:call-template> + + </xsl:template> + + <xsl:template name="namespaceList"> + <xsl:param name="listSubgroup" /> + + <table id="typeList" class="members" frame="lhs"> + <tr> + <th class="iconColumn"> +   + </th> + <th class="nameColumn"> + <include item="{$listSubgroup}NameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element[apidata/@subgroup=$listSubgroup]" mode="namespace"> + <xsl:sort select="@api" /> + </xsl:apply-templates> + </table> + + </xsl:template> + + <xsl:template match="elements" mode="enumeration"> + <xsl:if test="count(element) > 0"> + <div id="enumerationSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'members'"/> + <xsl:with-param name="title"> + <include item="enumMembersTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="members" id="memberList" frame="lhs" cellspacing="0"> + <tr> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <!-- do not sort enumeration elements --> + <xsl:apply-templates select="element" mode="enumeration"/> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="element" mode="members"> + <xsl:param name="subgroup"/> + <xsl:if test="memberdata[@visibility='public'] and apidata[@subgroup=$subgroup]"> + public; + </xsl:if> + <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly'] and apidata[@subgroup=$subgroup]"> + protected; + </xsl:if> + <xsl:if test="memberdata[@visibility='private'] and apidata[@subgroup=$subgroup] and not(proceduredata[@virtual = 'true'])"> + private; + </xsl:if> + <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + explicit; + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="member"> + + <xsl:call-template name="memberIntro" /> + + <xsl:if test="count(element) > 0"> + <xsl:variable name="header"> + <xsl:choose> + <xsl:when test="element[apidata/@subsubgroup]"> + <xsl:value-of select="concat(element/apidata/@subsubgroup, 'MembersFilterLabel')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat(element/apidata/@subgroup, 'MembersFilterLabel')"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="$header" /> + <xsl:with-param name="title"> + <include item="{$header}" /> + </xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="memberOptions"> + <tr> + <td class="line"> + <div id="public" onclick="var checked=toggleCheck(publicImage); mf['public']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="publicImage" onmouseover="mouseOverCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="publicMembersFilterLabel" /> + </div> + <br /> + <div id="protected" onclick="var checked=toggleCheck(protectedImage); mf['protected']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="protectedImage" onmouseover="mouseOverCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="protectedMembersFilterLabel" /> + </div> + </td> + <td class="line"> + <div id="instance" onclick="var checked=toggleCheck(instanceImage); mf['instance']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="instanceImage" onmouseover="mouseOverCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="instanceMembersFilterLabel" /> + </div> + <br /> + <div id="static" onclick="var checked=toggleCheck(staticImage); mf['static']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="staticImage" onmouseover="mouseOverCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="staticMembersFilterLabel" /> + </div> + </td> + <td class="line"> + <div id="declared" onclick="var checked=toggleCheck(declaredImage); mf['declared']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="declaredImage" onmouseover="mouseOverCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="declaredMembersFilterLabel" /> + </div> + <br /> + <div id="inherited" onclick="var checked=toggleCheck(inheritedImage); mf['inherited']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="inheritedImage" onmouseover="mouseOverCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="inheritedMembersFilterLabel" /> + </div> + </td> + <td class="line"> + <div id="xna" onclick="var checked=toggleCheck(xnaImage); mf['xna']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="xnaImage" onmouseover="mouseOverCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="XNAFilterLabel" /> + </div> + <br/> + <div id="compact" onclick="var checked=toggleCheck(compactImage); mf['compact']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="compactImage" onmouseover="mouseOverCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item=".NETCompactFilterLabel" /> + </div> + </td> + <td class="line"> + <br/> + </td> + </tr> + </table> + <table class="members" id="memberList" cellspacing="0" frame="lhs"> + <tr> + <th class="iconColumn"> + <xsl:text> </xsl:text> + </th> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select=".//element[not(child::element)]" mode="member"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + <script type="text/javascript"> + <xsl:text> + var mf = new MemberFilter(); + </xsl:text> + </script> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:template> + + <xsl:template name="memberlistSectionGroup"> + <xsl:param name="listSubgroup" /> + + <xsl:if test="element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility='public']]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="listSubgroup" select="$listSubgroup" /> + <xsl:with-param name="listVisibility">public</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility='protected']]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="listSubgroup" select="$listSubgroup" /> + <xsl:with-param name="listVisibility">protected</xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:template> + + <xsl:template name="memberlistSection"> + <xsl:param name="listSubgroup" /> + <xsl:param name="listSubsubgroup" /> + <xsl:param name="listVisibility" /> + <xsl:param name="explicit" /> + + <xsl:variable name="header"> + <xsl:choose> + <xsl:when test="$explicit='true'">ExplicitInterfaceImplementation</xsl:when> + <xsl:when test="$listSubgroup='constructor'">constructorsTable</xsl:when> + <xsl:when test="boolean($listSubsubgroup)"> + <xsl:value-of select="concat('Public', $listSubsubgroup)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($listVisibility, $listSubgroup)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="$header" /> + <xsl:with-param name="title"> + <include item="{$header}" /> + </xsl:with-param> + <xsl:with-param name="content"> + <table id="typeList" class="members" frame="lhs"> + <tr> + <th class="iconColumn"> +   + </th> + <th class="nameColumn"> + <include item="typeNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + + <xsl:choose> + <xsl:when test="boolean($listSubgroup) and boolean($useOverloadRowsInMemberlists)"> + <xsl:apply-templates select="element[not(starts-with(@api,'Overload:'))][apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]] + | element[starts-with(@api,'Overload:')][element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]]" + mode="memberlistRow"> + <xsl:sort select="apidata/@name" /> + <xsl:with-param name="listVisibility" select="$listVisibility"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="boolean($listSubgroup)"> + <xsl:apply-templates select="element[not(starts-with(@api,'Overload:'))][apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]] + | element[starts-with(@api,'Overload:')]/element[apidata[@subgroup=$listSubgroup and not(@subsubgroup)] and memberdata[@visibility=$listVisibility]]" + mode="memberlistRow"> + <xsl:sort select="apidata/@name" /> + <xsl:with-param name="listVisibility" select="$listVisibility"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="boolean($listSubsubgroup)"> + <xsl:apply-templates select="element[apidata[@subsubgroup=$listSubsubgroup]]" mode="memberlistRow"> + <xsl:sort select="apidata/@name" /> + <xsl:with-param name="listVisibility" select="$listVisibility"/> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$explicit='true'"> + <xsl:apply-templates select="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]" mode="memberlistRow"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:when> + </xsl:choose> + </table> + </xsl:with-param> + </xsl:call-template> + + </xsl:template> + + <xsl:template match="elements" mode="type"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'members'" /> + <xsl:with-param name="title"> + <include item="allMembersTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <table class="filter" cellspacing="0" cellpadding="0"> + <tr id="curvedMemberTabs"> + <td class="leftTab" value="all"> </td> + <td class="middleTab" value="all"> </td> + <td class="rightTab" value="all"> </td> + <xsl:if test="element/apidata[@subgroup='constructor']"> + <td class="leftTab" value="constructor"> </td> + <td class="middleTab" value="constructor"> </td> + <td class="rightTab" value="constructor"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='field']"> + <td class="leftTab" value="field"> </td> + <td class="middleTab" value="field"> </td> + <td class="rightTab" value="field"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='property']"> + <td class="leftTab" value="property"> </td> + <td class="middleTab" value="property"> </td> + <td class="rightTab" value="property"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='method']"> + <td class="leftTab" value="method"> </td> + <td class="middleTab" value="method"> </td> + <td class="rightTab" value="method"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='event']"> + <td class="leftTab" value="event"> </td> + <td class="middleTab" value="event"> </td> + <td class="rightTab" value="event"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subsubgroup='attachedProperty']"> + <td class="leftTab" value="attachedProperty"> </td> + <td class="middleTab" value="attachedProperty"> </td> + <td class="rightTab" value="attachedProperty"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subsubgroup='attachedEvent']"> + <td class="leftTab" value="attachedEvent"> </td> + <td class="middleTab" value="attachedEvent"> </td> + <td class="rightTab" value="attachedEvent"> </td> + </xsl:if> + <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <td class="leftTab" value="explicit"> </td> + <td class="middleTab" value="explicit"> </td> + <td class="rightTab" value="explicit"> </td> + </xsl:if> + </tr> + <tr class="tabs" id="memberTabs"> + <td class="leftGrad" value="all"> </td> + <td class="tab" value="all" onclick="toggleClass('memberTabs','value','all','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'all'); mf.subgroup='all'; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <include item="allMembersFilterLabel" /> + </td> + <td class="rightGrad" value="all"> </td> + <xsl:if test="element/apidata[@subgroup='constructor']"> + <td class="leftGrad" value="constructor"> </td> + <td class="tab" value="constructor" onclick="toggleClass('memberTabs','value','constructor','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'constructor'); mf.subgroup='constructor'; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <include item="constructorMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubmethod.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubMethodAltText" /> + </img> + </td> + <td class="rightGrad" value="constructor"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='field']"> + <td class="leftGrad" value="field"> </td> + <td class="tab" value="field" onclick="toggleClass('memberTabs','value','field','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'field'); mf.subgroup='field'; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <include item="fieldMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubfield.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubFieldAltText" /> + </img> + </td> + <td class="rightGrad" value="field"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='property' and not(@subsubgroup)]"> + <td class="leftGrad" value="property"> </td> + <td class="tab" value="property" onclick="toggleClass('memberTabs','value','property','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'property'); mf.subgroup='property'; process('memberList', getInstanceDelegate(mf,'filterElement'));"> + <include item="propertyMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubproperty.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubPropertyAltText" /> + </img> + </td> + <td class="rightGrad" value="property"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='method']"> + <td class="leftGrad" value="method"> </td> + <td class="tab" value="method" onclick="toggleClass('memberTabs','value','method','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'method'); mf.subgroup='method'; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <include item="methodMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubmethod.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubMethodAltText" /> + </img> + </td> + <td class="rightGrad" value="method"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subgroup='event' and not(@subsubgroup)]"> + <td class="leftGrad" value="event"> </td> + <td class="tab" value="event" onclick="toggleClass('memberTabs','value','event','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'event'); mf.subgroup='event'; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <include item="eventMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubevent.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubEventAltText" /> + </img> + </td> + <td class="rightGrad" value="event"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subsubgroup='attachedProperty']"> + <td class="leftGrad" value="attachedProperty"> </td> + <td class="tab" value="attachedProperty" onclick="toggleClass('memberTabs','value','attachedProperty','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'attachedProperty'); mf.subgroup='attachedProperty'; process('memberList', getInstanceDelegate(mf,'filterElement'));"> + <include item="attachedPropertyMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubproperty.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubPropertyAltText" /> + </img> + </td> + <td class="rightGrad" value="attachedProperty"> </td> + </xsl:if> + <xsl:if test="element/apidata[@subsubgroup='attachedEvent']"> + <td class="leftGrad" value="attachedEvent"> </td> + <td class="tab" value="attachedEvent" onclick="toggleClass('memberTabs','value','attachedEvent','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'attachedEvent'); mf.subgroup='attachedEvent'; process('memberList', getInstanceDelegate(mf,'filterElement'));"> + <include item="attachedEventMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubevent.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="pubEventAltText" /> + </img> + </td> + <td class="rightGrad" value="attachedEvent"> </td> + </xsl:if> + <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <td class="leftGrad" value="explicit"> </td> + <td class="tab" value="explicit" onclick="toggleClass('memberTabs','value','explicit','activeTab','tab'); curvedToggleClass('curvedMemberTabs', 'value', 'explicit'); mf.subgroup='explicit'; process('memberList', getInstanceDelegate(mf,'filterElement'));"> + <include item="explicitInterfaceMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="ExplicitInterfaceAltText" /> + </img> + </td> + <td class="rightGrad" value="explicit"> </td> + </xsl:if> + </tr> + </table> + <div class="memberSection"> + <table class="memberOptions"> + <tr> + <td class="line"> + <div id="public" onclick="var checked=toggleCheck(publicImage); mf['public']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="publicImage" onmouseover="mouseOverCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(publicImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="publicMembersFilterLabel" /> + </div> + <br /> + <div id="protected" onclick="var checked=toggleCheck(protectedImage); mf['protected']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="protectedImage" onmouseover="mouseOverCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(protectedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="protectedMembersFilterLabel" /> + </div> + </td> + <td class="line"> + <div id="instance" onclick="var checked=toggleCheck(instanceImage); mf['instance']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="instanceImage" onmouseover="mouseOverCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(instanceImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="instanceMembersFilterLabel" /> + </div> + <br /> + <div id="static" onclick="var checked=toggleCheck(staticImage); mf['static']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="staticImage" onmouseover="mouseOverCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(staticImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="staticMembersFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>static.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="staticAltText" /> + </img> + </div> + </td> + <td class="line"> + <div id="declared" onclick="var checked=toggleCheck(declaredImage); mf['declared']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="declaredImage" onmouseover="mouseOverCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(declaredImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="declaredMembersFilterLabel" /> + </div> + <br /> + <div id="inherited" onclick="var checked=toggleCheck(inheritedImage); mf['inherited']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="inheritedImage" onmouseover="mouseOverCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(inheritedImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="inheritedMembersFilterLabel" /> + </div> + </td> + <td class="line"> + <div id="xna" onclick="var checked=toggleCheck(xnaImage); mf['xna']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="xnaImage" onmouseover="mouseOverCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(xnaImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item="XNAFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>xna.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="XNAFrameworkAltText" /> + </img> + </div> + <br/> + <div id="compact" onclick="var checked=toggleCheck(compactImage); mf['compact']=checked; process('memberList',getInstanceDelegate(mf,'filterElement'));"> + <img id="compactImage" onmouseover="mouseOverCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)" onmouseout="mouseOutCheck(compactImage,checkBoxSelectImage,checkBoxUnSelectImage,checkBoxSelectHoverImage,checkBoxUnSelectHoverImage)"> + <includeAttribute name="src" item="iconPath"> + <parameter>ch_selected.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <include item=".NETCompactFilterLabel" /> + <xsl:text> </xsl:text> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>CFW.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="compactFrameworkAltText" /> + </img> + </div> + </td> + <td class="line"> + <br/> + </td> + </tr> + </table> + <table class="members" id="memberList" cellspacing="0" frame="lhs"> + <tr> + <th class="iconColumn"> + <xsl:text> </xsl:text> + </th> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <!-- use select="element" to show overload-sets, select=".//element[not(parent::element)]" to show all overloads --> + <xsl:apply-templates select=".//element[not(child::element)]" mode="member"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + <script type="text/javascript"> + <xsl:text> + var mf = new MemberFilter(); + toggleClass('memberTabs','value','all','activeTab','tab'); + curvedToggleClass('curvedMemberTabs', 'value', 'all'); + </xsl:text> + </script> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="IsMemberSupportedOnXna"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="platformFilterExcludesXna" select="boolean(platforms and not(platforms/platform[.='Xbox360']))" /> + <xsl:if test="boolean(not($platformFilterExcludesXna) and @xnafw)"> + <xsl:text>supported</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberSupportedOnCf"> + <xsl:choose> + <xsl:when test="document/reference/topicdata[@subgroup='overload'] and document/reference/elements/element and not(@signatureset)"> + <xsl:for-each select="document/reference/elements/element"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:for-each> + </xsl:when> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="platformFilterExcludesCF" select="boolean( platforms and not(platforms[platform[.='PocketPC'] or platform[.='SmartPhone'] or platform[.='WindowsCE']]) )" /> + <xsl:if test="boolean(not($platformFilterExcludesCF) and @netcfw)"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberStatic"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:for-each> + </xsl:when> + <xsl:when test="apidata[@subsubgroup='attachedProperty' or @subsubgroup='attachedEvent']"/> + <xsl:otherwise> + <xsl:if test="memberdata/@static='true'"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberInherited"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="not(contains($key, containers/type/@api))"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberProtected"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="element" mode="memberlistRow"> + <xsl:param name="listVisibility"/> + <xsl:variable name="supportedOnXna"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:variable> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:variable name="staticMember"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:variable> + <xsl:variable name="inheritedMember"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:variable> + <xsl:variable name="protectedMember"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:variable> + <tr> + <xsl:if test="normalize-space($inheritedMember)!=''"> + <xsl:attribute name="name">inheritedMember</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($protectedMember)!=''"> + <xsl:attribute name="protected">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnXna)=''"> + <xsl:attribute name="notSupportedOnXna">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnCf)=''"> + <xsl:attribute name="notSupportedOn">netcf</xsl:attribute> + </xsl:if> + + <td> + <xsl:call-template name="memberIcons"> + <xsl:with-param name="memberVisibility"> + <xsl:choose> + <xsl:when test="$listVisibility='public'">pub</xsl:when> + <xsl:when test="$listVisibility='private'">priv</xsl:when> + <xsl:when test="$listVisibility='protected'">prot</xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when> + <xsl:when test="memberdata/@visibility='private'">priv</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="memberdata[@visibility='public']">pub</xsl:when> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="staticMember" select="normalize-space($staticMember)" /> + <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/> + <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/> + </xsl:call-template> + </td> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" show-parameters="false" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" show-parameters="false" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:text> </xsl:text> + <include item="hostProtectionAttributeShort" /> + </xsl:if> + <xsl:if test="topicdata[@subgroup='overload']"> + <include item="Overloaded"/> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="element" mode="overloadSummary" /> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="@signatureset"> + <!-- TODO add boilerplate for other members in the sig set --> + </xsl:when> + <xsl:when test="not(topicdata[@subgroup='overload'])"> + <xsl:choose> + <xsl:when test="normalize-space($inheritedMember)!=''"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="containers/type/@api" /> + <xsl:with-param name="qualified" select="false()" /> + <xsl:with-param name="specialization" select="boolean(type/specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + --> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides/member"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="overrides/member/@api"/> + <xsl:with-param name="qualified" select="true()"/> + </xsl:call-template> + </parameter> + </include> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </td> + </tr> + </xsl:template> + + <xsl:template match="elements" mode="derivedType"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'DerivedClasses'"/> + <xsl:with-param name="title"> + <include item="derivedClasses" /> + </xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="members" id="memberList" frame="lhs" cellspacing="0"> + <tr> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="derivedType"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="overload"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'overloadMembers'"/> + <xsl:with-param name="title"><include item="membersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <div class="listSection"> + <table class="members" id="memberList" frame="lhs" cellspacing="0"> + <tr> + <th class="nameColumn"> + <include item="typeNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="overload"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates select="element" mode="overloadSections"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="elements" mode="overloadSummary"> + <xsl:apply-templates select="element" mode="overloadSummary" > + <xsl:sort select="apidata/@name"/> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="element" mode="overloadSummary"> + <xsl:call-template name="getOverloadSummary" /> + </xsl:template> + + <xsl:template match="element" mode="overloadSections"> + <xsl:call-template name="getOverloadSections" /> + </xsl:template> + + <xsl:template name="typeIcon"> + <xsl:param name="typeVisibility" /> + + <xsl:variable name="typeSubgroup" select="apidata/@subgroup" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="concat($typeVisibility,$typeSubgroup,'.gif')" /> + </parameter> + </includeAttribute> + <includeAttribute name="title" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" /> + </img> + + </xsl:template> + + <xsl:template name="memberIcons"> + <xsl:param name="memberVisibility" /> + <xsl:param name="staticMember" /> + <xsl:param name="supportedOnXna"/> + <xsl:param name="supportedOnCf"/> + + <xsl:variable name="memberSubgroup"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='constructor'"> + <xsl:text>method</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- test for explicit interface implementations, which get the interface icon --> + <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="ExplicitInterfaceAltText" /> + </img> + </xsl:if> + + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="concat($memberVisibility,$memberSubgroup,'.gif')" /> + </parameter> + </includeAttribute> + <includeAttribute name="title" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" /> + </img> + + <xsl:if test="$staticMember!=''"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>static.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="staticAltText" /> + </img> + </xsl:if> + + <xsl:if test="$supportedOnCf!=''"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>CFW.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="CompactFrameworkAltText" /> + </img> + </xsl:if> + + <xsl:if test="$supportedOnXna!=''"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>xna.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="XNAFrameworkAltText" /> + </img> + </xsl:if> + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <div id="footer"> + <div class="footerLine"> + <img width="100%" height="3px"> + <includeAttribute name="src" item="iconPath"> + <parameter>footer.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="footerImage" /> + </img> + </div> + + <include item="footer"> + <parameter> + <xsl:value-of select="$key"/> + </parameter> + <parameter> + <xsl:call-template name="topicTitlePlain"/> + </parameter> + </include> + </div> + </xsl:template> + + <!-- Assembly information --> + + <xsl:template name="requirementsInfo"> + <p/> + <include item="requirementsNamespaceLayout" /> + <xsl:text> </xsl:text> + <referenceLink target="{/document/reference/containers/namespace/@api}" /> + <br/> + <xsl:call-template name="assembliesInfo"/> + + <!-- some apis display a XAML xmlns uri --> + <xsl:call-template name="xamlXmlnsInfo"/> + </xsl:template> + + <xsl:template name="assemblyNameAndModule"> + <xsl:param name="library" select="/document/reference/containers/library"/> + <include item="assemblyNameAndModule"> + <parameter> + <span data="assembly"> + <xsl:value-of select="$library/@assembly"/> + </span> + </parameter> + <parameter> + <xsl:value-of select="$library/@module"/> + </parameter> + <parameter> + <xsl:choose> + <xsl:when test="$library/@kind = 'DynamicallyLinkedLibrary'"> + <xsl:text>dll</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>exe</xsl:text> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </xsl:template> + + <xsl:template name="assembliesInfo"> + <xsl:choose> + <xsl:when test="count(/document/reference/containers/library)>1"> + <include item="requirementsAssembliesLabel"/> + <xsl:for-each select="/document/reference/containers/library"> + <xsl:text>  </xsl:text> + <xsl:call-template name="assemblyNameAndModule"> + <xsl:with-param name="library" select="."/> + </xsl:call-template> + <br/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <include item="requirementsAssemblyLabel"/> + <xsl:text> </xsl:text> + <xsl:call-template name="assemblyNameAndModule"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Platform information --> + + <xsl:template match="platforms"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'platformsTitle'"/> + <xsl:with-param name="title"> + <include item="platformsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <p> + <xsl:for-each select="platform"> + <include item="{.}" /><xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if> + </xsl:for-each> + </p> + <p> + <include item="developmentPlatformsLayout"/> + </p> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- Version information --> + + <xsl:template match="versions"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'versionsTitle'"/> + <xsl:with-param name="title"> + <include item="versionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="processVersions" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="processVersions"> + <xsl:choose> + <xsl:when test="versions"> + <xsl:for-each select="versions"> + <!-- $platformFilterExcluded is based on platform filtering information --> + <xsl:variable name="platformFilterExcluded" select="boolean(/document/reference/platforms and ( (@name='netcfw' and not(/document/reference/platforms/platform[.='PocketPC']) and not(/document/reference/platforms/platform[.='SmartPhone']) and not(/document/reference/platforms/platform[.='WindowsCE']) ) or (@name='xnafw' and not(/document/reference/platforms/platform[.='Xbox360']) ) ) )" /> + <xsl:if test="not($platformFilterExcluded) and count(version) > 0"> + <h4 class ="subHeading"> + <include item="{@name}" /> + </h4> + <xsl:call-template name="processVersions" /> + </xsl:if> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- show the versions in which the api is supported, if any --> + <xsl:variable name="supportedCount" select="count(version[not(@obsolete)])"/> + <xsl:if test="$supportedCount > 0"> + <include item="supportedIn_{$supportedCount}"> + <xsl:for-each select="version[not(@obsolete)]"> + <parameter> + <include item="{@name}" /> + </parameter> + </xsl:for-each> + </include> + <br/> + </xsl:if> + <!-- show the versions in which the api is obsolete with a compiler warning, if any --> + <xsl:for-each select="version[@obsolete='warning']"> + <include item="obsoleteWarning"> + <parameter> + <include item="{@name}" /> + </parameter> + </include> + <br/> + </xsl:for-each> + <!-- show the versions in which the api is obsolete and does not compile, if any --> + <xsl:for-each select="version[@obsolete='error']"> + <xsl:if test="position()=last()"> + <include item="obsoleteError"> + <parameter> + <include item="{@name}" /> + </parameter> + </include> + <br/> + </xsl:if> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Inheritance hierarchy --> + + <xsl:template match="family"> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'family'"/> + <xsl:with-param name="title"> + <include item="familyTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:variable name="ancestorCount" select="count(ancestors/*)" /> + <xsl:variable name="childCount" select="count(descendents/*)" /> + + <xsl:for-each select="ancestors/type"> + <xsl:sort select="position()" data-type="number" order="descending" /> + + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="position()" /> + </xsl:call-template> + + <xsl:apply-templates select="self::type" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="@api" /> + <xsl:with-param name="qualified" select="true()" /> + <xsl:with-param name="specialization" select="boolean(specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="type/specialization" /> + --> + <br/> + </xsl:for-each> + + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 1" /> + </xsl:call-template> + + <referenceLink target="{$key}" qualified="true"/> + <br/> + + <xsl:choose> + + <xsl:when test="descendents/@derivedTypes"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 2" /> + </xsl:call-template> + <referenceLink target="{descendents/@derivedTypes}" qualified="true"> + <include item="derivedClasses"/> + </referenceLink> + </xsl:when> + <xsl:otherwise> + + <xsl:for-each select="descendents/type"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 2" /> + </xsl:call-template> + + <xsl:apply-templates select="self::type" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + <!-- + <xsl:call-template name="typeReferenceLink"> + <xsl:with-param name="api" select="@api" /> + <xsl:with-param name="qualified" select="true()" /> + <xsl:with-param name="specialization" select="boolean(specialization)" /> + </xsl:call-template> + <xsl:apply-templates select="specialization" /> + --> + <br/> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="createTableEntries"> + <xsl:param name="count" /> + <xsl:if test="number($count) > 0"> + <td> </td> + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="number($count)-1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="typeReferenceLink"> + <xsl:param name="api" /> + <xsl:param name="qualified" /> + <xsl:param name="specialization" /> + + <referenceLink target="{$api}" qualified="{$qualified}"> + <xsl:choose> + <xsl:when test="$specialization = 'true'"> + <xsl:attribute name="show-templates">false</xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="show-templates">true</xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </referenceLink> + + </xsl:template> + + <xsl:template match="template"> + <xsl:choose> + <xsl:when test="@api=$key"> + <xsl:value-of select="@name" /> + </xsl:when> + <xsl:otherwise> + <include item="typeLinkToTypeParameter"> + <parameter> + <xsl:value-of select="@name"/> + </parameter> + <parameter> + <referenceLink target="{@api}" qualified="true" /> + </parameter> + </include> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="member"> + <xsl:apply-templates select="type" mode="link" /> + <xsl:text>.</xsl:text> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Naming --> + + <xsl:template name="shortName"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/containers/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- decorated names --> + + <xsl:template name="shortNameDecorated"> + <!--<xsl:param name="titleType" /> --> + <xsl:choose> + <!-- type overview pages get the type name --> + <xsl:when test="$group='type' or ($group='list' and not($subgroup='overload'))"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + </xsl:when> + <!-- constructors and member list pages also use the type name --> + <xsl:when test="$subgroup='constructor' or ($subgroup='overload' and /document/reference/apidata/@subgroup='constructor')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + </xsl:when> + <!-- + <xsl:when test="$group='member'"> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="GetTypeName" /> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$titleType = 'tocTitle'"> + <xsl:value-of select="$type" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($typeName, '.', $type)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + --> + <!-- member pages use the qualified member name --> + <xsl:when test="$group='member' or ($subgroup='overload' and /document/reference/apidata/@group='member')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <xsl:for-each select="/document/reference[1]"> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="decorated" /> + </xsl:for-each> + </xsl:when> + <!-- namespace (and any other) topics just use the name --> + <xsl:when test="/document/reference/apidata/@name = ''"> + <include item="defaultNamespace" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- plain names --> + + <xsl:template name="shortNamePlain"> + <xsl:param name="qualifyMembers" select="false()" /> + <xsl:choose> + <!-- type overview pages get the type name --> + <xsl:when test="$group='type' or (group='list' and not($subgroup = 'overload'))"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + </xsl:when> + <!-- constructors and member list pages also use the type name --> + <xsl:when test="$subgroup='constructor' or ($subgroup='overload' and /document/reference/apidata/@subgroup='constructor')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + </xsl:when> + <!-- namespace, member (and any other) topics just use the name --> + <xsl:when test="/document/reference/apidata/@name = ''"> + <include item="defaultNamespace" /> + </xsl:when> + <xsl:otherwise> + <xsl:if test="$qualifyMembers and /document/reference/apidata/@group='member'"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="typeNamePlain"> + <xsl:param name="annotate" select="false()" /> + <xsl:if test="(containers/type)|type"> + <xsl:for-each select="(containers/type)|type"> + <xsl:call-template name="typeNamePlain"> + <xsl:with-param name="annotate" select="$annotate" /> + </xsl:call-template> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="$annotate and templates/template"> + <xsl:value-of select="concat('`',count(templates/template))"/> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/hana/transforms/xamlSyntax.xsl b/tools/Sandcastle/Presentation/hana/transforms/xamlSyntax.xsl index 44bcdbe..4362a26 100644 --- a/tools/Sandcastle/Presentation/hana/transforms/xamlSyntax.xsl +++ b/tools/Sandcastle/Presentation/hana/transforms/xamlSyntax.xsl @@ -1,491 +1,491 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="globalTemplates.xsl"/>
-
- <xsl:variable name="showNonXamlAssemblyBoilerplate" select="'false'" />
-
- <!-- XAML Syntax -->
-
- <xsl:template name="XamlSyntaxBlock">
- <!-- Branch based on pagetype -->
- <xsl:choose>
- <!-- Display boilerplate for pagetypes that cannot be used in XAML,
- unless there's an authored XAML text section, which is used in place of the boilerplate. -->
- <xsl:when test="$subgroup='method' or
- $subgroup='constructor' or
- $subgroup='interface' or
- $subgroup='delegate' or
- $subgroup='field'">
- <xsl:call-template name="nonXamlMembersXamlSyntax"/>
- </xsl:when>
-
- <!-- class and struct -->
- <xsl:when test="$subgroup='class' or
- $subgroup='structure'">
- <xsl:call-template name="classOrStructXamlSyntax"/>
- </xsl:when>
-
- <!-- enumeration -->
- <xsl:when test="$subgroup='enumeration'">
- <xsl:call-template name="enumerationXamlSyntax"/>
- </xsl:when>
-
- <!-- property -->
- <xsl:when test="$subgroup='property' or $subsubgroup='attachedProperty'">
- <xsl:call-template name="propertyXamlSyntax"/>
- </xsl:when>
-
- <!-- event -->
- <xsl:when test="$subgroup='event' or $subsubgroup='attachedEvent'">
- <xsl:call-template name="eventXamlSyntax"/>
- </xsl:when>
-
- </xsl:choose>
- </xsl:template>
-
- <!-- XAML syntax for CLASS and STRUCT topics. This is the logic:
- if authored OESyntax,
- display it
- else if autogen OESyntax (AND no authored XAML section),
- display it.
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored OESyntax OR authored AttrUsage OR authored XAML section),
- display autogen boilerplate
- display XAML Values section, if any
- -->
- <xsl:template name="classOrStructXamlSyntax">
- <!-- Object Element Usage
- //ddue:section[starts-with(@address,'xamlValues')]
- //ddue:section[starts-with(@address,'xamlTextUsage')]
- //ddue:section[starts-with(@address,'xamlAttributeUsage')]
- //ddue:section[starts-with(@address,'xamlPropertyElementUsage')]
- //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')]
- //ddue:section[starts-with(@address,'xamlObjectElementUsage')]
- //ddue:section[starts-with(@address,'dependencyPropertyInfo')]
- //ddue:section[starts-with(@address,'routedEventInfo')]
- -->
- <xsl:choose>
- <!-- Show the authored Object Element Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlObjectElementUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Object Element Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlObjectElementUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- Implicit Collection Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for ENUMERATION topics. This is the logic:
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored AttrUsage OR authored XAML section),
- display autogen AttrUsage or boilerplate.
- display XAML Values section, if any
- -->
- <xsl:template name="enumerationXamlSyntax">
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show enum syntax boilerplate, if no authored xaml sections to override it. -->
- <xsl:choose>
- <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/>
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="xamlAttributeUsageHeading" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><include item="enumerationOverviewXamlSyntax"/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:when>
- </xsl:choose>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for PROPERTY topics. This is the logic:
- if authored OESyntax,
- display it
- if authored PEUsage,
- display it
- else if autogen PEUsage (AND no authored XAML section),
- display it
- if authored AttrUsage,
- display it
- else if autogen AttrUsage (AND no authored XAML section),
- display it
- if authored XAML section,
- display it
- if no (authored OESyntax OR authored PEUsage OR authored AttrUsage OR authored XAML section),
- display autogen boilerplate
- -->
- <xsl:template name="propertyXamlSyntax">
- <!-- Object Element Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Property Element Usage -->
- <xsl:choose>
- <!-- Show the authored Property Element Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Property Element Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- Attribute Usage -->
- <xsl:choose>
- <!-- Show the authored Attribute Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlAttributeUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Attribute Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="div/*"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for EVENT topics. This is the logic:
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored AttrUsage OR authored XAML section),
- display autogen AttrUsage or boilerplate.
- display XAML Values section, if any
- -->
- <xsl:template name="eventXamlSyntax">
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen syntax or boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <!-- If XamlSyntax component generated an Attribute Usage block, this template will show it. -->
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- <!-- If XamlSyntax component generated a boilerplate block, this template will show it. -->
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="div/*"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for members that cannot be used in XAML: interface, delegate, method, field, constructor.
- If there's an authored XAML section, show it. Otherwise, use the standard boilerplate. -->
- <xsl:template name="nonXamlMembersXamlSyntax">
- <xsl:choose>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlTextUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:otherwise>
- <xsl:call-template name="ShowXamlSyntaxBoilerplate"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Displays one of the standard XAML boilerplate strings. -->
- <xsl:template name="ShowXamlSyntaxBoilerplate">
- <xsl:param name="param0"/>
- <xsl:variable name="boilerplateId">
- <xsl:choose>
- <!-- don't show boilerplate for apis that are not in xaml assemblies -->
- <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/>
- <xsl:otherwise>
- <xsl:value-of select="div/@class[not(.='xamlAttributeUsageHeading' or
- .='xamlObjectElementUsageHeading' or
- .='xamlContentElementUsageHeading' or
- .='xamlPropertyElementUsageHeading' or
- .='xamlXmlnsUri')]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="$boilerplateId!=''">
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="xamlSyntaxBoilerplateHeading" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><span class="message"><xsl:text/><include item="{$boilerplateId}">
- <xsl:choose>
- <xsl:when test="$param0!=''">
- <parameter>
- <xsl:copy-of select="msxsl:node-set($param0)"/>
- </parameter>
- </xsl:when>
- <!-- make sure we at least pass in an empty param because some boilerplates expect them -->
- <xsl:otherwise>
- <parameter/>
- </xsl:otherwise>
- </xsl:choose>
- </include></span></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:if>
- </xsl:template>
-
- <!-- Displays an authored XAML syntax section -->
- <xsl:template name="ShowAuthoredXamlSyntax">
- <xsl:if test="ddue:content[normalize-space(.)!='']">
- <xsl:variable name="headingID">
- <xsl:choose>
- <xsl:when test="starts-with(@address,'xamlObjectElementUsage')">xamlObjectElementUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlImplicitCollectionUsage')">xamlImplicitCollectionUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlPropertyElementUsage')">
- <xsl:choose>
- <xsl:when test="//div[@class='xamlContentElementUsageHeading']">xamlContentElementUsageHeading</xsl:when>
- <xsl:otherwise>xamlPropertyElementUsageHeading</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="starts-with(@address,'xamlAttributeUsage')">xamlAttributeUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlTextUsage')">xamlSyntaxBoilerplateHeading</xsl:when>
- </xsl:choose>
- </xsl:variable>
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="{$headingID}" />
- </th>
- </tr>
- <xsl:choose>
- <xsl:when test="$headingID='xamlSyntaxBoilerplateHeading'">
- <tr>
- <td>
- <xsl:apply-templates select="ddue:content"/>
- </td>
- </tr>
- </xsl:when>
- <xsl:otherwise>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:choose>
- <xsl:when test="ddue:content/ddue:code"><xsl:apply-templates select="ddue:content/ddue:code[1]/node()" /></xsl:when>
- <xsl:when test="ddue:content/ddue:para"><xsl:apply-templates select="ddue:content/ddue:para"/></xsl:when>
- </xsl:choose></pre>
- </td>
- </tr>
- </xsl:otherwise>
- </xsl:choose>
- </table>
- </span>
- </xsl:if>
- </xsl:template>
-
- <!-- Displays the autogenerated XAML syntax for pagetypes other than enumerations -->
- <xsl:template name="ShowAutogeneratedXamlSyntax">
- <xsl:param name="autogenContent"/>
- <xsl:if test="count(msxsl:node-set($autogenContent))>0">
- <xsl:for-each select="msxsl:node-set($autogenContent)/div">
- <xsl:variable name="headingID">
- <xsl:value-of select="@class"/>
- </xsl:variable>
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="{$headingID}" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <!-- Display the XAML Values section. -->
- <xsl:template name="showXamlValuesSection">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlValues')]">
- <span codeLanguage="XAML">
- <p/>
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="xamlValuesSectionHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content"/>
- </xsl:with-param>
- </xsl:call-template>
- </span>
- </xsl:for-each>
- </xsl:template>
-
- <!-- these xaml sections are captured in the xaml syntax processing, so this template prevents them from showing up twice -->
- <xsl:template match="//ddue:section[starts-with(@address,'xamlValues') or
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage') or
- starts-with(@address,'dependencyPropertyInfo') or
- starts-with(@address,'routedEventInfo')]"/>
-
- <!-- the authored dependency Property Information section -->
- <xsl:template match="ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'dependencyPropertyInfo'"/>
- <xsl:with-param name="title">
- <include item="dependencyPropertyInfoHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- the authored routed event Information section -->
- <xsl:template match="ddue:section[starts-with(@address,'routedEventInfo')]" mode="section">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'routedEventInfo'"/>
- <xsl:with-param name="title">
- <include item="routedEventInfoHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Show XAML xmlns for apis that support XAML -->
- <xsl:template name="xamlXmlnsInfo">
- <xsl:variable name="hasAuthoredXamlSyntax" select="boolean(//ddue:sections/ddue:section[
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage')])" />
- <xsl:variable name="hasAutogeneratedXamlSyntax" select="boolean(/document/syntax/div[@codeLanguage='XAML']/div[
- @class='xamlAttributeUsageHeading' or
- @class='xamlObjectElementUsageHeading' or
- @class='xamlContentElementUsageHeading' or
- @class='xamlPropertyElementUsageHeading'])" />
- <!-- All topics that have authored or autogen'd xaml syntax get an "XMLNS for XAML" line in the Requirements section.
- Topics with boilerplate xaml syntax, e.g. "Not applicable", do NOT get this line. -->
- <xsl:if test="$hasAuthoredXamlSyntax or $hasAutogeneratedXamlSyntax">
- <br/>
- <include item="xamlXmlnsRequirementsLayout">
- <parameter>
- <xsl:choose>
- <xsl:when test="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']">
- <xsl:for-each select="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']">
- <xsl:if test="position()!=1"><xsl:text>, </xsl:text></xsl:if>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <include item="unmappedXamlXmlns"/>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="globalTemplates.xsl"/> + + <xsl:variable name="showNonXamlAssemblyBoilerplate" select="'false'" /> + + <!-- XAML Syntax --> + + <xsl:template name="XamlSyntaxBlock"> + <!-- Branch based on pagetype --> + <xsl:choose> + <!-- Display boilerplate for pagetypes that cannot be used in XAML, + unless there's an authored XAML text section, which is used in place of the boilerplate. --> + <xsl:when test="$subgroup='method' or + $subgroup='constructor' or + $subgroup='interface' or + $subgroup='delegate' or + $subgroup='field'"> + <xsl:call-template name="nonXamlMembersXamlSyntax"/> + </xsl:when> + + <!-- class and struct --> + <xsl:when test="$subgroup='class' or + $subgroup='structure'"> + <xsl:call-template name="classOrStructXamlSyntax"/> + </xsl:when> + + <!-- enumeration --> + <xsl:when test="$subgroup='enumeration'"> + <xsl:call-template name="enumerationXamlSyntax"/> + </xsl:when> + + <!-- property --> + <xsl:when test="$subgroup='property' or $subsubgroup='attachedProperty'"> + <xsl:call-template name="propertyXamlSyntax"/> + </xsl:when> + + <!-- event --> + <xsl:when test="$subgroup='event' or $subsubgroup='attachedEvent'"> + <xsl:call-template name="eventXamlSyntax"/> + </xsl:when> + + </xsl:choose> + </xsl:template> + + <!-- XAML syntax for CLASS and STRUCT topics. This is the logic: + if authored OESyntax, + display it + else if autogen OESyntax (AND no authored XAML section), + display it. + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored OESyntax OR authored AttrUsage OR authored XAML section), + display autogen boilerplate + display XAML Values section, if any + --> + <xsl:template name="classOrStructXamlSyntax"> + <!-- Object Element Usage + //ddue:section[starts-with(@address,'xamlValues')] + //ddue:section[starts-with(@address,'xamlTextUsage')] + //ddue:section[starts-with(@address,'xamlAttributeUsage')] + //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] + //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] + //ddue:section[starts-with(@address,'xamlObjectElementUsage')] + //ddue:section[starts-with(@address,'dependencyPropertyInfo')] + //ddue:section[starts-with(@address,'routedEventInfo')] + --> + <xsl:choose> + <!-- Show the authored Object Element Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlObjectElementUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Object Element Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlObjectElementUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- Implicit Collection Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="."/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for ENUMERATION topics. This is the logic: + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored AttrUsage OR authored XAML section), + display autogen AttrUsage or boilerplate. + display XAML Values section, if any + --> + <xsl:template name="enumerationXamlSyntax"> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show enum syntax boilerplate, if no authored xaml sections to override it. --> + <xsl:choose> + <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="xamlAttributeUsageHeading" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><include item="enumerationOverviewXamlSyntax"/></pre> + </td> + </tr> + </table> + </span> + </xsl:when> + </xsl:choose> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for PROPERTY topics. This is the logic: + if authored OESyntax, + display it + if authored PEUsage, + display it + else if autogen PEUsage (AND no authored XAML section), + display it + if authored AttrUsage, + display it + else if autogen AttrUsage (AND no authored XAML section), + display it + if authored XAML section, + display it + if no (authored OESyntax OR authored PEUsage OR authored AttrUsage OR authored XAML section), + display autogen boilerplate + --> + <xsl:template name="propertyXamlSyntax"> + <!-- Object Element Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Property Element Usage --> + <xsl:choose> + <!-- Show the authored Property Element Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Property Element Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- Attribute Usage --> + <xsl:choose> + <!-- Show the authored Attribute Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlAttributeUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Attribute Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="div/*"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for EVENT topics. This is the logic: + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored AttrUsage OR authored XAML section), + display autogen AttrUsage or boilerplate. + display XAML Values section, if any + --> + <xsl:template name="eventXamlSyntax"> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen syntax or boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <!-- If XamlSyntax component generated an Attribute Usage block, this template will show it. --> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + <!-- If XamlSyntax component generated a boilerplate block, this template will show it. --> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="div/*"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for members that cannot be used in XAML: interface, delegate, method, field, constructor. + If there's an authored XAML section, show it. Otherwise, use the standard boilerplate. --> + <xsl:template name="nonXamlMembersXamlSyntax"> + <xsl:choose> + <!-- XAML Text section - show authored section, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlTextUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:otherwise> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Displays one of the standard XAML boilerplate strings. --> + <xsl:template name="ShowXamlSyntaxBoilerplate"> + <xsl:param name="param0"/> + <xsl:variable name="boilerplateId"> + <xsl:choose> + <!-- don't show boilerplate for apis that are not in xaml assemblies --> + <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/> + <xsl:otherwise> + <xsl:value-of select="div/@class[not(.='xamlAttributeUsageHeading' or + .='xamlObjectElementUsageHeading' or + .='xamlContentElementUsageHeading' or + .='xamlPropertyElementUsageHeading' or + .='xamlXmlnsUri')]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="$boilerplateId!=''"> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="xamlSyntaxBoilerplateHeading" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><span class="message"><xsl:text/><include item="{$boilerplateId}"> + <xsl:choose> + <xsl:when test="$param0!=''"> + <parameter> + <xsl:copy-of select="msxsl:node-set($param0)"/> + </parameter> + </xsl:when> + <!-- make sure we at least pass in an empty param because some boilerplates expect them --> + <xsl:otherwise> + <parameter/> + </xsl:otherwise> + </xsl:choose> + </include></span></pre> + </td> + </tr> + </table> + </span> + </xsl:if> + </xsl:template> + + <!-- Displays an authored XAML syntax section --> + <xsl:template name="ShowAuthoredXamlSyntax"> + <xsl:if test="ddue:content[normalize-space(.)!='']"> + <xsl:variable name="headingID"> + <xsl:choose> + <xsl:when test="starts-with(@address,'xamlObjectElementUsage')">xamlObjectElementUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlImplicitCollectionUsage')">xamlImplicitCollectionUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlPropertyElementUsage')"> + <xsl:choose> + <xsl:when test="//div[@class='xamlContentElementUsageHeading']">xamlContentElementUsageHeading</xsl:when> + <xsl:otherwise>xamlPropertyElementUsageHeading</xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="starts-with(@address,'xamlAttributeUsage')">xamlAttributeUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlTextUsage')">xamlSyntaxBoilerplateHeading</xsl:when> + </xsl:choose> + </xsl:variable> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="{$headingID}" /> + </th> + </tr> + <xsl:choose> + <xsl:when test="$headingID='xamlSyntaxBoilerplateHeading'"> + <tr> + <td> + <xsl:apply-templates select="ddue:content"/> + </td> + </tr> + </xsl:when> + <xsl:otherwise> + <tr> + <td> + <pre xml:space="preserve"><xsl:choose> + <xsl:when test="ddue:content/ddue:code"><xsl:apply-templates select="ddue:content/ddue:code[1]/node()" /></xsl:when> + <xsl:when test="ddue:content/ddue:para"><xsl:apply-templates select="ddue:content/ddue:para"/></xsl:when> + </xsl:choose></pre> + </td> + </tr> + </xsl:otherwise> + </xsl:choose> + </table> + </span> + </xsl:if> + </xsl:template> + + <!-- Displays the autogenerated XAML syntax for pagetypes other than enumerations --> + <xsl:template name="ShowAutogeneratedXamlSyntax"> + <xsl:param name="autogenContent"/> + <xsl:if test="count(msxsl:node-set($autogenContent))>0"> + <xsl:for-each select="msxsl:node-set($autogenContent)/div"> + <xsl:variable name="headingID"> + <xsl:value-of select="@class"/> + </xsl:variable> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="{$headingID}" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/></pre> + </td> + </tr> + </table> + </span> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <!-- Display the XAML Values section. --> + <xsl:template name="showXamlValuesSection"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlValues')]"> + <span codeLanguage="XAML"> + <p/> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="xamlValuesSectionHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content"/> + </xsl:with-param> + </xsl:call-template> + </span> + </xsl:for-each> + </xsl:template> + + <!-- these xaml sections are captured in the xaml syntax processing, so this template prevents them from showing up twice --> + <xsl:template match="//ddue:section[starts-with(@address,'xamlValues') or + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage') or + starts-with(@address,'dependencyPropertyInfo') or + starts-with(@address,'routedEventInfo')]"/> + + <!-- the authored dependency Property Information section --> + <xsl:template match="ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'dependencyPropertyInfo'"/> + <xsl:with-param name="title"> + <include item="dependencyPropertyInfoHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- the authored routed event Information section --> + <xsl:template match="ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'routedEventInfo'"/> + <xsl:with-param name="title"> + <include item="routedEventInfoHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- Show XAML xmlns for apis that support XAML --> + <xsl:template name="xamlXmlnsInfo"> + <xsl:variable name="hasAuthoredXamlSyntax" select="boolean(//ddue:sections/ddue:section[ + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage')])" /> + <xsl:variable name="hasAutogeneratedXamlSyntax" select="boolean(/document/syntax/div[@codeLanguage='XAML']/div[ + @class='xamlAttributeUsageHeading' or + @class='xamlObjectElementUsageHeading' or + @class='xamlContentElementUsageHeading' or + @class='xamlPropertyElementUsageHeading'])" /> + <!-- All topics that have authored or autogen'd xaml syntax get an "XMLNS for XAML" line in the Requirements section. + Topics with boilerplate xaml syntax, e.g. "Not applicable", do NOT get this line. --> + <xsl:if test="$hasAuthoredXamlSyntax or $hasAutogeneratedXamlSyntax"> + <br/> + <include item="xamlXmlnsRequirementsLayout"> + <parameter> + <xsl:choose> + <xsl:when test="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']"> + <xsl:for-each select="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']"> + <xsl:if test="position()!=1"><xsl:text>, </xsl:text></xsl:if> + <xsl:value-of select="."/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <include item="unmappedXamlXmlns"/> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml index 2374860..9063b63 100644 --- a/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml +++ b/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml @@ -1,57 +1,57 @@ -<content xml:space="preserve">
-
- <!-- control window stuff -->
- <item id="productTitle">.NET Framework Developer's Guide</item>
-
- <!-- main window stuff -->
-
- <!-- body -->
-
- <!-- section titles -->
- <item id="inThisSectionTitle">In This Section</item>
- <item id="buildInstructionsTitle">Compiling the Code</item>
- <item id="nextStepsTitle">Next Steps</item>
- <item id="requirementsTitle">Requirements</item>
- <item id="relatedSectionsTitle">Related Sections</item>
- <item id="relatedTopicsTitle">See Also</item>
- <item id="syntaxTitle">Syntax</item>
- <item id="parametersTitle">Parameters</item>
- <item id="returnValueTitle">Return Value</item>
- <item id="attributesAndElements">Attributes and Elements</item>
- <item id="attributes">Attributes</item>
- <item id="childElement">Child Elements</item>
- <item id="parentElement">Parent Elements</item>
- <item id="elementInformation">Element Information</item>
- <item id="textValue">Text Value</item>
- <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item>
- <item id="prerequisites">Prerequisites</item>
- <item id="robustProgramming">Robust Programming</item>
- <item id="securitySection">Security</item>
- <item id="externalResources">External Resources</item>
- <item id="demonstrates">Demonstrates</item>
- <item id="appliesTo">Applies To</item>
- <item id="conclusion">Conclusion</item>
- <item id="background">Background</item>
- <item id="whatsNew">What's New</item>
- <item id="reference">Reference</item>
- <item id="errorMessage">Error Message</item>
-
- <item id="collapseAll">Collapse All</item>
- <item id="expandAll">Expand All</item>
- <item id="Example">Example</item>
-
- <!-- Sample Topics -->
- <item id="downloadSample">Download</item>
- <item id="sampleFiles">Sample Files:</item>
- <item id="viewSampleSource">View Source</item>
-
- <!-- autoOutline boilerplate -->
- <item id="autoOutlineTopLevelIntro">
- <p>This topic contains the following sections.</p>
- </item>
- <item id="autoOutlineSubsectionIntro">
- <p>This section contains the following subsections.</p>
- </item>
- <item id="RelatedTopicsLinkText">Related Topics</item>
-
-</content>
+<content xml:space="preserve"> + + <!-- control window stuff --> + <item id="productTitle">.NET Framework Developer's Guide</item> + + <!-- main window stuff --> + + <!-- body --> + + <!-- section titles --> + <item id="inThisSectionTitle">In This Section</item> + <item id="buildInstructionsTitle">Compiling the Code</item> + <item id="nextStepsTitle">Next Steps</item> + <item id="requirementsTitle">Requirements</item> + <item id="relatedSectionsTitle">Related Sections</item> + <item id="relatedTopicsTitle">See Also</item> + <item id="syntaxTitle">Syntax</item> + <item id="parametersTitle">Parameters</item> + <item id="returnValueTitle">Return Value</item> + <item id="attributesAndElements">Attributes and Elements</item> + <item id="attributes">Attributes</item> + <item id="childElement">Child Elements</item> + <item id="parentElement">Parent Elements</item> + <item id="elementInformation">Element Information</item> + <item id="textValue">Text Value</item> + <item id="dotNetFrameworkEquivalent">.NET Framework Equivalent</item> + <item id="prerequisites">Prerequisites</item> + <item id="robustProgramming">Robust Programming</item> + <item id="securitySection">Security</item> + <item id="externalResources">External Resources</item> + <item id="demonstrates">Demonstrates</item> + <item id="appliesTo">Applies To</item> + <item id="conclusion">Conclusion</item> + <item id="background">Background</item> + <item id="whatsNew">What's New</item> + <item id="reference">Reference</item> + <item id="errorMessage">Error Message</item> + + <item id="collapseAll">Collapse All</item> + <item id="expandAll">Expand All</item> + <item id="Example">Example</item> + + <!-- Sample Topics --> + <item id="downloadSample">Download</item> + <item id="sampleFiles">Sample Files:</item> + <item id="viewSampleSource">View Source</item> + + <!-- autoOutline boilerplate --> + <item id="autoOutlineTopLevelIntro"> + <p>This topic contains the following sections.</p> + </item> + <item id="autoOutlineSubsectionIntro"> + <p>This section contains the following subsections.</p> + </item> + <item id="RelatedTopicsLinkText">Related Topics</item> + +</content> diff --git a/tools/Sandcastle/Presentation/vs2005/Content/token_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/token_content.xml index 13b8cb2..1ccae34 100644 --- a/tools/Sandcastle/Presentation/vs2005/Content/token_content.xml +++ b/tools/Sandcastle/Presentation/vs2005/Content/token_content.xml @@ -1,4 +1,4 @@ -<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink">
- <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item>
- <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item>
-</items>
+<items xml:space="preserve" xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:xlink="http://www.w3.org/1999/xlink"> + <item id="vbprvblong"><ddue:legacyItalic>Visual Basic 2005</ddue:legacyItalic></item> + <item id="aspnet_see_dataaccess_overview">See <ddue:link xlink:href="1ff79676-9b84-4939-91b7-885a5ce4fdf8" /> for more information.</item> +</items> diff --git a/tools/Sandcastle/Presentation/vs2005/Content/web_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/web_content.xml index a52e06c..09a2334 100644 --- a/tools/Sandcastle/Presentation/vs2005/Content/web_content.xml +++ b/tools/Sandcastle/Presentation/vs2005/Content/web_content.xml @@ -1,8 +1,8 @@ -<content xml:space="preserve">
-
-<!-- Add content to this item to display a footer at the bottom of each topic. It receives two
- parameters: the topic key and the plain topic title. -->
-<item id="footer">
-</item>
-
-</content>
+<content xml:space="preserve"> + +<!-- Add content to this item to display a footer at the bottom of each topic. It receives two + parameters: the topic key and the plain topic title. --> +<item id="footer"> +</item> + +</content> diff --git a/tools/Sandcastle/Presentation/vs2005/DocModel.ps1 b/tools/Sandcastle/Presentation/vs2005/DocModel.ps1 index dae12bb..f88fa5c 100644 --- a/tools/Sandcastle/Presentation/vs2005/DocModel.ps1 +++ b/tools/Sandcastle/Presentation/vs2005/DocModel.ps1 @@ -1,34 +1,34 @@ -
-# Sandcastle build script overrides for vs2005 doc model.
-
-. $DxRoot\Presentation\Shared\SharedDocModel.ps1
-
-function PostProcessReflectionData($sourceFile, $targetFile) {
- WriteInfo "Post processing reflection data."
- &$XslTransform $sourceFile `
- /xsl:$DxRoot\ProductionTransforms\ApplyVSDocModel.xsl `
- /xsl:$DxRoot\ProductionTransforms\AddFriendlyFilenames.xsl `
- /arg:IncludeAllMembersTopic=true `
- /arg:IncludeInheritedOverloadTopics=true `
- /out:$targetFile
-}
-
-function CreateToc {
- WriteInfo "Creating TOC."
- &$XslTransform $TempDir\ReflectionData\targets.xml `
- /xsl:$DxRoot\ProductionTransforms\createvstoc.xsl `
- /out:$TempDir\toc.xml
-}
-
-
-function CreateSitemap {
- WriteInfo "Creating sitemap file."
- &$XslTransform $TempDir\toc.xml `
- /xsl:"$DxRoot\ProductionTransforms\Vs2005TocToDsToc.xsl" `
- /arg:topicInfo="$TempDir\TopicInfo" `
- /xsl:"$DxRoot\ProductionTransforms\DsTocToSitemap.xsl" `
- /out:"$WebOutputDir\api\web.sitemap"
-
-}
-
+ +# Sandcastle build script overrides for vs2005 doc model. + +. $DxRoot\Presentation\Shared\SharedDocModel.ps1 + +function PostProcessReflectionData($sourceFile, $targetFile) { + WriteInfo "Post processing reflection data." + &$XslTransform $sourceFile ` + /xsl:$DxRoot\ProductionTransforms\ApplyVSDocModel.xsl ` + /xsl:$DxRoot\ProductionTransforms\AddFriendlyFilenames.xsl ` + /arg:IncludeAllMembersTopic=true ` + /arg:IncludeInheritedOverloadTopics=true ` + /out:$targetFile +} + +function CreateToc { + WriteInfo "Creating TOC." + &$XslTransform $TempDir\ReflectionData\targets.xml ` + /xsl:$DxRoot\ProductionTransforms\createvstoc.xsl ` + /out:$TempDir\toc.xml +} + + +function CreateSitemap { + WriteInfo "Creating sitemap file." + &$XslTransform $TempDir\toc.xml ` + /xsl:"$DxRoot\ProductionTransforms\Vs2005TocToDsToc.xsl" ` + /arg:topicInfo="$TempDir\TopicInfo" ` + /xsl:"$DxRoot\ProductionTransforms\DsTocToSitemap.xsl" ` + /out:"$WebOutputDir\api\web.sitemap" + +} + $DocModelSupportsWebBuild = $true
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/CheckboxMenu.js b/tools/Sandcastle/Presentation/vs2005/Scripts/CheckboxMenu.js index de8348f..e206a7e 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/CheckboxMenu.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/CheckboxMenu.js @@ -1,157 +1,157 @@ -
-function CheckboxMenu(id, data, persistkeys, globals)
-{
- this.id = id;
- this.menuCheckboxIds = new Array();
- this.data = data;
- this.count = 0;
-
- var element = document.getElementById(id);
- var checkboxNodes = element.getElementsByTagName("input");
-
- for(var checkboxCount=0; checkboxCount < checkboxNodes.length; checkboxCount++)
- {
- var checkboxId = checkboxNodes[checkboxCount].getAttribute('id');
- var checkboxData = checkboxNodes[checkboxCount].getAttribute('data');
- var dataSplits = checkboxData.split(',');
- var defaultValue = checkboxNodes[checkboxCount].getAttribute('value');
- if (checkboxData != null && checkboxData.indexOf("persist") != -1)
- persistkeys.push(checkboxId);
-
- this.menuCheckboxIds[dataSplits[0]] = checkboxId;
-
- // try to get the value for this checkbox id from globals
- var persistedValue = (globals == null) ? null : globals.VariableExists(checkboxId) ? globals.VariableValue(checkboxId) : null;
- var currentValue = (persistedValue != null) ? persistedValue : (defaultValue == null) ? "on" : defaultValue;
-
- // set the checkbox's check state
- this.SetCheckState(checkboxId, currentValue);
-
- this.count++;
- }
-}
-
-CheckboxMenu.prototype.SetCheckState=function(id, value)
-{
- var checkbox = document.getElementById(id);
- if(checkbox != null)
- {
- checkbox.checked = (value == "on") ? true : false;
- }
-
- // set the value for the checkbox id in the data array
- this.data[id] = value;
-}
-
-CheckboxMenu.prototype.GetCheckState=function(id)
-{
- var checkbox = document.getElementById(id);
- if(checkbox != null)
- return checkbox.checked;
- return false;
-}
-
-CheckboxMenu.prototype.ToggleCheckState=function(id)
-{
- // at least one checkbox must always be checked
- var checkedCount = this.GetCheckedCount();
-
- if(this.data[id] == "on" && checkedCount > 1)
- this.SetCheckState(id, "off");
- else
- this.SetCheckState(id, "on");
-}
-
-// returns the checkbox id associated with a key
-CheckboxMenu.prototype.GetCheckboxId=function(key)
-{
- return this.menuCheckboxIds[key];
-}
-
-// returns the array of checkbox ids
-CheckboxMenu.prototype.GetCheckboxIds=function()
-{
- return this.menuCheckboxIds;
-}
-
-// returns the @data attribute of the checkbox element
-CheckboxMenu.prototype.GetCheckboxData=function(checkboxId)
-{
- var checkbox = document.getElementById(checkboxId);
- if (checkbox == null) return "";
- return checkbox.getAttribute('data');
-}
-
-CheckboxMenu.prototype.GetDropdownLabelId=function()
-{
- var checkboxCount = this.count;
- var checkedCount = this.GetCheckedCount();
- var idPrefix = this.id;
-
- // if all boxes checked, use showall label
- if (checkedCount == checkboxCount)
- return idPrefix.concat("AllLabel");
-
- // if only one is checked, use label appropriate for that one checkbox
- if (checkedCount == 1)
- {
- for(var key in this.menuCheckboxIds)
- {
- if (this.data[this.menuCheckboxIds[key]] == "on")
- {
- return idPrefix.concat(key,'Label');
- }
- }
- }
-
- // if multiple or zero checked, use multiple label
- return idPrefix.concat("MultipleLabel");
-}
-
-CheckboxMenu.prototype.GetCheckedCount=function()
-{
- var count = 0;
- for(var key in this.menuCheckboxIds)
- {
- if (this.data[this.menuCheckboxIds[key]] == "on")
- count++;
- }
- return (count);
-}
-
-// returns an array containing the ids of the checkboxes that are checked
-CheckboxMenu.prototype.GetCheckedIds=function()
-{
- var idArray = new Array();
- for(var key in this.menuCheckboxIds)
- {
- if (this.data[this.menuCheckboxIds[key]] == "on")
- idArray.push(this.menuCheckboxIds[key]);
- }
- return idArray;
-}
-
-CheckboxMenu.prototype.GetGroupCheckedCount=function(checkboxGroup)
-{
- var count = 0;
- for(var i = 0; i < checkboxGroup.length; i++)
- {
- if (this.data[checkboxGroup[i]] == "on")
- count++;
- }
- return (count);
-}
-
-CheckboxMenu.prototype.ToggleGroupCheckState=function(id, checkboxGroup)
-{
- // at least one checkbox must always be checked
- var checkedCount = this.GetGroupCheckedCount(checkboxGroup);
-
- // if the group has multiple checkboxes, one must always be checked; so toggle to "off" only if more than one currently checked
- // if the group has only one checkbox, it's okay to toggle it on/off
- if(this.data[id] == "on" && (checkedCount > 1 || checkboxGroup.length == 1))
- this.SetCheckState(id, "off");
- else
- this.SetCheckState(id, "on");
-}
-
+ +function CheckboxMenu(id, data, persistkeys, globals) +{ + this.id = id; + this.menuCheckboxIds = new Array(); + this.data = data; + this.count = 0; + + var element = document.getElementById(id); + var checkboxNodes = element.getElementsByTagName("input"); + + for(var checkboxCount=0; checkboxCount < checkboxNodes.length; checkboxCount++) + { + var checkboxId = checkboxNodes[checkboxCount].getAttribute('id'); + var checkboxData = checkboxNodes[checkboxCount].getAttribute('data'); + var dataSplits = checkboxData.split(','); + var defaultValue = checkboxNodes[checkboxCount].getAttribute('value'); + if (checkboxData != null && checkboxData.indexOf("persist") != -1) + persistkeys.push(checkboxId); + + this.menuCheckboxIds[dataSplits[0]] = checkboxId; + + // try to get the value for this checkbox id from globals + var persistedValue = (globals == null) ? null : globals.VariableExists(checkboxId) ? globals.VariableValue(checkboxId) : null; + var currentValue = (persistedValue != null) ? persistedValue : (defaultValue == null) ? "on" : defaultValue; + + // set the checkbox's check state + this.SetCheckState(checkboxId, currentValue); + + this.count++; + } +} + +CheckboxMenu.prototype.SetCheckState=function(id, value) +{ + var checkbox = document.getElementById(id); + if(checkbox != null) + { + checkbox.checked = (value == "on") ? true : false; + } + + // set the value for the checkbox id in the data array + this.data[id] = value; +} + +CheckboxMenu.prototype.GetCheckState=function(id) +{ + var checkbox = document.getElementById(id); + if(checkbox != null) + return checkbox.checked; + return false; +} + +CheckboxMenu.prototype.ToggleCheckState=function(id) +{ + // at least one checkbox must always be checked + var checkedCount = this.GetCheckedCount(); + + if(this.data[id] == "on" && checkedCount > 1) + this.SetCheckState(id, "off"); + else + this.SetCheckState(id, "on"); +} + +// returns the checkbox id associated with a key +CheckboxMenu.prototype.GetCheckboxId=function(key) +{ + return this.menuCheckboxIds[key]; +} + +// returns the array of checkbox ids +CheckboxMenu.prototype.GetCheckboxIds=function() +{ + return this.menuCheckboxIds; +} + +// returns the @data attribute of the checkbox element +CheckboxMenu.prototype.GetCheckboxData=function(checkboxId) +{ + var checkbox = document.getElementById(checkboxId); + if (checkbox == null) return ""; + return checkbox.getAttribute('data'); +} + +CheckboxMenu.prototype.GetDropdownLabelId=function() +{ + var checkboxCount = this.count; + var checkedCount = this.GetCheckedCount(); + var idPrefix = this.id; + + // if all boxes checked, use showall label + if (checkedCount == checkboxCount) + return idPrefix.concat("AllLabel"); + + // if only one is checked, use label appropriate for that one checkbox + if (checkedCount == 1) + { + for(var key in this.menuCheckboxIds) + { + if (this.data[this.menuCheckboxIds[key]] == "on") + { + return idPrefix.concat(key,'Label'); + } + } + } + + // if multiple or zero checked, use multiple label + return idPrefix.concat("MultipleLabel"); +} + +CheckboxMenu.prototype.GetCheckedCount=function() +{ + var count = 0; + for(var key in this.menuCheckboxIds) + { + if (this.data[this.menuCheckboxIds[key]] == "on") + count++; + } + return (count); +} + +// returns an array containing the ids of the checkboxes that are checked +CheckboxMenu.prototype.GetCheckedIds=function() +{ + var idArray = new Array(); + for(var key in this.menuCheckboxIds) + { + if (this.data[this.menuCheckboxIds[key]] == "on") + idArray.push(this.menuCheckboxIds[key]); + } + return idArray; +} + +CheckboxMenu.prototype.GetGroupCheckedCount=function(checkboxGroup) +{ + var count = 0; + for(var i = 0; i < checkboxGroup.length; i++) + { + if (this.data[checkboxGroup[i]] == "on") + count++; + } + return (count); +} + +CheckboxMenu.prototype.ToggleGroupCheckState=function(id, checkboxGroup) +{ + // at least one checkbox must always be checked + var checkedCount = this.GetGroupCheckedCount(checkboxGroup); + + // if the group has multiple checkboxes, one must always be checked; so toggle to "off" only if more than one currently checked + // if the group has only one checkbox, it's okay to toggle it on/off + if(this.data[id] == "on" && (checkedCount > 1 || checkboxGroup.length == 1)) + this.SetCheckState(id, "off"); + else + this.SetCheckState(id, "on"); +} + diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js index fa3a3d9..e2d5767 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js @@ -1,336 +1,336 @@ -//function codeBlockHandler(id, data, value)
-function codeBlockHandler()
-{
- // handle groups of snippets to make sure at least one from the group is always shown
- HandleSnippetGroups();
-
- // handle any remaining snippets that aren't in groups
- var spanElements = document.getElementsByTagName("span");
- for(var i = 0; i < spanElements.length; ++i)
- {
- var devlang = spanElements[i].getAttribute("codeLanguage");
- if (devlang == null) continue;
-
- if (HasSnippetGroupAncestor(spanElements[i])) continue;
-
- var checkboxId = GetDevlangCheckboxId(devlang);
- if (checkboxId != null && checkboxId != "")
- {
- if (docSettings[checkboxId] == "on")
- spanElements[i].style.display = "";
- else
- spanElements[i].style.display = "none";
- }
- }
-}
-
-function HasSnippetGroupAncestor(object)
-{
- var parent = object.parentElement;
- if (parent == null) return false;
-
- var className = parent.className;
- if (className != null && className == "snippetgroup")
- return true
-
- return HasSnippetGroupAncestor(parent);
-}
-
-function HandleSnippetGroups()
-{
- var divs = document.getElementsByTagName("DIV");
- var divclass;
- for (var i = 0; i < divs.length; i++)
- {
- divclass = divs[i].className;
- if (divclass == null || divclass != "snippetgroup") continue;
-
- // if all snippets in this group would be hidden by filtering display them all anyhow
- var unfilteredCount = GetUnfilteredSnippetCount(divs[i]);
-
- var spanElements = divs[i].getElementsByTagName("span");
- for(var j = 0; j < spanElements.length; ++j)
- {
- var devlang = spanElements[j].getAttribute("codeLanguage");
- if (devlang == null) continue;
-
- var checkboxId = GetDevlangCheckboxId(devlang);
-
- // for filtered devlangs, determine whether they should be shown/hidden
- if (checkboxId != null && checkboxId != "")
- {
- if (unfilteredCount == 0 || docSettings[checkboxId] == "on")
- spanElements[j].style.display = "";
- else
- spanElements[j].style.display = "none";
- }
- }
- }
-}
-
-function GetUnfilteredSnippetCount(group)
-{
- var count = 0;
- var spanElements = group.getElementsByTagName("span");
- for(var i = 0; i < spanElements.length; ++i)
- {
- var devlang = spanElements[i].getAttribute("codeLanguage");
- var checkboxId = GetDevlangCheckboxId(devlang);
- if (checkboxId != null && checkboxId != "")
- {
- if (docSettings[checkboxId] == "on")
- count++;
- }
- }
- return count;
-}
-
-function GetDevlangCheckboxId(devlang)
-{
- switch (devlang)
- {
- case "VisualBasic":
- case "VisualBasicDeclaration":
- case "VisualBasicUsage":
- return devlangsMenu.GetCheckboxId("VisualBasic");
- case "CSharp":
- return devlangsMenu.GetCheckboxId("CSharp");
- case "ManagedCPlusPlus":
- return devlangsMenu.GetCheckboxId("ManagedCPlusPlus");
- case "JScript":
- return devlangsMenu.GetCheckboxId("JScript");
- case "JSharp":
- return devlangsMenu.GetCheckboxId("JSharp");
- case "JavaScript":
- return devlangsMenu.GetCheckboxId("JavaScript");
- default:
- return "";
- }
-}
-
-// update stylesheet display settings for spans to show according to user's devlang preference
-function styleSheetHandler(oneDevlang)
-{
- var devlang = (oneDevlang != "") ? oneDevlang : GetDevlangPreference();
-
- var sd = getStyleDictionary();
-
- if (devlang == 'cs') {
- sd['span.cs'].display = 'inline';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'none';
- sd['span.nu'].display = 'none';
- } else if (devlang == 'vb') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'inline';
- sd['span.cpp'].display = 'none';
- sd['span.nu'].display = 'none';
- } else if (devlang == 'cpp') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'inline';
- sd['span.nu'].display = 'none';
- } else if (devlang == 'nu') {
- sd['span.cs'].display = 'none';
- sd['span.vb'].display = 'none';
- sd['span.cpp'].display = 'none';
- sd['span.nu'].display = 'inline';
- }
-}
-
-function getStyleDictionary() {
- var styleDictionary = new Array();
-
- // iterate through stylesheets
- var sheets = document.styleSheets;
-
- for(var i=0; i<sheets.length;i++) {
- var sheet = sheets[i];
-
- // Ignore sheets at ms-help Urls
- if (sheet.href.substr(0,8) == 'ms-help:') continue;
-
- // get sheet rules
- var rules = sheet.cssRules;
-
- if (rules == null) rules = sheet.rules;
-
- // iterate through rules
- for(j=0; j<rules.length; j++) {
- var rule = rules[j];
-
- // Ignore ones that aren't defined
- if(rule.selectorText == null)
- continue;
-
- // add rule to dictionary
- styleDictionary[rule.selectorText.toLowerCase()] = rule.style;
- }
- }
-
- return(styleDictionary);
-}
-
-function GetDevlangPreference()
-{
- var devlangCheckboxIds = devlangsMenu.GetCheckboxIds();
- var checkedCount = 0;
- var devlang;
- for (var key in devlangCheckboxIds)
- {
- if (docSettings[devlangCheckboxIds[key]] == "on")
- {
- checkedCount++;
- checkboxData = devlangsMenu.GetCheckboxData(devlangCheckboxIds[key]);
- var dataSplits = checkboxData.split(',');
- if (dataSplits.length > 1)
- devlang = dataSplits[1];
- }
- }
- return (checkedCount == 1 ? devlang : "nu");
-}
-
-
-
-function memberlistHandler()
-{
- // get all the <tr> nodes in the document
- var allRows = document.getElementsByTagName("tr");
- var i;
-
- for(i = 0; i < allRows.length; ++i)
- {
- var memberdata = allRows[i].getAttribute("data");
- if (memberdata != null)
- {
- if ((ShowBasedOnInheritance(memberdata) == false) ||
- (ShowBasedOnVisibility(memberdata) == false) ||
- (ShowBasedOnFramework(memberdata) == false) )
- allRows[i].style.display = "none";
- else
- allRows[i].style.display = "";
- }
- }
-
- ShowHideFrameworkImages();
- ShowHideFrameworkSpans();
-}
-
-function ShowHideFrameworkImages()
-{
- // show/hide img nodes for filtered framework icons
- // get all the <img> nodes in the document
- var allImgs = document.getElementsByTagName("img");
-
- for(var i = 0; i < allImgs.length; i++)
- {
- var imgdata = allImgs[i].getAttribute("data");
- if (imgdata != null)
- {
- var checkboxId = imgdata + "Checkbox";
- if (docSettings[checkboxId] != "on")
- {
- allImgs[i].style.display = "none";
- }
- else
- allImgs[i].style.display = "";
- }
- }
-}
-
-function ShowHideFrameworkSpans()
-{
- // show/hide img nodes for filtered framework icons
- // get all the <img> nodes in the document
- var allImgs = document.getElementsByTagName("span");
-
- for(var i = 0; i < allImgs.length; i++)
- {
- var imgdata = allImgs[i].getAttribute("data");
- if (imgdata != null)
- {
- var checkboxId = imgdata + "Checkbox";
- if (docSettings[checkboxId] != "on")
- {
- allImgs[i].style.display = "none";
- }
- else
- allImgs[i].style.display = "";
- }
- }
-}
-
-function ShowBasedOnVisibility(memberdata)
-{
- var isPublic = (memberdata.indexOf("public") != -1);
- var isProtected = (memberdata.indexOf("protected") != -1);
- var isPrivate = (memberdata.indexOf("private") != -1);
- var isExplicitII = (memberdata.indexOf("explicit") != -1);
-
- // if the public checkbox doesn't exist, default to showPublic == true
- var publicCheck = docSettings["PublicCheckbox"];
- var showPublic = (publicCheck == null) ? true : (publicCheck == "on");
-
- // if the protected checkbox doesn't exist, default to showProtected == true
- var protectedCheck = docSettings["ProtectedCheckbox"];
- var showProtected = (protectedCheck == null) ? true : (protectedCheck == "on");
-
- if ( (showProtected && isProtected) || (showPublic && isPublic) || isExplicitII || isPrivate)
- return true;
-
- return false;
-}
-
-function ShowBasedOnInheritance(memberdata)
-{
- var isInherited = (memberdata.indexOf("inherited") != -1);
- var isDeclared = (memberdata.indexOf("declared") != -1);
-
- // if the inherited checkbox doesn't exist, default to showInherited == true
- var inheritedCheck = docSettings["InheritedCheckbox"];
- var showInherited = (inheritedCheck == null) ? true : (inheritedCheck == "on");
-
- // if the declared checkbox doesn't exist, default to showDeclared == true
- var declaredCheck = docSettings["DeclaredCheckbox"];
- var showDeclared = (declaredCheck == null) ? true : (declaredCheck == "on");
-
- if ( (showInherited && isInherited) || (showDeclared && isDeclared) )
- return true;
-
- return false;
-}
-
-function ShowBasedOnFramework(memberdata)
-{
- var isNetfw = (memberdata.indexOf("notNetfw") == -1);
- var isNetcfw = (memberdata.indexOf("netcfw") != -1);
- var isXnafw = (memberdata.indexOf("xnafw") != -1);
-
- var netfwCheck = docSettings["netfwCheckbox"];
- var netcfwCheck = docSettings["netcfwCheckbox"];
- var xnafwCheck = docSettings["xnafwCheckbox"];
-
- // if all the checkboxes are null, it means we have no framework filter; so return true to show member by default
- if (netfwCheck == null && netcfwCheck == null && xnafwCheck == null)
- return true;
-
- var showNetfw = (netfwCheck == "on");
- var showNetcfw = (netcfwCheck == "on");
- var showXnafw = (xnafwCheck == "on");
-
- if ( (isNetfw && showNetfw) || (isNetcfw && showNetcfw) || (isXnafw && showXnafw) )
- return true;
-
- return false;
-}
-
-
-function SetDropdownMenuLabel(menu, dropdown)
-{
- var dropdownLabelId = menu.GetDropdownLabelId();
- dropdown.SetActivatorLabel(dropdownLabelId);
- for (var i = 0; i < dropdowns.length; i++)
- {
- dropdowns[i].reposition();
- }
-}
+//function codeBlockHandler(id, data, value) +function codeBlockHandler() +{ + // handle groups of snippets to make sure at least one from the group is always shown + HandleSnippetGroups(); + + // handle any remaining snippets that aren't in groups + var spanElements = document.getElementsByTagName("span"); + for(var i = 0; i < spanElements.length; ++i) + { + var devlang = spanElements[i].getAttribute("codeLanguage"); + if (devlang == null) continue; + + if (HasSnippetGroupAncestor(spanElements[i])) continue; + + var checkboxId = GetDevlangCheckboxId(devlang); + if (checkboxId != null && checkboxId != "") + { + if (docSettings[checkboxId] == "on") + spanElements[i].style.display = ""; + else + spanElements[i].style.display = "none"; + } + } +} + +function HasSnippetGroupAncestor(object) +{ + var parent = object.parentElement; + if (parent == null) return false; + + var className = parent.className; + if (className != null && className == "snippetgroup") + return true + + return HasSnippetGroupAncestor(parent); +} + +function HandleSnippetGroups() +{ + var divs = document.getElementsByTagName("DIV"); + var divclass; + for (var i = 0; i < divs.length; i++) + { + divclass = divs[i].className; + if (divclass == null || divclass != "snippetgroup") continue; + + // if all snippets in this group would be hidden by filtering display them all anyhow + var unfilteredCount = GetUnfilteredSnippetCount(divs[i]); + + var spanElements = divs[i].getElementsByTagName("span"); + for(var j = 0; j < spanElements.length; ++j) + { + var devlang = spanElements[j].getAttribute("codeLanguage"); + if (devlang == null) continue; + + var checkboxId = GetDevlangCheckboxId(devlang); + + // for filtered devlangs, determine whether they should be shown/hidden + if (checkboxId != null && checkboxId != "") + { + if (unfilteredCount == 0 || docSettings[checkboxId] == "on") + spanElements[j].style.display = ""; + else + spanElements[j].style.display = "none"; + } + } + } +} + +function GetUnfilteredSnippetCount(group) +{ + var count = 0; + var spanElements = group.getElementsByTagName("span"); + for(var i = 0; i < spanElements.length; ++i) + { + var devlang = spanElements[i].getAttribute("codeLanguage"); + var checkboxId = GetDevlangCheckboxId(devlang); + if (checkboxId != null && checkboxId != "") + { + if (docSettings[checkboxId] == "on") + count++; + } + } + return count; +} + +function GetDevlangCheckboxId(devlang) +{ + switch (devlang) + { + case "VisualBasic": + case "VisualBasicDeclaration": + case "VisualBasicUsage": + return devlangsMenu.GetCheckboxId("VisualBasic"); + case "CSharp": + return devlangsMenu.GetCheckboxId("CSharp"); + case "ManagedCPlusPlus": + return devlangsMenu.GetCheckboxId("ManagedCPlusPlus"); + case "JScript": + return devlangsMenu.GetCheckboxId("JScript"); + case "JSharp": + return devlangsMenu.GetCheckboxId("JSharp"); + case "JavaScript": + return devlangsMenu.GetCheckboxId("JavaScript"); + default: + return ""; + } +} + +// update stylesheet display settings for spans to show according to user's devlang preference +function styleSheetHandler(oneDevlang) +{ + var devlang = (oneDevlang != "") ? oneDevlang : GetDevlangPreference(); + + var sd = getStyleDictionary(); + + if (devlang == 'cs') { + sd['span.cs'].display = 'inline'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'none'; + sd['span.nu'].display = 'none'; + } else if (devlang == 'vb') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'inline'; + sd['span.cpp'].display = 'none'; + sd['span.nu'].display = 'none'; + } else if (devlang == 'cpp') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'inline'; + sd['span.nu'].display = 'none'; + } else if (devlang == 'nu') { + sd['span.cs'].display = 'none'; + sd['span.vb'].display = 'none'; + sd['span.cpp'].display = 'none'; + sd['span.nu'].display = 'inline'; + } +} + +function getStyleDictionary() { + var styleDictionary = new Array(); + + // iterate through stylesheets + var sheets = document.styleSheets; + + for(var i=0; i<sheets.length;i++) { + var sheet = sheets[i]; + + // Ignore sheets at ms-help Urls + if (sheet.href.substr(0,8) == 'ms-help:') continue; + + // get sheet rules + var rules = sheet.cssRules; + + if (rules == null) rules = sheet.rules; + + // iterate through rules + for(j=0; j<rules.length; j++) { + var rule = rules[j]; + + // Ignore ones that aren't defined + if(rule.selectorText == null) + continue; + + // add rule to dictionary + styleDictionary[rule.selectorText.toLowerCase()] = rule.style; + } + } + + return(styleDictionary); +} + +function GetDevlangPreference() +{ + var devlangCheckboxIds = devlangsMenu.GetCheckboxIds(); + var checkedCount = 0; + var devlang; + for (var key in devlangCheckboxIds) + { + if (docSettings[devlangCheckboxIds[key]] == "on") + { + checkedCount++; + checkboxData = devlangsMenu.GetCheckboxData(devlangCheckboxIds[key]); + var dataSplits = checkboxData.split(','); + if (dataSplits.length > 1) + devlang = dataSplits[1]; + } + } + return (checkedCount == 1 ? devlang : "nu"); +} + + + +function memberlistHandler() +{ + // get all the <tr> nodes in the document + var allRows = document.getElementsByTagName("tr"); + var i; + + for(i = 0; i < allRows.length; ++i) + { + var memberdata = allRows[i].getAttribute("data"); + if (memberdata != null) + { + if ((ShowBasedOnInheritance(memberdata) == false) || + (ShowBasedOnVisibility(memberdata) == false) || + (ShowBasedOnFramework(memberdata) == false) ) + allRows[i].style.display = "none"; + else + allRows[i].style.display = ""; + } + } + + ShowHideFrameworkImages(); + ShowHideFrameworkSpans(); +} + +function ShowHideFrameworkImages() +{ + // show/hide img nodes for filtered framework icons + // get all the <img> nodes in the document + var allImgs = document.getElementsByTagName("img"); + + for(var i = 0; i < allImgs.length; i++) + { + var imgdata = allImgs[i].getAttribute("data"); + if (imgdata != null) + { + var checkboxId = imgdata + "Checkbox"; + if (docSettings[checkboxId] != "on") + { + allImgs[i].style.display = "none"; + } + else + allImgs[i].style.display = ""; + } + } +} + +function ShowHideFrameworkSpans() +{ + // show/hide img nodes for filtered framework icons + // get all the <img> nodes in the document + var allImgs = document.getElementsByTagName("span"); + + for(var i = 0; i < allImgs.length; i++) + { + var imgdata = allImgs[i].getAttribute("data"); + if (imgdata != null) + { + var checkboxId = imgdata + "Checkbox"; + if (docSettings[checkboxId] != "on") + { + allImgs[i].style.display = "none"; + } + else + allImgs[i].style.display = ""; + } + } +} + +function ShowBasedOnVisibility(memberdata) +{ + var isPublic = (memberdata.indexOf("public") != -1); + var isProtected = (memberdata.indexOf("protected") != -1); + var isPrivate = (memberdata.indexOf("private") != -1); + var isExplicitII = (memberdata.indexOf("explicit") != -1); + + // if the public checkbox doesn't exist, default to showPublic == true + var publicCheck = docSettings["PublicCheckbox"]; + var showPublic = (publicCheck == null) ? true : (publicCheck == "on"); + + // if the protected checkbox doesn't exist, default to showProtected == true + var protectedCheck = docSettings["ProtectedCheckbox"]; + var showProtected = (protectedCheck == null) ? true : (protectedCheck == "on"); + + if ( (showProtected && isProtected) || (showPublic && isPublic) || isExplicitII || isPrivate) + return true; + + return false; +} + +function ShowBasedOnInheritance(memberdata) +{ + var isInherited = (memberdata.indexOf("inherited") != -1); + var isDeclared = (memberdata.indexOf("declared") != -1); + + // if the inherited checkbox doesn't exist, default to showInherited == true + var inheritedCheck = docSettings["InheritedCheckbox"]; + var showInherited = (inheritedCheck == null) ? true : (inheritedCheck == "on"); + + // if the declared checkbox doesn't exist, default to showDeclared == true + var declaredCheck = docSettings["DeclaredCheckbox"]; + var showDeclared = (declaredCheck == null) ? true : (declaredCheck == "on"); + + if ( (showInherited && isInherited) || (showDeclared && isDeclared) ) + return true; + + return false; +} + +function ShowBasedOnFramework(memberdata) +{ + var isNetfw = (memberdata.indexOf("notNetfw") == -1); + var isNetcfw = (memberdata.indexOf("netcfw") != -1); + var isXnafw = (memberdata.indexOf("xnafw") != -1); + + var netfwCheck = docSettings["netfwCheckbox"]; + var netcfwCheck = docSettings["netcfwCheckbox"]; + var xnafwCheck = docSettings["xnafwCheckbox"]; + + // if all the checkboxes are null, it means we have no framework filter; so return true to show member by default + if (netfwCheck == null && netcfwCheck == null && xnafwCheck == null) + return true; + + var showNetfw = (netfwCheck == "on"); + var showNetcfw = (netcfwCheck == "on"); + var showXnafw = (xnafwCheck == "on"); + + if ( (isNetfw && showNetfw) || (isNetcfw && showNetcfw) || (isXnafw && showXnafw) ) + return true; + + return false; +} + + +function SetDropdownMenuLabel(menu, dropdown) +{ + var dropdownLabelId = menu.GetDropdownLabelId(); + dropdown.SetActivatorLabel(dropdownLabelId); + for (var i = 0; i < dropdowns.length; i++) + { + dropdowns[i].reposition(); + } +} diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js b/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js index aa3d6f4..34872b7 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/Dropdown.js @@ -1,89 +1,89 @@ -
-// Dropdown menu control
-
-function Dropdown(activatorId, dropdownId) {
-
- // store activator and dropdown elements
- this.activator = document.getElementById(activatorId);
- this.dropdown = document.getElementById(dropdownId);
- this.activatorImage = document.getElementById(activatorId + "Image");
-
- // wire up show/hide events
- registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show"));
- registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide"));
- registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show"));
- registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide"));
-
- // fix visibility and position
- this.dropdown.style.visibility = 'hidden';
- this.dropdown.style.position = 'absolute';
- this.reposition(null);
-
- // wire up repositioning event
- registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition"));
-
-
-}
-
-Dropdown.prototype.show = function(e) {
- clearTimeout(this.timer);
- this.dropdown.style.visibility = 'visible';
- if (this.activatorImage != null)
- this.activatorImage.src = dropDownHoverImage.src;
- if (this.activator != null)
- this.activator.className = "filterOnHover";
-}
-
-Dropdown.prototype.hide = function(e) {
- this.dropdown.style.visibility = 'hidden';
- if (this.activatorImage != null)
- this.activatorImage.src = dropDownImage.src;
- if (this.activator != null)
- this.activator.className = "filter";
-}
-
-Dropdown.prototype.requestHide = function(e) {
- this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250);
-}
-
-Dropdown.prototype.reposition = function(e) {
-
- // get position of activator
- var offsetLeft = 0;
- var offsetTop = 0;
- var offsetElement = this.activator;
-
- while (offsetElement) {
- offsetLeft += offsetElement.offsetLeft;
- offsetTop += offsetElement.offsetTop;
- offsetElement = offsetElement.offsetParent;
- }
-
- // set position of dropdown relative to it
- this.dropdown.style.left = offsetLeft;
- this.dropdown.style.top = offsetTop + this.activator.offsetHeight;
-}
-
-Dropdown.prototype.SetActivatorLabel = function(labelId)
-{
- // get the children of the activator node, which includes the label nodes
- var labelNodes = this.activator.childNodes;
-
-
- for(var labelCount=0; labelCount < labelNodes.length; labelCount++)
- {
- if(labelNodes[labelCount].tagName == 'LABEL')
- {
- var labelNodeId = labelNodes[labelCount].getAttribute('id');
- if (labelNodeId == labelId)
- {
- labelNodes[labelCount].style.display = "inline";
- }
- else
- {
- labelNodes[labelCount].style.display = "none";
- }
- }
- }
-}
+ +// Dropdown menu control + +function Dropdown(activatorId, dropdownId) { + + // store activator and dropdown elements + this.activator = document.getElementById(activatorId); + this.dropdown = document.getElementById(dropdownId); + this.activatorImage = document.getElementById(activatorId + "Image"); + + // wire up show/hide events + registerEventHandler(this.activator,'mouseover', getInstanceDelegate(this, "show")); + registerEventHandler(this.activator,'mouseout', getInstanceDelegate(this, "requestHide")); + registerEventHandler(this.dropdown,'mouseover', getInstanceDelegate(this, "show")); + registerEventHandler(this.dropdown,'mouseout', getInstanceDelegate(this, "requestHide")); + + // fix visibility and position + this.dropdown.style.visibility = 'hidden'; + this.dropdown.style.position = 'absolute'; + this.reposition(null); + + // wire up repositioning event + registerEventHandler(window, 'resize', getInstanceDelegate(this, "reposition")); + + +} + +Dropdown.prototype.show = function(e) { + clearTimeout(this.timer); + this.dropdown.style.visibility = 'visible'; + if (this.activatorImage != null) + this.activatorImage.src = dropDownHoverImage.src; + if (this.activator != null) + this.activator.className = "filterOnHover"; +} + +Dropdown.prototype.hide = function(e) { + this.dropdown.style.visibility = 'hidden'; + if (this.activatorImage != null) + this.activatorImage.src = dropDownImage.src; + if (this.activator != null) + this.activator.className = "filter"; +} + +Dropdown.prototype.requestHide = function(e) { + this.timer = setTimeout( getInstanceDelegate(this, "hide"), 250); +} + +Dropdown.prototype.reposition = function(e) { + + // get position of activator + var offsetLeft = 0; + var offsetTop = 0; + var offsetElement = this.activator; + + while (offsetElement) { + offsetLeft += offsetElement.offsetLeft; + offsetTop += offsetElement.offsetTop; + offsetElement = offsetElement.offsetParent; + } + + // set position of dropdown relative to it + this.dropdown.style.left = offsetLeft; + this.dropdown.style.top = offsetTop + this.activator.offsetHeight; +} + +Dropdown.prototype.SetActivatorLabel = function(labelId) +{ + // get the children of the activator node, which includes the label nodes + var labelNodes = this.activator.childNodes; + + + for(var labelCount=0; labelCount < labelNodes.length; labelCount++) + { + if(labelNodes[labelCount].tagName == 'LABEL') + { + var labelNodeId = labelNodes[labelCount].getAttribute('id'); + if (labelNodeId == labelId) + { + labelNodes[labelCount].style.display = "inline"; + } + else + { + labelNodes[labelCount].style.display = "none"; + } + } + } +}
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/EventUtilities.js b/tools/Sandcastle/Presentation/vs2005/Scripts/EventUtilities.js index f3536f5..1828a11 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/EventUtilities.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/EventUtilities.js @@ -1,23 +1,23 @@ -
- // attach a handler to a particular event on an element
- // in a browser-independent way
- function registerEventHandler (element, event, handler) {
- if (element.attachEvent) {
- // MS registration model
- element.attachEvent('on' + event, handler);
- } else if (element.addEventListener) {
- // NN (W4C) regisration model
- element.addEventListener(event, handler, false);
- } else {
- // old regisration model as fall-back
- element[event] = handler;
- }
- }
-
- // get a delegate that refers to an instance method
- function getInstanceDelegate (obj, methodName) {
- return( function(e) {
- e = e || window.event;
- return obj[methodName](e);
- } );
- }
+ + // attach a handler to a particular event on an element + // in a browser-independent way + function registerEventHandler (element, event, handler) { + if (element.attachEvent) { + // MS registration model + element.attachEvent('on' + event, handler); + } else if (element.addEventListener) { + // NN (W4C) regisration model + element.addEventListener(event, handler, false); + } else { + // old regisration model as fall-back + element[event] = handler; + } + } + + // get a delegate that refers to an instance method + function getInstanceDelegate (obj, methodName) { + return( function(e) { + e = e || window.event; + return obj[methodName](e); + } ); + } diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js b/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js index 1240154..3b04f0a 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/SplitScreen.js @@ -1,29 +1,29 @@ -
- function SplitScreen (nonScrollingRegionId, scrollingRegionId) {
-
- // store references to the two regions
- this.nonScrollingRegion = document.getElementById(nonScrollingRegionId);
- this.scrollingRegion = document.getElementById(scrollingRegionId);
-
- // set the scrolling settings
- document.body.style.margin = "0px";
- document.body.style.overflow = "hidden";
- this.scrollingRegion.style.overflow = "auto";
-
- // fix the size of the scrolling region
- this.resize(null);
-
- // add an event handler to resize the scrolling region when the window is resized
- registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize"));
-
- }
-
- SplitScreen.prototype.resize = function(e) {
- var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight;
- if (height > 0) {
- this.scrollingRegion.style.height = height;
- } else {
- this.scrollingRegion.style.height = 0;
- }
- this.scrollingRegion.style.width = document.body.clientWidth;
- }
+ + function SplitScreen (nonScrollingRegionId, scrollingRegionId) { + + // store references to the two regions + this.nonScrollingRegion = document.getElementById(nonScrollingRegionId); + this.scrollingRegion = document.getElementById(scrollingRegionId); + + // set the scrolling settings + document.body.style.margin = "0px"; + document.body.style.overflow = "hidden"; + this.scrollingRegion.style.overflow = "auto"; + + // fix the size of the scrolling region + this.resize(null); + + // add an event handler to resize the scrolling region when the window is resized + registerEventHandler(window, 'resize', getInstanceDelegate(this, "resize")); + + } + + SplitScreen.prototype.resize = function(e) { + var height = document.body.clientHeight - this.nonScrollingRegion.offsetHeight; + if (height > 0) { + this.scrollingRegion.style.height = height; + } else { + this.scrollingRegion.style.height = 0; + } + this.scrollingRegion.style.width = document.body.clientWidth; + } diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js b/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js index 6f4b750..4f79de1 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js @@ -1,116 +1,116 @@ -//Default FeedBack Values
-var ratings = 3;
-var title = document.title;
-var URL = location.href.replace(location.hash,"");
-var version = 2007;
-
-/*************************************************************************
- * Methods ********************************************************
- *************************************************************************/
-
-function DeliveryType()
-{
- if (URL.indexOf("ms-help://")!=-1) {return("h");}
- else if (URL.indexOf(".chm::/")!=-1) {return("c");}
- else if (URL.indexOf("http://")!=-1) {return("w");}
- else if (URL.indexOf("file:")!=-1) {return("f");}
- else return("0");
-}
-
-function DeliverableValue(deliverable)
-{
- if (URL.indexOf("ms-help://")!=-1)
- {
- delvalue = location.href.slice(0,location.href.lastIndexOf("/html/"));
- delvalue = delvalue.slice(delvalue.lastIndexOf("/")+1);
- return delvalue;
- }
- else return(deliverable);
-}
-
-function URLValue()
-{
- if (URL.indexOf(".chm::")!=-1)
- {
- a = URL;
- while (a.indexOf("\\") < a.indexOf(".chm::") || a.indexOf("//") > a.indexOf(".chm::"))
- {
- if (a.indexOf("\\")==-1)
- {
- break;
- }
- a = a.substring(a.indexOf("\\")+1,a.length);
- }
- return("ms-its:"+a)
- }
- else if (URL.indexOf("file:///")!=-1)
- {
- a = URL;
-
- b = a.substring(a.lastIndexOf("html")+5,a.length);
- return("file:///"+b);
- }
- else return(URL);
-}
-
-function GetLanguage()
-{
- var langauge;
- if(navigator.userAgent.indexOf("Firefox")!=-1)
- {
- var index = navigator.userAgent.indexOf('(');
- var string = navigator.userAgent.substring(navigator.userAgent.indexOf('('), navigator.userAgent.length);
- var splitString = string.split(';');
- language = splitString[3].substring(1, splitString[3].length);
- }
- else language = navigator.systemLanguage;
- return(language);
-}
-
-
-//---Gets topic rating.---
-function GetRating()
-{
-
- sRating = "0";
- for(var x = 0;x < 5;x++)
- {
- if(document.formRating) {
- if(document.formRating.fbRating[x].checked) {sRating = x + 1;}}
- else return sRating;
- }
- return sRating;
-}
-
-function SubmitFeedback(alias, product, deliverable, productVersion, documentationVersion, defaultBody)
-{
- var subject = title
- + " ("
- + "/1:"
- + product
- + "/2:"
- + productVersion
- + "/3:"
- + documentationVersion
- + "/4:"
- + DeliverableValue(deliverable)
- + "/5:"
- + URLValue()
- + "/6:"
- + GetRating()
- + "/7:"
- + DeliveryType()
- + "/8:"
- + GetLanguage()
- + "/9:"
- + version
- + ")";
-
- location.href = "mailto:" + alias + "?subject=" + subject
- + "&body=" + defaultBody;
-}
-
-function AltFeedback(src, title) {
- src.title=title;
- return;
- }
+//Default FeedBack Values +var ratings = 3; +var title = document.title; +var URL = location.href.replace(location.hash,""); +var version = 2007; + +/************************************************************************* + * Methods ******************************************************** + *************************************************************************/ + +function DeliveryType() +{ + if (URL.indexOf("ms-help://")!=-1) {return("h");} + else if (URL.indexOf(".chm::/")!=-1) {return("c");} + else if (URL.indexOf("http://")!=-1) {return("w");} + else if (URL.indexOf("file:")!=-1) {return("f");} + else return("0"); +} + +function DeliverableValue(deliverable) +{ + if (URL.indexOf("ms-help://")!=-1) + { + delvalue = location.href.slice(0,location.href.lastIndexOf("/html/")); + delvalue = delvalue.slice(delvalue.lastIndexOf("/")+1); + return delvalue; + } + else return(deliverable); +} + +function URLValue() +{ + if (URL.indexOf(".chm::")!=-1) + { + a = URL; + while (a.indexOf("\\") < a.indexOf(".chm::") || a.indexOf("//") > a.indexOf(".chm::")) + { + if (a.indexOf("\\")==-1) + { + break; + } + a = a.substring(a.indexOf("\\")+1,a.length); + } + return("ms-its:"+a) + } + else if (URL.indexOf("file:///")!=-1) + { + a = URL; + + b = a.substring(a.lastIndexOf("html")+5,a.length); + return("file:///"+b); + } + else return(URL); +} + +function GetLanguage() +{ + var langauge; + if(navigator.userAgent.indexOf("Firefox")!=-1) + { + var index = navigator.userAgent.indexOf('('); + var string = navigator.userAgent.substring(navigator.userAgent.indexOf('('), navigator.userAgent.length); + var splitString = string.split(';'); + language = splitString[3].substring(1, splitString[3].length); + } + else language = navigator.systemLanguage; + return(language); +} + + +//---Gets topic rating.--- +function GetRating() +{ + + sRating = "0"; + for(var x = 0;x < 5;x++) + { + if(document.formRating) { + if(document.formRating.fbRating[x].checked) {sRating = x + 1;}} + else return sRating; + } + return sRating; +} + +function SubmitFeedback(alias, product, deliverable, productVersion, documentationVersion, defaultBody) +{ + var subject = title + + " (" + + "/1:" + + product + + "/2:" + + productVersion + + "/3:" + + documentationVersion + + "/4:" + + DeliverableValue(deliverable) + + "/5:" + + URLValue() + + "/6:" + + GetRating() + + "/7:" + + DeliveryType() + + "/8:" + + GetLanguage() + + "/9:" + + version + + ")"; + + location.href = "mailto:" + alias + "?subject=" + subject + + "&body=" + defaultBody; +} + +function AltFeedback(src, title) { + src.title=title; + return; + } diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js index 91aa6df..26bb631 100644 --- a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js +++ b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js @@ -1,1150 +1,1150 @@ -window.onload=LoadPage;
-window.onunload=Window_Unload;
-//window.onresize=ResizeWindow;
-window.onbeforeprint = set_to_print;
-window.onafterprint = reset_form;
-
-var scrollPos = 0;
-
-var inheritedMembers;
-var protectedMembers;
-var netcfMembersOnly;
-var netXnaMembersOnly;
-
-// Initialize array of section states
-
-var sectionStates = new Array();
-var sectionStatesInitialized = false;
-
-//Hide sample source in select element
-function HideSelect()
-{
- var selectTags = document.getElementsByTagName("SELECT");
- var spanEles = document.getElementsByTagName("span");
- var i = 10;
- var m;
-
- if (selectTags.length != null || selectTags.length >0)
- {
- for (n=0; n<selectTags.length; n++)
- {
- var lan = selectTags(n).getAttribute("id").substr("10");
- //hide the first select that is on
- switch (lan.toLowerCase())
- {
- case "visualbasic":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasic" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- case "visualbasicdeclaration":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicDeclaration" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "visualbasicusage":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicUsage" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- case "csharp":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "CSharp" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "managedcplusplus":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "ManagedCPlusPlus" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "jsharp":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "JSharp" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "jscript":
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "JScript" && spanEles[m].style.display != "none" && n < i)
- i = n;
- }
- break;
- case "xaml":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "XAML" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- case "javascript":
- //alert(lan);
- for (m=0; m<spanEles.length; m++)
- {
- if (spanEles[m].getAttribute("codeLanguage") == "JavaScript" && spanEles[m].style.display != "none" && n <i)
- i = n;
- }
- break;
- }
- }
- if (i != 10)
- selectTags(i).style.visibility = "hidden";
- }
- else{ alert("Not found!");}
-}
-
-function UnHideSelect()
-{
- var selectTags = document.getElementsByTagName("SELECT");
- var n;
-
- //un-hide all the select sections
- if (selectTags.length != null || selectTags.length >0)
- {
- for (n=0; n<selectTags.length; n++)
- selectTags(n).style.visibility = "visible";
- }
-}
-
-function InitSectionStates()
-{
- sectionStatesInitialized = true;
- if (globals == null) globals = GetGlobals();
- // SectionStates has the format:
- //
- // firstSectionId:state;secondSectionId:state;thirdSectionId:state; ... ;lastSectionId:state
- //
- // where state is either "e" (expanded) or "c" (collapsed)
-
- // get the SectionStates from the previous topics
- var states = Load("SectionStates");
-
- var start = 0;
- var end;
- var section;
- var state;
- var allCollapsed = false;
- // copy the previous section states to the sectionStates array for the current page
- if (states != null && states != "")
- {
- allCollapsed = true;
- while (start < states.length)
- {
- end = states.indexOf(":", start);
-
- section = states.substring(start, end);
-
- start = end + 1;
- end = states.indexOf(";", start);
- if (end == -1) end = states.length;
- state = states.substring(start, end);
- sectionStates[section] = state;
- allCollapsed = allCollapsed && (state == "c");
- start = end + 1;
- }
- }
-
- // now set the state for any section ids in the current document that weren't in previous
- var imgElements = document.getElementsByName("toggleSwitch");
- var i;
- for (i = 0; i < imgElements.length; ++i)
- sectionStates[imgElements[i].id] = GetInitialSectionState(imgElements[i].id, allCollapsed);
-}
-
-function GetInitialSectionState(itemId, allCollapsed)
-{
- // if the global state is "allCollapsed", set all section states to collapsed
- if (allCollapsed) return "c";
-
- // generic <section> node ids begin with "sectionToggle", so the same id can refer to different sections in different topics
- // we don't want to persist their state; set it to expanded
- if (itemId.indexOf("sectionToggle", 0) == 0) return "e";
-
- // the default state for new section ids is expanded
- if (sectionStates[itemId] == null) return "e";
-
- // otherwise, persist the passed in state
- return sectionStates[itemId];
-}
-
-var noReentry = false;
-
-function OnLoadImage(eventObj)
-{
- if (noReentry) return;
-
- if (!sectionStatesInitialized)
- InitSectionStates();
-
- var elem;
- if(document.all) elem = eventObj.srcElement;
- else elem = eventObj.target;
-
- if ((sectionStates[elem.id] == "e"))
- ExpandSection(elem);
- else
- CollapseSection(elem);
-}
-
-/*
-**********
-********** Begin
-**********
-*/
-
-var docSettings;
-
-function LoadPage()
-{
- // If not initialized, grab the DTE.Globals object
- if (globals == null)
- globals = GetGlobals();
-
- // docSettings has settings for the current document,
- // which include persistent and non-persistent keys for checkbox filters and expand/collapse section states
- // persistKeys is an array of the checkbox ids to persist
- if (docSettings == null)
- {
- docSettings = new Array();
- persistKeys = new Array();
- }
-
- if (!sectionStatesInitialized)
- InitSectionStates();
-
- var imgElements = document.getElementsByName("toggleSwitch");
-
- for (i = 0; i < imgElements.length; i++)
- {
- if ((sectionStates[imgElements[i].id] == "e"))
- ExpandSection(imgElements[i]);
- else
- CollapseSection(imgElements[i]);
- }
-
- SetCollapseAll();
-
- // split screen
- var screen = new SplitScreen('header', 'mainSection');
-
- // init devlang filter checkboxes
- SetupDevlangsFilter();
-
- // init memberlist filter checkboxes for protected, inherited, etc
- SetupMemberOptionsFilter();
-
- // init memberlist platforms filter checkboxes, e.g. .Net Framework, CompactFramework, XNA, Silverlight, etc.
- SetupMemberFrameworksFilter();
-
- var mainSection = document.getElementById("mainSection");
-
- // vs70.js did this to allow up/down arrow scrolling, I think
- try { mainSection.setActive(); } catch(e) { }
-
- //set the scroll position
- try{mainSection.scrollTop = scrollPos;}
- catch(e){}
-}
-
-function Window_Unload()
-{
- // for each key in persistArray, write the key/value pair to globals
- for (var i = 0; i < persistKeys.length; i++)
- Save(persistKeys[i],docSettings[persistKeys[i]]);
-
- // save the expand/collapse section states
- SaveSections();
-}
-
-function set_to_print()
-{
- //breaks out of divs to print
- var i;
-
- if (window.text)document.all.text.style.height = "auto";
-
- for (i=0; i < document.all.length; i++)
- {
- if (document.all[i].tagName == "body")
- {
- document.all[i].scroll = "yes";
- }
- if (document.all[i].id == "header")
- {
- document.all[i].style.margin = "0px 0px 0px 0px";
- document.all[i].style.width = "100%";
- }
- if (document.all[i].id == "mainSection")
- {
- document.all[i].style.overflow = "visible";
- document.all[i].style.top = "5px";
- document.all[i].style.width = "100%";
- document.all[i].style.padding = "0px 10px 0px 30px";
- }
- }
-}
-
-function reset_form()
-{
- //returns to the div nonscrolling region after print
- document.location.reload();
-}
-
-/*
-**********
-********** End
-**********
-*/
-
-
-/*
-**********
-********** Begin Language Filtering
-**********
-*/
-
-var devlangsMenu;
-var devlangsDropdown;
-var memberOptionsMenu;
-var memberOptionsDropdown;
-var memberFrameworksMenu;
-var memberFrameworksDropdown;
-var dropdowns = new Array();
-
-// initialize the devlang filter dropdown menu
-function SetupDevlangsFilter()
-{
- var divNode = document.getElementById('devlangsMenu');
- if (divNode == null)
- return;
-
- var checkboxNodes = divNode.getElementsByTagName("input");
-
- if (checkboxNodes.length == 1)
- {
- // only one checkbox, so we don't need a menu
- // get the devlang and use it to display the correct devlang spans
- // a one-checkbox setting like this is NOT persisted, nor is it set from the persisted globals
- var checkboxData = checkboxNodes[0].getAttribute('data');
- var dataSplits = checkboxData.split(',');
- var devlang = "";
- if (dataSplits.length > 1)
- devlang = dataSplits[1];
- styleSheetHandler(devlang);
- }
- else
- {
- // setup the dropdown menu
- devlangsMenu = new CheckboxMenu("devlangsMenu", docSettings, persistKeys, globals);
- devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu');
- dropdowns.push(devlangsDropdown);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(devlangsMenu, devlangsDropdown);
-
- // toggle the document's display docSettings
- codeBlockHandler();
- styleSheetHandler("");
- }
-}
-
-
-// called onclick in a devlang filter checkbox
-// tasks to perform at this event are:
-// toggle the check state of the checkbox that was clicked
-// update the user's devlang preference, based on devlang checkbox states
-// update stylesheet based on user's devlang preference
-// show/hide snippets/syntax based on user's devlang preference
-//
-function SetLanguage(checkbox)
-{
- // toggle the check state of the checkbox that was clicked
- devlangsMenu.ToggleCheckState(checkbox.id);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(devlangsMenu, devlangsDropdown);
-
- // update the display of the document's items that are dependent on the devlang setting
- codeBlockHandler();
- styleSheetHandler("");
-
-}
-/*
-**********
-********** End Language Filtering
-**********
-*/
-
-
-/*
-**********
-********** Begin Members Options Filtering
-**********
-*/
-
-// initialize the memberlist dropdown menu for protected, inherited, etc
-function SetupMemberOptionsFilter()
-{
- if (document.getElementById('memberOptionsMenu') != null) {
- memberOptionsMenu = new CheckboxMenu("memberOptionsMenu", docSettings, persistKeys, globals);
- memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu');
- dropdowns.push(memberOptionsDropdown);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown);
-
- // show/hide memberlist rows based on the current docSettings
- memberlistHandler();
- }
-}
-
-function SetupMemberFrameworksFilter()
-{
- if (document.getElementById('memberFrameworksMenu') != null)
- {
- memberFrameworksMenu = new CheckboxMenu("memberFrameworksMenu", docSettings, persistKeys, globals);
- memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu');
- dropdowns.push(memberFrameworksDropdown);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown);
-
- // show/hide memberlist rows based on the current docSettings
- memberlistHandler();
- }
-}
-
-function SetMemberOptions(checkbox, groupName)
-{
- var checkboxGroup = new Array();
- if (groupName == "vis")
- {
- if (document.getElementById('PublicCheckbox') != null)
- checkboxGroup.push('PublicCheckbox');
- if (document.getElementById('ProtectedCheckbox') != null)
- checkboxGroup.push('ProtectedCheckbox');
- }
- else if (groupName == "decl")
- {
- if (document.getElementById('DeclaredCheckbox') != null)
- checkboxGroup.push('DeclaredCheckbox');
- if (document.getElementById('InheritedCheckbox') != null)
- checkboxGroup.push('InheritedCheckbox');
- }
-
- // toggle the check state of the checkbox that was clicked
- memberOptionsMenu.ToggleGroupCheckState(checkbox.id, checkboxGroup);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown);
-
- // update the display of the document's items that are dependent on the member options settings
- memberlistHandler();
-}
-
-function SetMemberFrameworks(checkbox)
-{
- // toggle the check state of the checkbox that was clicked
- memberFrameworksMenu.ToggleCheckState(checkbox.id);
-
- // update the label of the dropdown menu
- SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown);
-
- // update the display of the document's items that are dependent on the member platforms settings
- memberlistHandler();
-}
-
-function DisplayFilteredMembers()
-{
- var iAllMembers = document.getElementsByTagName("tr");
- var i;
-
- for(i = 0; i < iAllMembers.length; ++i)
- {
- if (((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) ||
- ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) ||
- ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on")))
- iAllMembers[i].style.display = "none";
- else
- iAllMembers[i].style.display = "";
- }
-
- // protected members are in separate collapseable sections in vs2005, so expand or collapse the sections
- ExpandCollapseProtectedMemberSections();
-}
-
-function ExpandCollapseProtectedMemberSections()
-{
- var imgElements = document.getElementsByName("toggleSwitch");
- var i;
- // Family
- for(i = 0; i < imgElements.length; ++i)
- {
- if(imgElements[i].id.indexOf("protected", 0) == 0)
- {
- if ((sectionStates[imgElements[i].id] == "e" && protectedMembers == "off") ||
- (sectionStates[imgElements[i].id] == "c" && protectedMembers == "on"))
- {
- ExpandCollapse(imgElements[i]);
- }
- }
- }
-}
-
-/*
-**********
-********** End Members Options Filtering
-**********
-*/
-
-
-/*
-**********
-********** Begin Expand/Collapse
-**********
-*/
-
-// expand or collapse a section
-function ExpandCollapse(imageItem)
-{
- if (sectionStates[imageItem.id] == "e")
- CollapseSection(imageItem);
- else
- ExpandSection(imageItem);
-
- SetCollapseAll();
-}
-
-// expand or collapse all sections
-function ExpandCollapseAll(imageItem)
-{
- var collapseAllImage = document.getElementById("collapseAllImage");
- var expandAllImage = document.getElementById("expandAllImage");
- if (imageItem == null || collapseAllImage == null || expandAllImage == null) return;
- noReentry = true; // Prevent entry to OnLoadImage
-
- var imgElements = document.getElementsByName("toggleSwitch");
- var i;
- var collapseAll = (imageItem.src == collapseAllImage.src);
- if (collapseAll)
- {
- imageItem.src = expandAllImage.src;
- imageItem.alt = expandAllImage.alt;
-
- for (i = 0; i < imgElements.length; ++i)
- {
- CollapseSection(imgElements[i]);
- }
- }
- else
- {
- imageItem.src = collapseAllImage.src;
- imageItem.alt = collapseAllImage.alt;
-
- for (i = 0; i < imgElements.length; ++i)
- {
- ExpandSection(imgElements[i]);
- }
- }
- SetAllSectionStates(collapseAll);
- SetToggleAllLabel(collapseAll);
-
- noReentry = false;
-}
-
-function ExpandCollapse_CheckKey(imageItem, eventObj)
-{
- if(eventObj.keyCode == 13)
- ExpandCollapse(imageItem);
-}
-
-function ExpandCollapseAll_CheckKey(imageItem, eventObj)
-{
- if(eventObj.keyCode == 13)
- ExpandCollapseAll(imageItem);
-}
-
-function SetAllSectionStates(collapsed)
-{
- for (var sectionId in sectionStates)
- sectionStates[sectionId] = (collapsed) ? "c" : "e";
-}
-
-function ExpandSection(imageItem)
-{
- noReentry = true; // Prevent re-entry to OnLoadImage
- try
- {
- var collapseImage = document.getElementById("collapseImage");
- imageItem.src = collapseImage.src;
- imageItem.alt = collapseImage.alt;
-
- imageItem.parentNode.parentNode.nextSibling.style.display = "";
- sectionStates[imageItem.id] = "e";
- }
- catch (e)
- {
- }
- noReentry = false;
-}
-
-function CollapseSection(imageItem)
-{
- noReentry = true; // Prevent re-entry to OnLoadImage
- var expandImage = document.getElementById("expandImage");
- imageItem.src = expandImage.src;
- imageItem.alt = expandImage.alt;
- imageItem.parentNode.parentNode.nextSibling.style.display = "none";
- sectionStates[imageItem.id] = "c";
- noReentry = false;
-}
-
-function AllCollapsed()
-{
- var imgElements = document.getElementsByName("toggleSwitch");
- var allCollapsed = true;
- var i;
-
- for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c");
-
- return allCollapsed;
-}
-
-function SetCollapseAll()
-{
- var imageElement = document.getElementById("toggleAllImage");
- if (imageElement == null) return;
-
- var allCollapsed = AllCollapsed();
- if (allCollapsed)
- {
- var expandAllImage = document.getElementById("expandAllImage");
- if (expandAllImage == null) return;
- imageElement.src = expandAllImage.src;
- imageElement.alt = expandAllImage.alt;
- }
- else
- {
- var collapseAllImage = document.getElementById("collapseAllImage");
- if (collapseAllImage == null) return;
- imageElement.src = collapseAllImage.src;
- imageElement.alt = collapseAllImage.alt;
- }
-
- SetToggleAllLabel(allCollapsed);
-}
-
-function SetToggleAllLabel(allCollapsed)
-{
- var collapseLabelElement = document.getElementById("collapseAllLabel");
- var expandLabelElement = document.getElementById("expandAllLabel");
-
- if (collapseLabelElement == null || expandLabelElement == null) return;
-
- if (allCollapsed)
- {
- collapseLabelElement.style.display = "none";
- expandLabelElement.style.display = "inline";
- }
- else
- {
- collapseLabelElement.style.display = "inline";
- expandLabelElement.style.display = "none";
- }
-}
-
-function SaveSections()
-{
- try
- {
- var states = "";
-
- for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";";
-
- Save("SectionStates", states.substring(0, states.length - 1));
- }
- catch (e)
- {
- }
-
-}
-
-function OpenSection(imageItem)
-{
- if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem);
-}
-
-/*
-**********
-********** End Expand/Collapse
-**********
-*/
-
-
-
-/*
-**********
-********** Begin Copy Code
-**********
-*/
-
-function CopyCode(key)
-{
- var trElements = document.getElementsByTagName("tr");
- var i;
- for(i = 0; i < trElements.length; ++i)
- {
- if(key.parentNode.parentNode.parentNode == trElements[i].parentNode)
- {
- if (window.clipboardData)
- {
- // the IE-manner
- window.clipboardData.setData("Text", trElements[i].innerText);
- }
- else if (window.netscape)
- {
- // Gives unrestricted access to browser APIs using XPConnect
- try
- {
- netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
- }
- catch(e)
- {
- alert("Universal Connect was refused, cannot copy to " +
- "clipboard. Go to about:config and set " +
- "signed.applets.codebase_principal_support to true to " +
- "enable clipboard support.");
- return;
- }
-
- // Creates an instance of nsIClipboard
- var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
- if (!clip) return;
-
- // Creates an instance of nsITransferable
- var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
- if (!trans) return;
-
- // register the data flavor
- trans.addDataFlavor('text/unicode');
-
- // Create object to hold the data
- var str = new Object();
-
- // Creates an instance of nsISupportsString
- var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
-
- //Assigns the data to be copied
- var copytext = trElements[i].textContent;
- str.data = copytext;
-
- // Add data objects to transferable
- trans.setTransferData("text/unicode",str,copytext.length*2);
- var clipid = Components.interfaces.nsIClipboard;
- if (!clip) return false;
-
- // Transfer the data to clipboard
- clip.setData(trans,null,clipid.kGlobalClipboard);
- }
- }
- }
-}
-
-function ChangeCopyCodeIcon(key)
-{
- var i;
- var imageElements = document.getElementsByName("ccImage")
- for(i=0; i<imageElements.length; ++i)
- {
- if(imageElements[i].parentNode == key)
- {
- if(imageElements[i].src == copyImage.src)
- {
- imageElements[i].src = copyHoverImage.src;
- imageElements[i].alt = copyHoverImage.alt;
- key.className = 'copyCodeOnHover';
- }
- else
- {
- imageElements[i].src = copyImage.src;
- imageElements[i].alt = copyImage.alt;
- key.className = 'copyCode';
- }
- }
- }
-}
-
-function CopyCode_CheckKey(key, eventObj)
-{
- if(eventObj.keyCode == 13)
- CopyCode(key);
-}
-
-/*
-**********
-********** End Copy Code
-**********
-*/
-
-
-/*
-**********
-********** Begin Maintain Scroll Position
-**********
-*/
-
-function loadAll(){
- try
- {
- scrollPos = allHistory.getAttribute("Scroll");
- }
- catch(e){}
-}
-
-function saveAll(){
- try
- {
- allHistory.setAttribute("Scroll", mainSection.scrollTop);
- }
- catch(e){}
-}
-
-/*
-**********
-********** End Maintain Scroll Position
-**********
-*/
-
-
-/*
-**********
-********** Begin Send Mail
-**********
-*/
-
-function formatMailToLink(anchor)
-{
- var release = "Release: " + anchor.doc_Release;
- var topicId = "Topic ID: " + anchor.doc_TopicID;
- var topicTitle = "Topic Title: " + anchor.doc_TopicTitle;
- var url = "URL: " + document.URL;
- var browser = "Browser: " + window.navigator.userAgent;
-
- var crlf = "%0d%0a";
- var body = release + crlf + topicId + crlf + topicTitle + crlf + url + crlf + browser + crlf + crlf + "Comments:" + crlf + crlf;
-
- anchor.href = anchor.href + "&body=" + body;
-}
-
-/*
-**********
-********** End Send Mail
-**********
-*/
-
-
-/*
-**********
-********** Begin Persistence
-**********
-*/
-
-var globals;
-
-// get global vars from persistent store
-function GetGlobals()
-{
- var tmp;
-
- // Try to get VS implementation
- try { tmp = window.external.Globals; }
- catch (e) { tmp = null; }
-
- // Try to get DExplore implementation
- try { if (tmp == null) tmp = window.external.GetObject("DTE", "").Globals; }
- catch (e) { tmp = null; }
-
- return tmp;
-}
-
-function Load(key)
-{
- try
- {
- return globals.VariableExists(key) ? globals.VariableValue(key) : null;
- }
- catch (e)
- {
- return null;
- }
-}
-
-function Save(key, value)
-{
- try
- {
- globals.VariableValue(key) = value;
- globals.VariablePersists(key) = true;
- }
- catch (e)
- {
- }
-}
-
-/*
-**********
-********** End Persistence
-**********
-*/
-
-/* This is the part for Glossary popups */
-// The method is called when the user positions the mouse cursor over a glossary term in a document.
-// Current implementation assumes the existence of an associative array (g_glossary).
-// The keys of the array correspond to the argument passed to this function.
-
-var bGlossary=true;
-var oDialog;
-var oTimeout="";
-var oTimein="";
-var iTimein=.5;
-var iTimeout=30;
-var oLastNode;
-var oNode;
-var bInit=false;
-var aTerms=new Array();
-
-// Called from mouseover and when the contextmenu behavior fires oncontextopen.
-function clearDef(eventObj){
- if(eventObj){
- var elem;
- if(document.all) elem = eventObj.toElement;
- else elem = eventObj.relatedTarget;
- if(elem!=null || elem!="undefined"){
- if(typeof(oTimein)=="number"){
- window.clearTimeout(oTimein);
- }
- if(oDialog.dlg_status==true){
- hideDef();
- }
- }
- }
-}
-function hideDef(eventObj){
- window.clearTimeout(oTimeout);
- oTimeout="";
- oDialog.style.display="none";
- oDialog.dlg_status=false;
-}
-function showDef(oSource){
- if(bInit==false){
- glossaryInit();
- bInit=true;
- }
- if(bGlossary==true){
- if(typeof(arguments[0])=="object"){
- oNode=oSource;
- }
- else{
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
- }
- var bStatus=oDialog.dlg_status; // BUGBUG: oDialog is null.
- if((oLastNode!=oNode)||(bStatus==false)){
- if((typeof(oTimein)=="number")&& eventObj){
-
- var elem;
- if(document.all) elem = eventObj.fromElement;
- else elem = eventObj.relatedTarget;
-
- if( elem != null || elem != "undefined")
- window.clearTimeout(oTimein);
- }
- oTimein=window.setTimeout("openDialog(oNode)",iTimein*1000);
- }
- }
-}
-
-
-
-function glossaryInit(){
- oDialog=fnCreateDialog(150,50);
-}
-
-function navigateTerm(eventObj){
- var oNode;
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
-
- var iTermID=oNode.termID;
- if(oNode!=aTerms[iTermID]){
- var iAbsTop=getAbsoluteTop(aTerms[iTermID]);
- if(iAbsTop<document.body.scrollTop){
- window.scrollTo(document.body.scrollLeft,getAbsoluteTop(aTerms[iTermID]));
- }
- openDialog(aTerms[iTermID]);
- }
-}
-function disableGlossary(eventObj){
- if(bGlossary==true){
- if(document.all) eventObj.srcElement.innerText="Enable Automatic Glossary";
- else eventObj.target.innerText="Enable Automatic Glossary";
- bGlossary=false;
- hideDef();
- }
- else{
- if(document.all) eventObj.srcElement.innerText="Disable Automatic Glossary";
- else eventObj.target.innerText="Disable Automatic Glossary";
- bGlossary=true;
- }
-}
-function openGlossary(){
-
-}
-function fnSetMenus(eventObj){
- var oNode;
- if(document.all) oNode = eventObj.srcElement;
- else oNode = eventObj.target;
-
- var oMenu=oNode.createMenu("SPAN","G_RID");
- var oSubItem1=oNode.createMenuItem("Glossary",fnStub,oMenu,true);
- document.body.createMenuItem("Open External Glossary",openGlossary,oSubItem1.subMenu);
- document.body.createMenuItem("Disable Automatic Glossary",disableGlossary,oSubItem1.subMenu);
- for(var i=0;i<aTerms.length;i++){
- var oItem=document.body.createMenuItem(aTerms[i].innerText,navigateTerm,oMenu);
- oItem.termID=i;
- }
-}
-// This is a bogus stub. It should be sniffed out rather than added in.
-function fnStub(){
-
-}
-function fnAttachMenus(aTips){
- // This walk is only necessary for the context menu.
- var aTips=document.getElementsByTagName("SPAN");
- for(var i=0;i<aTips.length;i++){
- var oNode=aTips[i];
- if(oNode.getAttribute("G_RID")){
- var sTerm=oNode.getAttribute("G_RID");
- if(typeof(g_glossary[sTerm])=="string"){
- // Removed client-side scripting to add events. This entire process should be singled out for IE 5 and later .. and, its only for the context menu.
- aTerms[aTerms.length]=oNode;
- }
- }
- }
- if(oBD.majorVer>=5){
- document.body.addBehavior(gsContextMenuPath);
- document.body.onbehaviorready="fnSetMenus()";
- document.body.oncontextopen="clearDef()";
- }
-
-}
-// Called by showDef. The showDef function sniffs for initialization.
-function openDialog(oNode,x,y){
- var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized
- if(bStatus==false){
- oDialog.dlg_status=true;
- oDialog.style.display="block";
- }
- else{
- if(typeof(oTimeout)=="number"){
- window.clearTimeout(oTimeout);
- }
- }
-
- var sTerm=oNode.getAttribute("G_RID");
- var oDef=oNode.children(0);
- var sDef=oDef.text;
- sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition.
- oDialog.innerHTML=sDef
-
-
- //oDialog.innerHTML=g_glossary[sTerm];
-
- var iScrollLeft=document.body.scrollLeft;
- var iScrollTop=document.body.scrollTop;
- var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft;
- var iOffsetWidth=oNode.offsetWidth;
- var oParent=oNode.parentNode;
- var iOffsetParentLeft=getAbsoluteLeft(oParent);
- var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop;
- var iOffsetDialogWidth=oDialog.offsetWidth;
-
-
- if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){
- iOffsetLeft=iOffsetParentLeft;
- if(iOffsetLeft - iOffsetDialogWidth>0){
- iOffsetTop+=oNode.offsetHeight;
- }
- }
- var iLeft=0;
- var iTop=0;
- if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){
- iLeft=iOffsetLeft + iOffsetWidth;
- }
- else{
- if(iOffsetLeft - iOffsetDialogWidth>0){
- iLeft=iOffsetLeft - iOffsetDialogWidth;
- }
- else{
- iLeft=iOffsetParentLeft;
- }
- }
- if(iOffsetTop - iScrollTop<oDialog.offsetHeight){
- iTop=iOffsetTop + oNode.offsetHeight;
- }
- else{
- iTop=iOffsetTop - oDialog.offsetHeight;
- }
- oDialog.style.top=iTop;
- oDialog.style.left=iLeft;
- oTimeout=window.setTimeout("hideDef()",iTimeout*1000);
-}
-function getAbsoluteTop(oNode){
- var oCurrentNode=oNode;
- var iTop=0;
- while(oCurrentNode.tagName!="BODY"){
- iTop+=oCurrentNode.offsetTop;
- oCurrentNode=oCurrentNode.offsetParent;
- }
- return iTop;
-}
-function getAbsoluteLeft(oNode){
- var oCurrentNode=oNode;
- var iLeft=0;
- while(oCurrentNode.tagName!="BODY"){
- iLeft+=oCurrentNode.offsetLeft;
- oCurrentNode=oCurrentNode.offsetParent;
- }
- return iLeft;
-}
-function fnCreateDialog(iWidth,iHeight){
- document.body.insertAdjacentHTML("BeforeEnd","<DIV></DIV>");
- oNewDialog=document.body.children(document.body.children.length-1);
- oNewDialog.className="clsTooltip";
- oNewDialog.style.width=iWidth;
- oNewDialog.dlg_status=false;
- return oNewDialog;
-}
-
-function sendfeedback(subject, id,alias){
- var rExp = /\"/gi;
- var url = location.href;
- // Need to replace the double quotes with single quotes for the mailto to work.
- var rExpSingleQuotes = /\'\'"/gi;
- var title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''");
- location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20";
-}
+window.onload=LoadPage; +window.onunload=Window_Unload; +//window.onresize=ResizeWindow; +window.onbeforeprint = set_to_print; +window.onafterprint = reset_form; + +var scrollPos = 0; + +var inheritedMembers; +var protectedMembers; +var netcfMembersOnly; +var netXnaMembersOnly; + +// Initialize array of section states + +var sectionStates = new Array(); +var sectionStatesInitialized = false; + +//Hide sample source in select element +function HideSelect() +{ + var selectTags = document.getElementsByTagName("SELECT"); + var spanEles = document.getElementsByTagName("span"); + var i = 10; + var m; + + if (selectTags.length != null || selectTags.length >0) + { + for (n=0; n<selectTags.length; n++) + { + var lan = selectTags(n).getAttribute("id").substr("10"); + //hide the first select that is on + switch (lan.toLowerCase()) + { + case "visualbasic": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasic" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + case "visualbasicdeclaration": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicDeclaration" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "visualbasicusage": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "VisualBasicUsage" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + case "csharp": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "CSharp" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "managedcplusplus": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "ManagedCPlusPlus" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "jsharp": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "JSharp" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "jscript": + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "JScript" && spanEles[m].style.display != "none" && n < i) + i = n; + } + break; + case "xaml": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "XAML" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + case "javascript": + //alert(lan); + for (m=0; m<spanEles.length; m++) + { + if (spanEles[m].getAttribute("codeLanguage") == "JavaScript" && spanEles[m].style.display != "none" && n <i) + i = n; + } + break; + } + } + if (i != 10) + selectTags(i).style.visibility = "hidden"; + } + else{ alert("Not found!");} +} + +function UnHideSelect() +{ + var selectTags = document.getElementsByTagName("SELECT"); + var n; + + //un-hide all the select sections + if (selectTags.length != null || selectTags.length >0) + { + for (n=0; n<selectTags.length; n++) + selectTags(n).style.visibility = "visible"; + } +} + +function InitSectionStates() +{ + sectionStatesInitialized = true; + if (globals == null) globals = GetGlobals(); + // SectionStates has the format: + // + // firstSectionId:state;secondSectionId:state;thirdSectionId:state; ... ;lastSectionId:state + // + // where state is either "e" (expanded) or "c" (collapsed) + + // get the SectionStates from the previous topics + var states = Load("SectionStates"); + + var start = 0; + var end; + var section; + var state; + var allCollapsed = false; + // copy the previous section states to the sectionStates array for the current page + if (states != null && states != "") + { + allCollapsed = true; + while (start < states.length) + { + end = states.indexOf(":", start); + + section = states.substring(start, end); + + start = end + 1; + end = states.indexOf(";", start); + if (end == -1) end = states.length; + state = states.substring(start, end); + sectionStates[section] = state; + allCollapsed = allCollapsed && (state == "c"); + start = end + 1; + } + } + + // now set the state for any section ids in the current document that weren't in previous + var imgElements = document.getElementsByName("toggleSwitch"); + var i; + for (i = 0; i < imgElements.length; ++i) + sectionStates[imgElements[i].id] = GetInitialSectionState(imgElements[i].id, allCollapsed); +} + +function GetInitialSectionState(itemId, allCollapsed) +{ + // if the global state is "allCollapsed", set all section states to collapsed + if (allCollapsed) return "c"; + + // generic <section> node ids begin with "sectionToggle", so the same id can refer to different sections in different topics + // we don't want to persist their state; set it to expanded + if (itemId.indexOf("sectionToggle", 0) == 0) return "e"; + + // the default state for new section ids is expanded + if (sectionStates[itemId] == null) return "e"; + + // otherwise, persist the passed in state + return sectionStates[itemId]; +} + +var noReentry = false; + +function OnLoadImage(eventObj) +{ + if (noReentry) return; + + if (!sectionStatesInitialized) + InitSectionStates(); + + var elem; + if(document.all) elem = eventObj.srcElement; + else elem = eventObj.target; + + if ((sectionStates[elem.id] == "e")) + ExpandSection(elem); + else + CollapseSection(elem); +} + +/* +********** +********** Begin +********** +*/ + +var docSettings; + +function LoadPage() +{ + // If not initialized, grab the DTE.Globals object + if (globals == null) + globals = GetGlobals(); + + // docSettings has settings for the current document, + // which include persistent and non-persistent keys for checkbox filters and expand/collapse section states + // persistKeys is an array of the checkbox ids to persist + if (docSettings == null) + { + docSettings = new Array(); + persistKeys = new Array(); + } + + if (!sectionStatesInitialized) + InitSectionStates(); + + var imgElements = document.getElementsByName("toggleSwitch"); + + for (i = 0; i < imgElements.length; i++) + { + if ((sectionStates[imgElements[i].id] == "e")) + ExpandSection(imgElements[i]); + else + CollapseSection(imgElements[i]); + } + + SetCollapseAll(); + + // split screen + var screen = new SplitScreen('header', 'mainSection'); + + // init devlang filter checkboxes + SetupDevlangsFilter(); + + // init memberlist filter checkboxes for protected, inherited, etc + SetupMemberOptionsFilter(); + + // init memberlist platforms filter checkboxes, e.g. .Net Framework, CompactFramework, XNA, Silverlight, etc. + SetupMemberFrameworksFilter(); + + var mainSection = document.getElementById("mainSection"); + + // vs70.js did this to allow up/down arrow scrolling, I think + try { mainSection.setActive(); } catch(e) { } + + //set the scroll position + try{mainSection.scrollTop = scrollPos;} + catch(e){} +} + +function Window_Unload() +{ + // for each key in persistArray, write the key/value pair to globals + for (var i = 0; i < persistKeys.length; i++) + Save(persistKeys[i],docSettings[persistKeys[i]]); + + // save the expand/collapse section states + SaveSections(); +} + +function set_to_print() +{ + //breaks out of divs to print + var i; + + if (window.text)document.all.text.style.height = "auto"; + + for (i=0; i < document.all.length; i++) + { + if (document.all[i].tagName == "body") + { + document.all[i].scroll = "yes"; + } + if (document.all[i].id == "header") + { + document.all[i].style.margin = "0px 0px 0px 0px"; + document.all[i].style.width = "100%"; + } + if (document.all[i].id == "mainSection") + { + document.all[i].style.overflow = "visible"; + document.all[i].style.top = "5px"; + document.all[i].style.width = "100%"; + document.all[i].style.padding = "0px 10px 0px 30px"; + } + } +} + +function reset_form() +{ + //returns to the div nonscrolling region after print + document.location.reload(); +} + +/* +********** +********** End +********** +*/ + + +/* +********** +********** Begin Language Filtering +********** +*/ + +var devlangsMenu; +var devlangsDropdown; +var memberOptionsMenu; +var memberOptionsDropdown; +var memberFrameworksMenu; +var memberFrameworksDropdown; +var dropdowns = new Array(); + +// initialize the devlang filter dropdown menu +function SetupDevlangsFilter() +{ + var divNode = document.getElementById('devlangsMenu'); + if (divNode == null) + return; + + var checkboxNodes = divNode.getElementsByTagName("input"); + + if (checkboxNodes.length == 1) + { + // only one checkbox, so we don't need a menu + // get the devlang and use it to display the correct devlang spans + // a one-checkbox setting like this is NOT persisted, nor is it set from the persisted globals + var checkboxData = checkboxNodes[0].getAttribute('data'); + var dataSplits = checkboxData.split(','); + var devlang = ""; + if (dataSplits.length > 1) + devlang = dataSplits[1]; + styleSheetHandler(devlang); + } + else + { + // setup the dropdown menu + devlangsMenu = new CheckboxMenu("devlangsMenu", docSettings, persistKeys, globals); + devlangsDropdown = new Dropdown('devlangsDropdown', 'devlangsMenu'); + dropdowns.push(devlangsDropdown); + + // update the label of the dropdown menu + SetDropdownMenuLabel(devlangsMenu, devlangsDropdown); + + // toggle the document's display docSettings + codeBlockHandler(); + styleSheetHandler(""); + } +} + + +// called onclick in a devlang filter checkbox +// tasks to perform at this event are: +// toggle the check state of the checkbox that was clicked +// update the user's devlang preference, based on devlang checkbox states +// update stylesheet based on user's devlang preference +// show/hide snippets/syntax based on user's devlang preference +// +function SetLanguage(checkbox) +{ + // toggle the check state of the checkbox that was clicked + devlangsMenu.ToggleCheckState(checkbox.id); + + // update the label of the dropdown menu + SetDropdownMenuLabel(devlangsMenu, devlangsDropdown); + + // update the display of the document's items that are dependent on the devlang setting + codeBlockHandler(); + styleSheetHandler(""); + +} +/* +********** +********** End Language Filtering +********** +*/ + + +/* +********** +********** Begin Members Options Filtering +********** +*/ + +// initialize the memberlist dropdown menu for protected, inherited, etc +function SetupMemberOptionsFilter() +{ + if (document.getElementById('memberOptionsMenu') != null) { + memberOptionsMenu = new CheckboxMenu("memberOptionsMenu", docSettings, persistKeys, globals); + memberOptionsDropdown = new Dropdown('memberOptionsDropdown', 'memberOptionsMenu'); + dropdowns.push(memberOptionsDropdown); + + // update the label of the dropdown menu + SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown); + + // show/hide memberlist rows based on the current docSettings + memberlistHandler(); + } +} + +function SetupMemberFrameworksFilter() +{ + if (document.getElementById('memberFrameworksMenu') != null) + { + memberFrameworksMenu = new CheckboxMenu("memberFrameworksMenu", docSettings, persistKeys, globals); + memberFrameworksDropdown = new Dropdown('memberFrameworksDropdown', 'memberFrameworksMenu'); + dropdowns.push(memberFrameworksDropdown); + + // update the label of the dropdown menu + SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown); + + // show/hide memberlist rows based on the current docSettings + memberlistHandler(); + } +} + +function SetMemberOptions(checkbox, groupName) +{ + var checkboxGroup = new Array(); + if (groupName == "vis") + { + if (document.getElementById('PublicCheckbox') != null) + checkboxGroup.push('PublicCheckbox'); + if (document.getElementById('ProtectedCheckbox') != null) + checkboxGroup.push('ProtectedCheckbox'); + } + else if (groupName == "decl") + { + if (document.getElementById('DeclaredCheckbox') != null) + checkboxGroup.push('DeclaredCheckbox'); + if (document.getElementById('InheritedCheckbox') != null) + checkboxGroup.push('InheritedCheckbox'); + } + + // toggle the check state of the checkbox that was clicked + memberOptionsMenu.ToggleGroupCheckState(checkbox.id, checkboxGroup); + + // update the label of the dropdown menu + SetDropdownMenuLabel(memberOptionsMenu, memberOptionsDropdown); + + // update the display of the document's items that are dependent on the member options settings + memberlistHandler(); +} + +function SetMemberFrameworks(checkbox) +{ + // toggle the check state of the checkbox that was clicked + memberFrameworksMenu.ToggleCheckState(checkbox.id); + + // update the label of the dropdown menu + SetDropdownMenuLabel(memberFrameworksMenu, memberFrameworksDropdown); + + // update the display of the document's items that are dependent on the member platforms settings + memberlistHandler(); +} + +function DisplayFilteredMembers() +{ + var iAllMembers = document.getElementsByTagName("tr"); + var i; + + for(i = 0; i < iAllMembers.length; ++i) + { + if (((iAllMembers[i].notSupportedOnXna == "true") && (netXnaMembersOnly == "on")) || + ((iAllMembers[i].getAttribute("name") == "inheritedMember") && (inheritedMembers == "off")) || + ((iAllMembers[i].getAttribute("notSupportedOn") == "netcf") && (netcfMembersOnly == "on"))) + iAllMembers[i].style.display = "none"; + else + iAllMembers[i].style.display = ""; + } + + // protected members are in separate collapseable sections in vs2005, so expand or collapse the sections + ExpandCollapseProtectedMemberSections(); +} + +function ExpandCollapseProtectedMemberSections() +{ + var imgElements = document.getElementsByName("toggleSwitch"); + var i; + // Family + for(i = 0; i < imgElements.length; ++i) + { + if(imgElements[i].id.indexOf("protected", 0) == 0) + { + if ((sectionStates[imgElements[i].id] == "e" && protectedMembers == "off") || + (sectionStates[imgElements[i].id] == "c" && protectedMembers == "on")) + { + ExpandCollapse(imgElements[i]); + } + } + } +} + +/* +********** +********** End Members Options Filtering +********** +*/ + + +/* +********** +********** Begin Expand/Collapse +********** +*/ + +// expand or collapse a section +function ExpandCollapse(imageItem) +{ + if (sectionStates[imageItem.id] == "e") + CollapseSection(imageItem); + else + ExpandSection(imageItem); + + SetCollapseAll(); +} + +// expand or collapse all sections +function ExpandCollapseAll(imageItem) +{ + var collapseAllImage = document.getElementById("collapseAllImage"); + var expandAllImage = document.getElementById("expandAllImage"); + if (imageItem == null || collapseAllImage == null || expandAllImage == null) return; + noReentry = true; // Prevent entry to OnLoadImage + + var imgElements = document.getElementsByName("toggleSwitch"); + var i; + var collapseAll = (imageItem.src == collapseAllImage.src); + if (collapseAll) + { + imageItem.src = expandAllImage.src; + imageItem.alt = expandAllImage.alt; + + for (i = 0; i < imgElements.length; ++i) + { + CollapseSection(imgElements[i]); + } + } + else + { + imageItem.src = collapseAllImage.src; + imageItem.alt = collapseAllImage.alt; + + for (i = 0; i < imgElements.length; ++i) + { + ExpandSection(imgElements[i]); + } + } + SetAllSectionStates(collapseAll); + SetToggleAllLabel(collapseAll); + + noReentry = false; +} + +function ExpandCollapse_CheckKey(imageItem, eventObj) +{ + if(eventObj.keyCode == 13) + ExpandCollapse(imageItem); +} + +function ExpandCollapseAll_CheckKey(imageItem, eventObj) +{ + if(eventObj.keyCode == 13) + ExpandCollapseAll(imageItem); +} + +function SetAllSectionStates(collapsed) +{ + for (var sectionId in sectionStates) + sectionStates[sectionId] = (collapsed) ? "c" : "e"; +} + +function ExpandSection(imageItem) +{ + noReentry = true; // Prevent re-entry to OnLoadImage + try + { + var collapseImage = document.getElementById("collapseImage"); + imageItem.src = collapseImage.src; + imageItem.alt = collapseImage.alt; + + imageItem.parentNode.parentNode.nextSibling.style.display = ""; + sectionStates[imageItem.id] = "e"; + } + catch (e) + { + } + noReentry = false; +} + +function CollapseSection(imageItem) +{ + noReentry = true; // Prevent re-entry to OnLoadImage + var expandImage = document.getElementById("expandImage"); + imageItem.src = expandImage.src; + imageItem.alt = expandImage.alt; + imageItem.parentNode.parentNode.nextSibling.style.display = "none"; + sectionStates[imageItem.id] = "c"; + noReentry = false; +} + +function AllCollapsed() +{ + var imgElements = document.getElementsByName("toggleSwitch"); + var allCollapsed = true; + var i; + + for (i = 0; i < imgElements.length; i++) allCollapsed = allCollapsed && (sectionStates[imgElements[i].id] == "c"); + + return allCollapsed; +} + +function SetCollapseAll() +{ + var imageElement = document.getElementById("toggleAllImage"); + if (imageElement == null) return; + + var allCollapsed = AllCollapsed(); + if (allCollapsed) + { + var expandAllImage = document.getElementById("expandAllImage"); + if (expandAllImage == null) return; + imageElement.src = expandAllImage.src; + imageElement.alt = expandAllImage.alt; + } + else + { + var collapseAllImage = document.getElementById("collapseAllImage"); + if (collapseAllImage == null) return; + imageElement.src = collapseAllImage.src; + imageElement.alt = collapseAllImage.alt; + } + + SetToggleAllLabel(allCollapsed); +} + +function SetToggleAllLabel(allCollapsed) +{ + var collapseLabelElement = document.getElementById("collapseAllLabel"); + var expandLabelElement = document.getElementById("expandAllLabel"); + + if (collapseLabelElement == null || expandLabelElement == null) return; + + if (allCollapsed) + { + collapseLabelElement.style.display = "none"; + expandLabelElement.style.display = "inline"; + } + else + { + collapseLabelElement.style.display = "inline"; + expandLabelElement.style.display = "none"; + } +} + +function SaveSections() +{ + try + { + var states = ""; + + for (var sectionId in sectionStates) states += sectionId + ":" + sectionStates[sectionId] + ";"; + + Save("SectionStates", states.substring(0, states.length - 1)); + } + catch (e) + { + } + +} + +function OpenSection(imageItem) +{ + if (sectionStates[imageItem.id] == "c") ExpandCollapse(imageItem); +} + +/* +********** +********** End Expand/Collapse +********** +*/ + + + +/* +********** +********** Begin Copy Code +********** +*/ + +function CopyCode(key) +{ + var trElements = document.getElementsByTagName("tr"); + var i; + for(i = 0; i < trElements.length; ++i) + { + if(key.parentNode.parentNode.parentNode == trElements[i].parentNode) + { + if (window.clipboardData) + { + // the IE-manner + window.clipboardData.setData("Text", trElements[i].innerText); + } + else if (window.netscape) + { + // Gives unrestricted access to browser APIs using XPConnect + try + { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + } + catch(e) + { + alert("Universal Connect was refused, cannot copy to " + + "clipboard. Go to about:config and set " + + "signed.applets.codebase_principal_support to true to " + + "enable clipboard support."); + return; + } + + // Creates an instance of nsIClipboard + var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard); + if (!clip) return; + + // Creates an instance of nsITransferable + var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); + if (!trans) return; + + // register the data flavor + trans.addDataFlavor('text/unicode'); + + // Create object to hold the data + var str = new Object(); + + // Creates an instance of nsISupportsString + var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString); + + //Assigns the data to be copied + var copytext = trElements[i].textContent; + str.data = copytext; + + // Add data objects to transferable + trans.setTransferData("text/unicode",str,copytext.length*2); + var clipid = Components.interfaces.nsIClipboard; + if (!clip) return false; + + // Transfer the data to clipboard + clip.setData(trans,null,clipid.kGlobalClipboard); + } + } + } +} + +function ChangeCopyCodeIcon(key) +{ + var i; + var imageElements = document.getElementsByName("ccImage") + for(i=0; i<imageElements.length; ++i) + { + if(imageElements[i].parentNode == key) + { + if(imageElements[i].src == copyImage.src) + { + imageElements[i].src = copyHoverImage.src; + imageElements[i].alt = copyHoverImage.alt; + key.className = 'copyCodeOnHover'; + } + else + { + imageElements[i].src = copyImage.src; + imageElements[i].alt = copyImage.alt; + key.className = 'copyCode'; + } + } + } +} + +function CopyCode_CheckKey(key, eventObj) +{ + if(eventObj.keyCode == 13) + CopyCode(key); +} + +/* +********** +********** End Copy Code +********** +*/ + + +/* +********** +********** Begin Maintain Scroll Position +********** +*/ + +function loadAll(){ + try + { + scrollPos = allHistory.getAttribute("Scroll"); + } + catch(e){} +} + +function saveAll(){ + try + { + allHistory.setAttribute("Scroll", mainSection.scrollTop); + } + catch(e){} +} + +/* +********** +********** End Maintain Scroll Position +********** +*/ + + +/* +********** +********** Begin Send Mail +********** +*/ + +function formatMailToLink(anchor) +{ + var release = "Release: " + anchor.doc_Release; + var topicId = "Topic ID: " + anchor.doc_TopicID; + var topicTitle = "Topic Title: " + anchor.doc_TopicTitle; + var url = "URL: " + document.URL; + var browser = "Browser: " + window.navigator.userAgent; + + var crlf = "%0d%0a"; + var body = release + crlf + topicId + crlf + topicTitle + crlf + url + crlf + browser + crlf + crlf + "Comments:" + crlf + crlf; + + anchor.href = anchor.href + "&body=" + body; +} + +/* +********** +********** End Send Mail +********** +*/ + + +/* +********** +********** Begin Persistence +********** +*/ + +var globals; + +// get global vars from persistent store +function GetGlobals() +{ + var tmp; + + // Try to get VS implementation + try { tmp = window.external.Globals; } + catch (e) { tmp = null; } + + // Try to get DExplore implementation + try { if (tmp == null) tmp = window.external.GetObject("DTE", "").Globals; } + catch (e) { tmp = null; } + + return tmp; +} + +function Load(key) +{ + try + { + return globals.VariableExists(key) ? globals.VariableValue(key) : null; + } + catch (e) + { + return null; + } +} + +function Save(key, value) +{ + try + { + globals.VariableValue(key) = value; + globals.VariablePersists(key) = true; + } + catch (e) + { + } +} + +/* +********** +********** End Persistence +********** +*/ + +/* This is the part for Glossary popups */ +// The method is called when the user positions the mouse cursor over a glossary term in a document. +// Current implementation assumes the existence of an associative array (g_glossary). +// The keys of the array correspond to the argument passed to this function. + +var bGlossary=true; +var oDialog; +var oTimeout=""; +var oTimein=""; +var iTimein=.5; +var iTimeout=30; +var oLastNode; +var oNode; +var bInit=false; +var aTerms=new Array(); + +// Called from mouseover and when the contextmenu behavior fires oncontextopen. +function clearDef(eventObj){ + if(eventObj){ + var elem; + if(document.all) elem = eventObj.toElement; + else elem = eventObj.relatedTarget; + if(elem!=null || elem!="undefined"){ + if(typeof(oTimein)=="number"){ + window.clearTimeout(oTimein); + } + if(oDialog.dlg_status==true){ + hideDef(); + } + } + } +} +function hideDef(eventObj){ + window.clearTimeout(oTimeout); + oTimeout=""; + oDialog.style.display="none"; + oDialog.dlg_status=false; +} +function showDef(oSource){ + if(bInit==false){ + glossaryInit(); + bInit=true; + } + if(bGlossary==true){ + if(typeof(arguments[0])=="object"){ + oNode=oSource; + } + else{ + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + } + var bStatus=oDialog.dlg_status; // BUGBUG: oDialog is null. + if((oLastNode!=oNode)||(bStatus==false)){ + if((typeof(oTimein)=="number")&& eventObj){ + + var elem; + if(document.all) elem = eventObj.fromElement; + else elem = eventObj.relatedTarget; + + if( elem != null || elem != "undefined") + window.clearTimeout(oTimein); + } + oTimein=window.setTimeout("openDialog(oNode)",iTimein*1000); + } + } +} + + + +function glossaryInit(){ + oDialog=fnCreateDialog(150,50); +} + +function navigateTerm(eventObj){ + var oNode; + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + + var iTermID=oNode.termID; + if(oNode!=aTerms[iTermID]){ + var iAbsTop=getAbsoluteTop(aTerms[iTermID]); + if(iAbsTop<document.body.scrollTop){ + window.scrollTo(document.body.scrollLeft,getAbsoluteTop(aTerms[iTermID])); + } + openDialog(aTerms[iTermID]); + } +} +function disableGlossary(eventObj){ + if(bGlossary==true){ + if(document.all) eventObj.srcElement.innerText="Enable Automatic Glossary"; + else eventObj.target.innerText="Enable Automatic Glossary"; + bGlossary=false; + hideDef(); + } + else{ + if(document.all) eventObj.srcElement.innerText="Disable Automatic Glossary"; + else eventObj.target.innerText="Disable Automatic Glossary"; + bGlossary=true; + } +} +function openGlossary(){ + +} +function fnSetMenus(eventObj){ + var oNode; + if(document.all) oNode = eventObj.srcElement; + else oNode = eventObj.target; + + var oMenu=oNode.createMenu("SPAN","G_RID"); + var oSubItem1=oNode.createMenuItem("Glossary",fnStub,oMenu,true); + document.body.createMenuItem("Open External Glossary",openGlossary,oSubItem1.subMenu); + document.body.createMenuItem("Disable Automatic Glossary",disableGlossary,oSubItem1.subMenu); + for(var i=0;i<aTerms.length;i++){ + var oItem=document.body.createMenuItem(aTerms[i].innerText,navigateTerm,oMenu); + oItem.termID=i; + } +} +// This is a bogus stub. It should be sniffed out rather than added in. +function fnStub(){ + +} +function fnAttachMenus(aTips){ + // This walk is only necessary for the context menu. + var aTips=document.getElementsByTagName("SPAN"); + for(var i=0;i<aTips.length;i++){ + var oNode=aTips[i]; + if(oNode.getAttribute("G_RID")){ + var sTerm=oNode.getAttribute("G_RID"); + if(typeof(g_glossary[sTerm])=="string"){ + // Removed client-side scripting to add events. This entire process should be singled out for IE 5 and later .. and, its only for the context menu. + aTerms[aTerms.length]=oNode; + } + } + } + if(oBD.majorVer>=5){ + document.body.addBehavior(gsContextMenuPath); + document.body.onbehaviorready="fnSetMenus()"; + document.body.oncontextopen="clearDef()"; + } + +} +// Called by showDef. The showDef function sniffs for initialization. +function openDialog(oNode,x,y){ + var bStatus=oDialog.dlg_status; // BUGBUG: This code assumes that oDialog has been initialized + if(bStatus==false){ + oDialog.dlg_status=true; + oDialog.style.display="block"; + } + else{ + if(typeof(oTimeout)=="number"){ + window.clearTimeout(oTimeout); + } + } + + var sTerm=oNode.getAttribute("G_RID"); + var oDef=oNode.children(0); + var sDef=oDef.text; + sDef=sDef.substr(4,sDef.length-7); //Strips the html comment markers from the definition. + oDialog.innerHTML=sDef + + + //oDialog.innerHTML=g_glossary[sTerm]; + + var iScrollLeft=document.body.scrollLeft; + var iScrollTop=document.body.scrollTop; + var iOffsetLeft=getAbsoluteLeft(oNode)// - iScrollLeft; + var iOffsetWidth=oNode.offsetWidth; + var oParent=oNode.parentNode; + var iOffsetParentLeft=getAbsoluteLeft(oParent); + var iOffsetTop=getAbsoluteTop(oNode); //- iScrollTop; + var iOffsetDialogWidth=oDialog.offsetWidth; + + + if((iOffsetLeft + iOffsetWidth) > (iOffsetParentLeft + oParent.offsetWidth)){ + iOffsetLeft=iOffsetParentLeft; + if(iOffsetLeft - iOffsetDialogWidth>0){ + iOffsetTop+=oNode.offsetHeight; + } + } + var iLeft=0; + var iTop=0; + if((iOffsetLeft + iOffsetWidth - iScrollLeft + iOffsetDialogWidth) < document.body.offsetWidth ){ + iLeft=iOffsetLeft + iOffsetWidth; + } + else{ + if(iOffsetLeft - iOffsetDialogWidth>0){ + iLeft=iOffsetLeft - iOffsetDialogWidth; + } + else{ + iLeft=iOffsetParentLeft; + } + } + if(iOffsetTop - iScrollTop<oDialog.offsetHeight){ + iTop=iOffsetTop + oNode.offsetHeight; + } + else{ + iTop=iOffsetTop - oDialog.offsetHeight; + } + oDialog.style.top=iTop; + oDialog.style.left=iLeft; + oTimeout=window.setTimeout("hideDef()",iTimeout*1000); +} +function getAbsoluteTop(oNode){ + var oCurrentNode=oNode; + var iTop=0; + while(oCurrentNode.tagName!="BODY"){ + iTop+=oCurrentNode.offsetTop; + oCurrentNode=oCurrentNode.offsetParent; + } + return iTop; +} +function getAbsoluteLeft(oNode){ + var oCurrentNode=oNode; + var iLeft=0; + while(oCurrentNode.tagName!="BODY"){ + iLeft+=oCurrentNode.offsetLeft; + oCurrentNode=oCurrentNode.offsetParent; + } + return iLeft; +} +function fnCreateDialog(iWidth,iHeight){ + document.body.insertAdjacentHTML("BeforeEnd","<DIV></DIV>"); + oNewDialog=document.body.children(document.body.children.length-1); + oNewDialog.className="clsTooltip"; + oNewDialog.style.width=iWidth; + oNewDialog.dlg_status=false; + return oNewDialog; +} + +function sendfeedback(subject, id,alias){ + var rExp = /\"/gi; + var url = location.href; + // Need to replace the double quotes with single quotes for the mailto to work. + var rExpSingleQuotes = /\'\'"/gi; + var title = document.getElementsByTagName("TITLE")[0].innerText.replace(rExp, "''"); + location.href = "mailto:" + alias + "?subject=" + subject + title + "&body=Topic%20ID:%20" + id + "%0d%0aURL:%20" + url + "%0d%0a%0d%0aComments:%20"; +} diff --git a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css index 412e72c..8c7e864 100644 --- a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css +++ b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css @@ -1,1083 +1,1083 @@ -/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */
-
-
-/***********************************************************
- * SCRIPT-SUPPORTING STYLES
- ***********************************************************/
-
-/* Defines the userData cache persistence mechanism. */
-.userDataStyle
-{
- behavior: url(#default#userData);
-}
-
-/* Used to save the scroll bar position when navigating away from a page. */
-div.saveHistory
-{
- behavior: url(#default#savehistory);
-}
-
-/* Formats the expand/collapse images for all collapsible regions. */
-img.toggle
-{
- border: 0;
- margin-right: 5;
-}
-
-/* Formats the Collapse All/Expand All images. */
-img#toggleAllImage
-{
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Supports XLinks */
-MSHelp\:link
-{
- text-decoration: underline;
- color: #0000ff;
- hoverColor: #3366ff;
- filterString: ;
-}
-
-
-/***********************************************************
- * CONTENT PRESENTATION STYLES
- ***********************************************************/
-
-body
-{
- background: #FFFFFF;
- color: #000000;
- font-family: Verdana;
- font-size: medium;
- font-style: normal;
- font-weight: normal;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- width: 100%;
-}
-
-dl
-{
- margin-top: 15;
- margin-bottom:5;
- padding-left: 1;
-}
-
-dl.authored dt {
- font-style: bold;
- margin-top: 2;
-}
-
-dd {
- margin-left: 0;
-}
-
-ul
-{
- margin-top:0;
- margin-bottom:0;
- margin-left: 17;
- list-style-type: disc;
-}
-
-ul ul
-{
- margin-bottom: 4;
- margin-left: 17;
- margin-top: 3;
- list-style-type: disc;
-}
-
-ol {
- margin-top:0;
- margin-bottom:0;
- margin-left: 28;
- list-style-type: decimal;
-}
-
-ol ol {
- margin-bottom: 4;
- margin-left: 28;
- margin-top: 3;
- list-style-type: lower-alpha;
-}
-
-li {
- margin-top: 5;
- margin-bottom: 5;
-}
-
-p {
- margin-top: 10;
- margin-bottom: 5;
-}
-
-a:link {
- color: #0000FF;
-}
-
-a:visited {
- color: #DD7C3B;
-}
-
-a:hover {
- color: #3366FF;
-}
-
-code
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-
-span.parameter {
- font-style: italic;
-}
-
-span.italic {
- font-style: italic;
-}
-
-span.selflink {
- font-weight: bold;
-}
-
-span.nolink {
-
-}
-
-/***********************************************************
- * STRUCTURE PRESENTATION STYLES
- ***********************************************************/
-
-/* Applies to everything below the non-scrolling header region. */
-div#mainSection
-{
- font-size: 62.5%;
- width: 100%;
-}
-html>body #mainSection
-{
- font-size:73%;
- width: 100%;
-}
-
-/* Applies to everything below the non-scrolling header region, minus the footer. */
-div#mainBody
-{
- font-size: 100%;
- margin-left: 15;
- margin-top: 10;
- /*padding-bottom: 20;*/
-}
-
-html>body #mainBody
-{
- font-size: 93%;
- margin-left: 15;
- margin-top: 10;
- padding-bottom: 20;
-}
-
-/* Adds right padding for all blocks in mainBody */
-div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
-{
- padding-right: 5;
-}
-
-/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/
-/* Applies to the entire non-scrolling header region. */
-div#header
-{
- background-color: #FFFFFF;
- padding-top: 0;
- padding-bottom: 0;
- padding-left: 0;
- padding-right: 0;
- width: 100%;
-}
-
-/* Applies to both tables in the non-scrolling header region. */
-div#header table
-{
- width: 100%;
-}
-
-/* Applies to cells in both tables in the non-scrolling header region. */
-div#header table td
-{
- color: #0000FF;
- font-size: 70%;
- margin-top: 0;
- margin-bottom: 0;
- padding-right: 20;
-}
-/* Applies to second row in the upper table of the non-scrolling header region. */
-div#header table tr#headerTableRow2 td
-{
- padding-left: 13px;
-}
-
-/* Applies to the last row in the upper table of the non-scrolling header region. Text
- in this row includes See Also, Constructors, Methods, and Properties. */
-div#header table tr#headerTableRow3 td
-{
- padding-top: 2px;
- padding-left: 15;
-}
-
-/* Applies to the lower table in the non-scrolling header region. Text in this table
- includes Collapse All/Expand All, Language Filter, and Members Options. */
-div#header table#topTable
-{
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- text-align: left;
- padding-left: 15;
- padding-top: 5px;
- padding-bottom: 5px;
-}
-
-/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
- Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
-{
- white-space: nowrap;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-/*------------------------------ Begin General Table Styles -------------------------------*/
-
-div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
-{
- width:98.9%;
-}
-
-div#mainBody div.section div.alert, div#mainBody div.section div.code,
-div#mainBody div.section div.tableSection
-{
- width:100%;
-}
-
-div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code,
-div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert,
-div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection
-{
- width:100%;
-}
-
-div.alert p, div.code p
-{
- margin-top:5;
- margin-bottom:8;
-}
-dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-div.tableSection p
-{
- margin-top:1;
- margin-bottom:4;
-}
-li p
-{
- margin-top:2;
- margin-bottom:2;
-}
-div.seeAlsoNoToggleSection dl
-{
- margin-top:8;
- margin-bottom:1;
- padding-left:1;
-}
-div.seeAlsoNoToggleSection dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-div.section dl
-{
- margin-top:8;
- margin-bottom:1;
- padding-left:1;
-}
-div.section dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-
-
-/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/
-div.code table
-{
- border: 0;
- font-size: 95%;
- margin-bottom: 5;
- margin-top:-.4em;
- width: 100%
-}
-
-div.code table th
-{
- background: #EFEFF7;
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1;
- color: #000066;
- font-weight: bold;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.code table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
- padding-top: 5;
-}
-/* Applies to the running header text in the first row of the upper table in the
- non-scrolling header region. */
-span#runningHeaderText
-{
- color: #8C8C8C;
- font-size: 90%;
- padding-left: 13;
-}
-
-/* Applies to the topic title in the second row of the upper table in the
- non-scrolling header region. */
-span#nsrTitle
-{
- color: #000000;
- font-size: 160%;
- font-weight: 400;
- font-family: arial;
-}
-/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/
-
-
-/* Formats the footer. Currently, the transforms pass in two parameters to the
- footer SSC, but the default footer SSC doesn't use either parameter.
- TODO: Investigate whether the default footer SSC has any impact on doc spec. */
-div#footer
-{
- font-size: 80%;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 8;
- padding-bottom: 6;
- padding-left: 1;
- padding-right: 1;
- width: 100%;
-}
-
-html>body div#footer
-{
- font-size: 80%;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 2;
- padding-bottom: 6;
- padding-left: 1;
- padding-right: 1;
- width: 98%;
-}
-
-/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule.
- TODO: Determine whether this style is required by the doc spec. */
-/*
-hr#footerHR
-{
- border-bottom-color: #EEEEFF;
- border-bottom-style: solid;
- border-bottom-width: 1;
- border-top-color: C8CDDE;
- border-top-style: solid;
- border-top-width: 1;
- height: 3;
- color: #D4DFFF;
-}
-*/
-
-/********************************************************************************************************************
- Collapsible Section Structure
-
- <h1 class="heading"> // Format of the collapsible section text
- <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section
- <img id="xxxToggle"> // Expand/collapse image
- </img>
- </span>
- </h1>
-
- <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default
- </div>
-
-
- The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for
- displaying/hiding the body of the collapsible section.
-********************************************************************************************************************/
-
-/* Applies to the body of a collapsible section */
-div.seeAlsoNoToggleSection
-{
- margin-left:0;
- padding-top: 2;
- padding-bottom: 2;
- padding-left: 0;
- padding-right: 15;
- width: 100%;
-}
-
-div.section
-{
- margin-left:0;
- padding-top: 0;
- padding-bottom: 0;
- padding-left: 16;
- padding-right: 15;
- width: 100%;
-}
-html>body div.section
-{
- margin-left:0;
- padding-top: 2;
- padding-bottom: 2;
- padding-left: 16;
- padding-right: 15;
- width: 97%;
-}
-div.seeSection
-{
- margin-left:0;
- padding-top: 0;
- padding-bottom: 2;
- padding-left: 16;
- padding-right: 15;
- width: 100%;
-}
-
-
-/*------------------------------ Begin Heading Styles -------------------------------*/
-/* As far as I can tell, only <h1> tags use this class.
- TODO: Decide whether to roll these attributes into the h1.heading style */
-.heading
-{
- font-weight: bold;
- margin-top: 18;
- margin-bottom: 8;
-}
-
-/* All <h1> headings. */
-h1.heading
-{
- color: #000000;
- font-size: 130%;
-}
-
-/* Applies to table titles and subsection titles. */
-.subHeading
-{
- font-weight: bold;
- margin-bottom: 4;
-}
-.procedureSubHeading
-{
- font-weight: bold;
- margin-bottom: 4;
-}
-
-/* Formats the titles of author-generated tables. */
-h3.subHeading
-{
- color: #000000;
- font-size: 120%;
- font-weight:800;
-}
-
-h3.procedureSubHeading
-{
- color: #000000;
- font-size: 120%;
-}
-
-/* Formats the titles of all subsections. */
-h4.subHeading
-{
- color: #000000;
- font-size: 110%;
- font-weight:800;
-}
-span.labelheading, div.labelheading
-{
- font-size:100%;
- color:#003399;
-}
-
-/*------------------------------ End Heading Styles -------------------------------*/
-
-
-/*------------------------------ Begin Image Styles -------------------------------*/
-img.copyCodeImage
-{
- border: 0;
- margin: 1;
- margin-right: 3;
-}
-
-img.downloadCodeImage
-{
- border: 0;
- margin-right: 3;
-}
-
-img.viewCodeImage
-{
- border: 0;
- margin-right: 3;
-}
-
-img.note
-{
- border: 0;
- margin-right: 3;
-}
-/*------------------------------ End Image Styles -------------------------------*/
-
-
-/*------------------------------ Begin General Table Styles -------------------------------*/
-div#mainSection table
-{
- border: 0;
- font-size: 100%;
- width: 98.9%;
- margin-top: 5px;
- margin-bottom: 5px;
-}
-
-div#mainSection table tr
-{
- vertical-align: top;
-}
-
-div#mainSection table th
-{
- background-color: #EFEFF7;
- border-bottom: 1px solid #C8CDDE;
- border-left: 1px none #D5D5D3;
- color: #000066;
- padding-left: 5px;
- padding-right: 5px;
- text-align: left;
-}
-
-div#mainSection table td
-{
- background-color: #F7F7FF;
- border-bottom: 1px solid #D5D5D3;
- border-left: 1px none #D5D5D3;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
- Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
-{
- white-space: nowrap;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-
-/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/
-div.code table
-{
- border: 0;
- font-size: 95%;
- margin-bottom: 5;
- width: 100%
-}
-
-div.code table th
-{
- background: #EFEFF7;
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1;
- color: #000066;
- font-weight: bold;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.code table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
- padding-top: 5;
-}
-/*------------------------------ End Syntax and Snipper Code Block Styles -------------------------------*/
-
-
-/*------------------------------ Begin Note Styles -------------------------------*/
-div.alert table
-{
- border: 0;
- font-size: 100%;
- width: 100%;
-}
-
-div.alert table th
-{
- background: #EFEFF7;
- border-bottom-width: 0;
- color: #000066;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.alert table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
-}
-
-
-/*------------------------------ End Note Styles -------------------------------*/
-
-
-/* Applies to the copy code text and image. */
-span.copyCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
- float: right;
- display: inline;
- text-align: right;
- text-decoration: underline;
-}
-
-span.copyCodeOnHover
-{
- color: #E85F17;
- font-size:xx-small;
- font-weight: normal;
- cursor: pointer;
- float: right;
- display: inline;
- text-align: right;
- text-decoration: underline;
-}
-
-.downloadCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-.viewCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-/* Formats the code in syntax and usage blocks, and the code in non-snipper code blocks. */
-div.code pre
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
- word-wrap: break-word;
- background: #F7F7FF;
-}
-
-/* Formats parameter tooltips. */
-.tip
-{
- color: #0000FF;
- font-style: italic;
- cursor: pointer;
- text-decoration:underline;
-}
-
-/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */
-.math
-{
- font-family: Times New Roman;
- font-size: 125%
-}
-
-/* The sourceCodeList class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-.sourceCodeList
-{
- font-family: Verdana;
- font-size: 90%;
-}
-*/
-
-/* The viewCode class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-pre.viewCode
-{
- width: 100%;
- overflow: auto;
-}
-*/
-
-/* Dropdown areas */
-
-#devlangsMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #f3cbb5;
- background: #FCECE4;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-left: 4px;
- padding-right:8px;
- font-size: 70%;
-}
-
-#memberOptionsMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #f3cbb5;
- background: #FCECE4;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-left: 4px;
- padding-right:8px;
- font-size: 70%;
-}
-
-#memberFrameworksMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #f3cbb5;
- background: #FCECE4;
- padding-top: 4px;
- padding-bottom: 4px;
- padding-left: 4px;
- padding-right:8px;
- font-size: 70%;
-}
-
-/* Applies to the checkbox labels in the filter drop-downs for devlang, member options, and member platforms. */
-.checkboxLabel
-{
- color: #0000FF;
- cursor: pointer;
- text-decoration:underline;
- padding-bottom:4;
- font-size:90%;
-}
-
-img#devlangsDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Formats the Members Options filter drop-down image. */
-img#memberOptionsDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Formats the Members Platforms filter drop-down image. */
-img#memberFrameworksDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Line seperating footer from main body */
-
-div.footerLine {
- margin: 0;
- width: 100%;
- padding-top: 8;
- padding-bottom: 6;
- /*padding-left: 5;
- padding-right: 2;*/
-
-}
-
-div.hr1 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #C8CDDE;
- font-size: 1px;
-}
-
-div.hr2 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #D4DFFF;
- font-size: 1px;
-}
-
-div.hr3 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #EEEEFF;
- font-size: 1px;
-}
-
-span.cs {
- display: none;
-}
-
-span.vb {
- display: none;
-}
-
-span.cpp {
- display: none;
-}
-
-span.nu {
- display: inline;
-}
-
-span.code {
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-span.ui {
- font-weight: bold;
-}
-span.math {
- font-style: italic;
-}
-span.input {
- font-weight: bold;
-}
-span.term {
- font-style: italic;
-}
-span.label
-{
- font-weight: bold;
-}
-span.foreignPhrase {
- font-style: italic;
-}
-span.placeholder {
- font-style: italic;
-}
-span.keyword
-{
- font-weight: bold;
-}
-span.typeparameter
-{
- font-style:italic;
-}
-
-div.caption
-{
- font-weight: bold;
- font-size:100%;
- color:#003399;
-}
-
-/* syntax styles */
-
-div.code span.identifier
-{
- /*font-weight: bold;*/
-}
-
-div.code span.keyword
-{
- /*color: green;*/
- color: #871F78;
-}
-
-div.code span.parameter
-{
- font-style: italic;
- /*color: purple;*/
-}
-
-div.code span.literal
-{
- /*color: purple;*/
- color:#8B0000;
-}
-
-div.code span.comment
-{
- /*color: red;*/
- color: #006400;
-}
-
-span.syntaxLabel
-{
- color:#0481DA;
- font-weight:bold;
-}
-span.introStyle
-{
- color:DarkGray;
-}
-
-div.seeAlsoStyle
-{
- padding-top:5px;
-
-}
-
-td.nsrBottom
-{
- height: 0.6em;
- width: 100%;
-}
-
-/* end of syntax styles */
-
-/* Glossary */
-SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;}
-DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;}
-
-
-/* FB STYLES */
-span.feedbackcss
-{
- font-size: 110%;
- width:100%;
- margin-left: 15px;
-/*
- border-width: 1px 1px 1px 1px;
- border-style: solid;
- border-color:#C8CDDE;
-*/
-}
-
-div#feedbackarea table
-{
- margin-bottom:0px;
- margin-top:0px;
- margin-left: 0;
- width:300;
- border-width: 0px 0px 0px 0px;
-}
-
-div#feedbackarea table td
-{
- /*background-color: #D4DFFF;*/
- font-family:Verdana;
- font-size:100%;
- text-align:center;
- /*color: #003399;*/
- border-bottom:0px;
-}
-
-div#feedbackarea p
-{
- font-size:100%;
- /*background-color: #D4DFFF;*/
- width: 100%;
- margin-bottom: 0;
- margin-top: 0;
- margin-left: 6;
- margin-right: 5;
-}
-div#feedbackarea H5
-{
-margin-top:0px;
- margin-bottom:0.7em;
- font-size:10pt;
- margin-left: 6;
-}
-p.feedbackarea
-{
- width:expression(document.body.clientWidth-27);
- font-size:100%;
- background-color: #D4DFFF;
-}
-
-input#submitFeedback
-{
- font-size:100%;
- text-align:center;
- /*background-color:#D4DFFF; */
-}
-
-span#feedbackarea
-{
-/*
- background-color: #D4DFFF;
- color: #003399;
- border-color:#C8CDDE;
-*/
- width:100%;
-}
-div#feedbackarea
-{
- /*background-color: #D4DFFF;
- color: #003399;*/
- width:100%;
-}
-span.filterOnHover
-{
- color: #E85F17;
-}
-span.filter
-{
- color: #0000FF;
-}
-
+/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */ + + +/*********************************************************** + * SCRIPT-SUPPORTING STYLES + ***********************************************************/ + +/* Defines the userData cache persistence mechanism. */ +.userDataStyle +{ + behavior: url(#default#userData); +} + +/* Used to save the scroll bar position when navigating away from a page. */ +div.saveHistory +{ + behavior: url(#default#savehistory); +} + +/* Formats the expand/collapse images for all collapsible regions. */ +img.toggle +{ + border: 0; + margin-right: 5; +} + +/* Formats the Collapse All/Expand All images. */ +img#toggleAllImage +{ + margin-left: 0; + vertical-align: middle; +} + +/* Supports XLinks */ +MSHelp\:link +{ + text-decoration: underline; + color: #0000ff; + hoverColor: #3366ff; + filterString: ; +} + + +/*********************************************************** + * CONTENT PRESENTATION STYLES + ***********************************************************/ + +body +{ + background: #FFFFFF; + color: #000000; + font-family: Verdana; + font-size: medium; + font-style: normal; + font-weight: normal; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + width: 100%; +} + +dl +{ + margin-top: 15; + margin-bottom:5; + padding-left: 1; +} + +dl.authored dt { + font-style: bold; + margin-top: 2; +} + +dd { + margin-left: 0; +} + +ul +{ + margin-top:0; + margin-bottom:0; + margin-left: 17; + list-style-type: disc; +} + +ul ul +{ + margin-bottom: 4; + margin-left: 17; + margin-top: 3; + list-style-type: disc; +} + +ol { + margin-top:0; + margin-bottom:0; + margin-left: 28; + list-style-type: decimal; +} + +ol ol { + margin-bottom: 4; + margin-left: 28; + margin-top: 3; + list-style-type: lower-alpha; +} + +li { + margin-top: 5; + margin-bottom: 5; +} + +p { + margin-top: 10; + margin-bottom: 5; +} + +a:link { + color: #0000FF; +} + +a:visited { + color: #DD7C3B; +} + +a:hover { + color: #3366FF; +} + +code +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} + +span.parameter { + font-style: italic; +} + +span.italic { + font-style: italic; +} + +span.selflink { + font-weight: bold; +} + +span.nolink { + +} + +/*********************************************************** + * STRUCTURE PRESENTATION STYLES + ***********************************************************/ + +/* Applies to everything below the non-scrolling header region. */ +div#mainSection +{ + font-size: 62.5%; + width: 100%; +} +html>body #mainSection +{ + font-size:73%; + width: 100%; +} + +/* Applies to everything below the non-scrolling header region, minus the footer. */ +div#mainBody +{ + font-size: 100%; + margin-left: 15; + margin-top: 10; + /*padding-bottom: 20;*/ +} + +html>body #mainBody +{ + font-size: 93%; + margin-left: 15; + margin-top: 10; + padding-bottom: 20; +} + +/* Adds right padding for all blocks in mainBody */ +div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl +{ + padding-right: 5; +} + +/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/ +/* Applies to the entire non-scrolling header region. */ +div#header +{ + background-color: #FFFFFF; + padding-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + width: 100%; +} + +/* Applies to both tables in the non-scrolling header region. */ +div#header table +{ + width: 100%; +} + +/* Applies to cells in both tables in the non-scrolling header region. */ +div#header table td +{ + color: #0000FF; + font-size: 70%; + margin-top: 0; + margin-bottom: 0; + padding-right: 20; +} +/* Applies to second row in the upper table of the non-scrolling header region. */ +div#header table tr#headerTableRow2 td +{ + padding-left: 13px; +} + +/* Applies to the last row in the upper table of the non-scrolling header region. Text + in this row includes See Also, Constructors, Methods, and Properties. */ +div#header table tr#headerTableRow3 td +{ + padding-top: 2px; + padding-left: 15; +} + +/* Applies to the lower table in the non-scrolling header region. Text in this table + includes Collapse All/Expand All, Language Filter, and Members Options. */ +div#header table#topTable +{ + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + text-align: left; + padding-left: 15; + padding-top: 5px; + padding-bottom: 5px; +} + +/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors, + Protected Constructors, Public Properties, Protected Properties, and so on). */ +div#mainSection table td.imageCell +{ + white-space: nowrap; +} +/*------------------------------ End General Table Styles -------------------------------*/ + +/*------------------------------ Begin General Table Styles -------------------------------*/ + +div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection +{ + width:98.9%; +} + +div#mainBody div.section div.alert, div#mainBody div.section div.code, +div#mainBody div.section div.tableSection +{ + width:100%; +} + +div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code, +div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert, +div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection +{ + width:100%; +} + +div.alert p, div.code p +{ + margin-top:5; + margin-bottom:8; +} +dd p +{ + margin-top:2; + margin-bottom:8; +} +div.tableSection p +{ + margin-top:1; + margin-bottom:4; +} +li p +{ + margin-top:2; + margin-bottom:2; +} +div.seeAlsoNoToggleSection dl +{ + margin-top:8; + margin-bottom:1; + padding-left:1; +} +div.seeAlsoNoToggleSection dd p +{ + margin-top:2; + margin-bottom:8; +} +div.section dl +{ + margin-top:8; + margin-bottom:1; + padding-left:1; +} +div.section dd p +{ + margin-top:2; + margin-bottom:8; +} +/*------------------------------ End General Table Styles -------------------------------*/ + + + +/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/ +div.code table +{ + border: 0; + font-size: 95%; + margin-bottom: 5; + margin-top:-.4em; + width: 100% +} + +div.code table th +{ + background: #EFEFF7; + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1; + color: #000066; + font-weight: bold; + padding-left: 5; + padding-right: 5; +} + +div.code table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; + padding-top: 5; +} +/* Applies to the running header text in the first row of the upper table in the + non-scrolling header region. */ +span#runningHeaderText +{ + color: #8C8C8C; + font-size: 90%; + padding-left: 13; +} + +/* Applies to the topic title in the second row of the upper table in the + non-scrolling header region. */ +span#nsrTitle +{ + color: #000000; + font-size: 160%; + font-weight: 400; + font-family: arial; +} +/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/ + + +/* Formats the footer. Currently, the transforms pass in two parameters to the + footer SSC, but the default footer SSC doesn't use either parameter. + TODO: Investigate whether the default footer SSC has any impact on doc spec. */ +div#footer +{ + font-size: 80%; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + padding-top: 8; + padding-bottom: 6; + padding-left: 1; + padding-right: 1; + width: 100%; +} + +html>body div#footer +{ + font-size: 80%; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + padding-top: 2; + padding-bottom: 6; + padding-left: 1; + padding-right: 1; + width: 98%; +} + +/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule. + TODO: Determine whether this style is required by the doc spec. */ +/* +hr#footerHR +{ + border-bottom-color: #EEEEFF; + border-bottom-style: solid; + border-bottom-width: 1; + border-top-color: C8CDDE; + border-top-style: solid; + border-top-width: 1; + height: 3; + color: #D4DFFF; +} +*/ + +/******************************************************************************************************************** + Collapsible Section Structure + + <h1 class="heading"> // Format of the collapsible section text + <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section + <img id="xxxToggle"> // Expand/collapse image + </img> + </span> + </h1> + + <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default + </div> + + + The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for + displaying/hiding the body of the collapsible section. +********************************************************************************************************************/ + +/* Applies to the body of a collapsible section */ +div.seeAlsoNoToggleSection +{ + margin-left:0; + padding-top: 2; + padding-bottom: 2; + padding-left: 0; + padding-right: 15; + width: 100%; +} + +div.section +{ + margin-left:0; + padding-top: 0; + padding-bottom: 0; + padding-left: 16; + padding-right: 15; + width: 100%; +} +html>body div.section +{ + margin-left:0; + padding-top: 2; + padding-bottom: 2; + padding-left: 16; + padding-right: 15; + width: 97%; +} +div.seeSection +{ + margin-left:0; + padding-top: 0; + padding-bottom: 2; + padding-left: 16; + padding-right: 15; + width: 100%; +} + + +/*------------------------------ Begin Heading Styles -------------------------------*/ +/* As far as I can tell, only <h1> tags use this class. + TODO: Decide whether to roll these attributes into the h1.heading style */ +.heading +{ + font-weight: bold; + margin-top: 18; + margin-bottom: 8; +} + +/* All <h1> headings. */ +h1.heading +{ + color: #000000; + font-size: 130%; +} + +/* Applies to table titles and subsection titles. */ +.subHeading +{ + font-weight: bold; + margin-bottom: 4; +} +.procedureSubHeading +{ + font-weight: bold; + margin-bottom: 4; +} + +/* Formats the titles of author-generated tables. */ +h3.subHeading +{ + color: #000000; + font-size: 120%; + font-weight:800; +} + +h3.procedureSubHeading +{ + color: #000000; + font-size: 120%; +} + +/* Formats the titles of all subsections. */ +h4.subHeading +{ + color: #000000; + font-size: 110%; + font-weight:800; +} +span.labelheading, div.labelheading +{ + font-size:100%; + color:#003399; +} + +/*------------------------------ End Heading Styles -------------------------------*/ + + +/*------------------------------ Begin Image Styles -------------------------------*/ +img.copyCodeImage +{ + border: 0; + margin: 1; + margin-right: 3; +} + +img.downloadCodeImage +{ + border: 0; + margin-right: 3; +} + +img.viewCodeImage +{ + border: 0; + margin-right: 3; +} + +img.note +{ + border: 0; + margin-right: 3; +} +/*------------------------------ End Image Styles -------------------------------*/ + + +/*------------------------------ Begin General Table Styles -------------------------------*/ +div#mainSection table +{ + border: 0; + font-size: 100%; + width: 98.9%; + margin-top: 5px; + margin-bottom: 5px; +} + +div#mainSection table tr +{ + vertical-align: top; +} + +div#mainSection table th +{ + background-color: #EFEFF7; + border-bottom: 1px solid #C8CDDE; + border-left: 1px none #D5D5D3; + color: #000066; + padding-left: 5px; + padding-right: 5px; + text-align: left; +} + +div#mainSection table td +{ + background-color: #F7F7FF; + border-bottom: 1px solid #D5D5D3; + border-left: 1px none #D5D5D3; + padding-left: 5px; + padding-right: 5px; +} + +/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors, + Protected Constructors, Public Properties, Protected Properties, and so on). */ +div#mainSection table td.imageCell +{ + white-space: nowrap; +} +/*------------------------------ End General Table Styles -------------------------------*/ + + +/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/ +div.code table +{ + border: 0; + font-size: 95%; + margin-bottom: 5; + width: 100% +} + +div.code table th +{ + background: #EFEFF7; + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1; + color: #000066; + font-weight: bold; + padding-left: 5; + padding-right: 5; +} + +div.code table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; + padding-top: 5; +} +/*------------------------------ End Syntax and Snipper Code Block Styles -------------------------------*/ + + +/*------------------------------ Begin Note Styles -------------------------------*/ +div.alert table +{ + border: 0; + font-size: 100%; + width: 100%; +} + +div.alert table th +{ + background: #EFEFF7; + border-bottom-width: 0; + color: #000066; + padding-left: 5; + padding-right: 5; +} + +div.alert table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; +} + + +/*------------------------------ End Note Styles -------------------------------*/ + + +/* Applies to the copy code text and image. */ +span.copyCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; + float: right; + display: inline; + text-align: right; + text-decoration: underline; +} + +span.copyCodeOnHover +{ + color: #E85F17; + font-size:xx-small; + font-weight: normal; + cursor: pointer; + float: right; + display: inline; + text-align: right; + text-decoration: underline; +} + +.downloadCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +.viewCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +/* Formats the code in syntax and usage blocks, and the code in non-snipper code blocks. */ +div.code pre +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; + word-wrap: break-word; + background: #F7F7FF; +} + +/* Formats parameter tooltips. */ +.tip +{ + color: #0000FF; + font-style: italic; + cursor: pointer; + text-decoration:underline; +} + +/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */ +.math +{ + font-family: Times New Roman; + font-size: 125% +} + +/* The sourceCodeList class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +.sourceCodeList +{ + font-family: Verdana; + font-size: 90%; +} +*/ + +/* The viewCode class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +pre.viewCode +{ + width: 100%; + overflow: auto; +} +*/ + +/* Dropdown areas */ + +#devlangsMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #f3cbb5; + background: #FCECE4; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 4px; + padding-right:8px; + font-size: 70%; +} + +#memberOptionsMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #f3cbb5; + background: #FCECE4; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 4px; + padding-right:8px; + font-size: 70%; +} + +#memberFrameworksMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #f3cbb5; + background: #FCECE4; + padding-top: 4px; + padding-bottom: 4px; + padding-left: 4px; + padding-right:8px; + font-size: 70%; +} + +/* Applies to the checkbox labels in the filter drop-downs for devlang, member options, and member platforms. */ +.checkboxLabel +{ + color: #0000FF; + cursor: pointer; + text-decoration:underline; + padding-bottom:4; + font-size:90%; +} + +img#devlangsDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Formats the Members Options filter drop-down image. */ +img#memberOptionsDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Formats the Members Platforms filter drop-down image. */ +img#memberFrameworksDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Line seperating footer from main body */ + +div.footerLine { + margin: 0; + width: 100%; + padding-top: 8; + padding-bottom: 6; + /*padding-left: 5; + padding-right: 2;*/ + +} + +div.hr1 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #C8CDDE; + font-size: 1px; +} + +div.hr2 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #D4DFFF; + font-size: 1px; +} + +div.hr3 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #EEEEFF; + font-size: 1px; +} + +span.cs { + display: none; +} + +span.vb { + display: none; +} + +span.cpp { + display: none; +} + +span.nu { + display: inline; +} + +span.code { + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label +{ + font-weight: bold; +} +span.foreignPhrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.keyword +{ + font-weight: bold; +} +span.typeparameter +{ + font-style:italic; +} + +div.caption +{ + font-weight: bold; + font-size:100%; + color:#003399; +} + +/* syntax styles */ + +div.code span.identifier +{ + /*font-weight: bold;*/ +} + +div.code span.keyword +{ + /*color: green;*/ + color: #871F78; +} + +div.code span.parameter +{ + font-style: italic; + /*color: purple;*/ +} + +div.code span.literal +{ + /*color: purple;*/ + color:#8B0000; +} + +div.code span.comment +{ + /*color: red;*/ + color: #006400; +} + +span.syntaxLabel +{ + color:#0481DA; + font-weight:bold; +} +span.introStyle +{ + color:DarkGray; +} + +div.seeAlsoStyle +{ + padding-top:5px; + +} + +td.nsrBottom +{ + height: 0.6em; + width: 100%; +} + +/* end of syntax styles */ + +/* Glossary */ +SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;} +DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;} + + +/* FB STYLES */ +span.feedbackcss +{ + font-size: 110%; + width:100%; + margin-left: 15px; +/* + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color:#C8CDDE; +*/ +} + +div#feedbackarea table +{ + margin-bottom:0px; + margin-top:0px; + margin-left: 0; + width:300; + border-width: 0px 0px 0px 0px; +} + +div#feedbackarea table td +{ + /*background-color: #D4DFFF;*/ + font-family:Verdana; + font-size:100%; + text-align:center; + /*color: #003399;*/ + border-bottom:0px; +} + +div#feedbackarea p +{ + font-size:100%; + /*background-color: #D4DFFF;*/ + width: 100%; + margin-bottom: 0; + margin-top: 0; + margin-left: 6; + margin-right: 5; +} +div#feedbackarea H5 +{ +margin-top:0px; + margin-bottom:0.7em; + font-size:10pt; + margin-left: 6; +} +p.feedbackarea +{ + width:expression(document.body.clientWidth-27); + font-size:100%; + background-color: #D4DFFF; +} + +input#submitFeedback +{ + font-size:100%; + text-align:center; + /*background-color:#D4DFFF; */ +} + +span#feedbackarea +{ +/* + background-color: #D4DFFF; + color: #003399; + border-color:#C8CDDE; +*/ + width:100%; +} +div#feedbackarea +{ + /*background-color: #D4DFFF; + color: #003399;*/ + width:100%; +} +span.filterOnHover +{ + color: #E85F17; +} +span.filter +{ + color: #0000FF; +} + diff --git a/tools/Sandcastle/Presentation/vs2005/Styles/Whidbey/presentation.css b/tools/Sandcastle/Presentation/vs2005/Styles/Whidbey/presentation.css index 87a6029..b0d9c11 100644 --- a/tools/Sandcastle/Presentation/vs2005/Styles/Whidbey/presentation.css +++ b/tools/Sandcastle/Presentation/vs2005/Styles/Whidbey/presentation.css @@ -1,1061 +1,1061 @@ -/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */
-
-
-/***********************************************************
- * SCRIPT-SUPPORTING STYLES
- ***********************************************************/
-
-/* Defines the userData cache persistence mechanism. */
-.userDataStyle
-{
- behavior: url(#default#userData);
-}
-
-/* Used to save the scroll bar position when navigating away from a page. */
-div.saveHistory
-{
- behavior: url(#default#saveHistory);
-}
-
-/* Formats the expand/collapse images for all collapsible regions. */
-img.toggle
-{
- border: 0;
- margin-right: 5;
-}
-
-/* Formats the Collapse All/Expand All images. */
-img#toggleAllImage
-{
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Supports XLinks */
-MSHelp\:link
-{
- text-decoration: underline;
- color: #0000ff;
- hoverColor: #3366ff;
- filterString: ;
-}
-
-
-/***********************************************************
- * CONTENT PRESENTATION STYLES
- ***********************************************************/
-
-body
-{
- background: #FFFFFF;
- color: #000000;
- font-family: Verdana;
- font-size: medium;
- font-style: normal;
- font-weight: normal;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- width: 100%;
-}
-
-dl
-{
- margin-top: 15;
- margin-bottom:5;
- padding-left: 1;
-}
-
-dl.authored dt {
- font-style: bold;
-}
-
-dd {
- margin-left: 0;
-}
-
-ul
-{
- margin-top:0;
- margin-bottom:0;
- margin-left: 17;
- list-style-type: disc;
-}
-
-ul ul
-{
- margin-bottom: 4;
- margin-left: 17;
- margin-top: 3;
- list-style-type: disc;
-}
-
-ol {
- margin-top:0;
- margin-bottom:0;
- margin-left: 28;
- list-style-type: decimal;
-}
-
-ol ol {
- margin-bottom: 4;
- margin-left: 28;
- margin-top: 3;
- list-style-type: lower-alpha;
-}
-
-li {
- margin-top: 5;
- margin-bottom: 5;
-}
-
-p {
- margin-top: 10;
- margin-bottom: 5;
-}
-
-a[href] {
- color: #0000FF;
-}
-
-a:visited {
- color: #0000FF;
-}
-
-a:hover {
- color: #3366FF;
-}
-
-code
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-
-span.parameter {
- font-style: italic;
- font-weight:bold;
-}
-
-span.italic {
- font-style: italic;
-}
-
-span.selflink {
- font-weight: bold;
-}
-
-span.nolink {
-
-}
-
-/***********************************************************
- * STRUCTURE PRESENTATION STYLES
- ***********************************************************/
-
-/* Applies to everything below the non-scrolling header region. */
-div#mainSection
-{
- font-size: 62.5%;
- width: 100%;
-}
-html>body #mainSection
-{
- font-size:73%;
- width: 100%;
-}
-
-/* Applies to everything below the non-scrolling header region, minus the footer. */
-div#mainBody
-{
- font-size: 100%;
- margin-left: 15;
- margin-top: 10;
- padding-bottom: 20;
-}
-
-html>body #mainBody
-{
- font-size: 93%;
- margin-left: 15;
- margin-top: 10;
- padding-bottom: 20;
-}
-
-/* Adds right padding for all blocks in mainBody */
-div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl
-{
- padding-right: 5;
-}
-
-/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/
-/* Applies to the entire non-scrolling header region. */
-div#header
-{
- background-color: #D4DFFF;
- padding-top: 0;
- padding-bottom: 0;
- padding-left: 0;
- padding-right: 0;
- width: 100%;
-}
-
-/* Applies to both tables in the non-scrolling header region. */
-div#header table
-{
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1;
- width: 100%;
-}
-
-/* Applies to cells in both tables in the non-scrolling header region. */
-div#header table td
-{
- color: #0000FF;
- font-size: 70%;
- margin-top: 0;
- margin-bottom: 0;
- padding-right: 20;
-}
-/* Applies to second row in the upper table of the non-scrolling header region. */
-div#header table tr#headerTableRow2 td
-{
- padding-left: 13px;
-}
-
-/* Applies to the last row in the upper table of the non-scrolling header region. Text
- in this row includes See Also, Constructors, Methods, and Properties. */
-div#header table tr#headerTableRow3 td
-{
- padding-bottom: 2;
- padding-top: 5;
- padding-left: 15;
-}
-
-/* Applies to the lower table in the non-scrolling header region. Text in this table
- includes Collapse All/Expand All, Language Filter, and Members Options. */
-div#header table#bottomTable
-{
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- text-align: left;
- padding-left: 15;
-}
-
-/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
- Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
-{
- white-space: nowrap;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-/*------------------------------ Begin General Table Styles -------------------------------*/
-
-div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection
-{
- width:98.9%;
-}
-
-div#mainBody div.section div.alert, div#mainBody div.section div.code,
-div#mainBody div.section div.tableSection
-{
- width:100%;
-}
-
-div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code,
-div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert,
-div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection
-{
- width:100%;
-}
-
-div.alert p, div.code p
-{
- margin-top:5;
- margin-bottom:8;
-}
-dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-div.tableSection p
-{
- margin-top:1;
- margin-bottom:4;
-}
-li p
-{
- margin-top:2;
- margin-bottom:2;
-}
-div.seeAlsoNoToggleSection dl
-{
- margin-top:8;
- margin-bottom:1;
- padding-left:1;
-}
-div.seeAlsoNoToggleSection dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-div.section dl
-{
- margin-top:8;
- margin-bottom:1;
- padding-left:1;
-}
-div.section dd p
-{
- margin-top:2;
- margin-bottom:8;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-
-
-/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/
-div.code table
-{
- border: 0;
- font-size: 95%;
- margin-bottom: 5;
- margin-top:-.4em;
- width: 100%
-}
-
-div.code table th
-{
- background: #EFEFF7;
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1;
- color: #000066;
- font-weight: bold;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.code table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
- padding-top: 5;
-}
-/* Applies to the running header text in the first row of the upper table in the
- non-scrolling header region. */
-span#runningHeaderText
-{
- color: #003399;
- font-size: 90%;
- padding-left: 13;
-}
-
-/* Applies to the topic title in the second row of the upper table in the
- non-scrolling header region. */
-span#nsrTitle
-{
- color: #003399;
- font-size: 120%;
- font-weight: 600;
-}
-/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/
-
-
-/* Formats the footer. Currently, the transforms pass in two parameters to the
- footer SSC, but the default footer SSC doesn't use either parameter.
- TODO: Investigate whether the default footer SSC has any impact on doc spec. */
-div#footer
-{
- font-size: 80%;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 8;
- padding-bottom: 6;
- padding-left: 5;
- padding-right: 2;
- width: 100%;
-}
-
-html>body div#footer
-{
- font-size: 80%;
- margin-top: 0;
- margin-bottom: 0;
- margin-left: 0;
- margin-right: 0;
- padding-top: 2;
- padding-bottom: 6;
- padding-left: 5;
- padding-right: 2;
- width: 98%;
-}
-
-/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule.
- TODO: Determine whether this style is required by the doc spec. */
-/*
-hr#footerHR
-{
- border-bottom-color: #EEEEFF;
- border-bottom-style: solid;
- border-bottom-width: 1;
- border-top-color: C8CDDE;
- border-top-style: solid;
- border-top-width: 1;
- height: 3;
- color: #D4DFFF;
-}
-*/
-
-/********************************************************************************************************************
- Collapsible Section Structure
-
- <h1 class="heading"> // Format of the collapsible section text
- <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section
- <img id="xxxToggle"> // Expand/collapse image
- </img>
- </span>
- </h1>
-
- <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default
- </div>
-
-
- The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for
- displaying/hiding the body of the collapsible section.
-********************************************************************************************************************/
-
-/* Applies to the body of a collapsible section */
-div.seeAlsoNoToggleSection
-{
- margin-left:0;
- padding-top: 2;
- padding-bottom: 2;
- padding-left: 0;
- padding-right: 15;
- width: 100%;
-}
-
-div.section
-{
- margin-left:0;
- padding-top: 0;
- padding-bottom: 0;
- padding-left: 16;
- padding-right: 15;
- width: 100%;
-}
-html>body div.section
-{
- margin-left:0;
- padding-top: 2;
- padding-bottom: 2;
- padding-left: 16;
- padding-right: 15;
- width: 97%;
-}
-div.seeSection
-{
- margin-left:0;
- padding-top: 0;
- padding-bottom: 2;
- padding-left: 16;
- padding-right: 15;
- width: 100%;
-}
-
-div.section p
-{
- margin-top: 0 px;
- margin-bottom: 0px;
-}
-
-/*------------------------------ Begin Heading Styles -------------------------------*/
-/* As far as I can tell, only <h1> tags use this class.
- TODO: Decide whether to roll these attributes into the h1.heading style */
-.heading
-{
- font-weight: bold;
- margin-top: 18;
- margin-bottom: 8;
-}
-
-/* All <h1> headings. */
-h1.heading
-{
- color: #003399;
- font-size: 130%;
-}
-
-/* Applies to table titles and subsection titles. */
-.subHeading
-{
- font-weight: bold;
- margin-bottom: 4;
-}
-.procedureSubHeading
-{
- font-weight: bold;
- margin-bottom: 4;
-}
-
-/* Formats the titles of author-generated tables. */
-h3.subHeading
-{
- color: #000000;
- font-size: 120%;
- font-weight:800;
-}
-
-h3.procedureSubHeading
-{
- color: #003399;
- font-size: 120%;
-}
-
-/* Formats the titles of all subsections. */
-h4.subHeading
-{
- color: #000000;
- font-size: 110%;
- font-weight:800;
-}
-span.labelheading, div.labelheading
-{
- font-size:100%;
- color:#003399;
-}
-
-/*------------------------------ End Heading Styles -------------------------------*/
-
-
-/*------------------------------ Begin Image Styles -------------------------------*/
-img.copyCodeImage
-{
- border: 0;
- margin: 1;
- margin-right: 3;
-}
-
-img.downloadCodeImage
-{
- border: 0;
- margin-right: 3;
-}
-
-img.viewCodeImage
-{
- border: 0;
- margin-right: 3;
-}
-
-img.note
-{
- border: 0;
- margin-right: 3;
-}
-/*------------------------------ End Image Styles -------------------------------*/
-
-
-/*------------------------------ Begin General Table Styles -------------------------------*/
-div#mainSection table
-{
- border: 0;
- font-size: 100%;
- width: 98.9%;
- margin-top: 5px;
- margin-bottom: 5px;
-}
-
-div#mainSection table tr
-{
- vertical-align: top;
-}
-
-div#mainSection table th
-{
- background-color: #EFEFF7;
- border-bottom: 1px solid #C8CDDE;
- border-left: 1px none #D5D5D3;
- color: #000066;
- padding-left: 5px;
- padding-right: 5px;
- text-align: left;
-}
-
-div#mainSection table td
-{
- background-color: #F7F7FF;
- border-bottom: 1px solid #D5D5D3;
- border-left: 1px none #D5D5D3;
- padding-left: 5px;
- padding-right: 5px;
-}
-
-/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors,
- Protected Constructors, Public Properties, Protected Properties, and so on). */
-div#mainSection table td.imageCell
-{
- white-space: nowrap;
-}
-/*------------------------------ End General Table Styles -------------------------------*/
-
-
-/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/
-div.code table
-{
- border: 0;
- font-size: 95%;
- margin-bottom: 5;
- width: 100%
-}
-
-div.code table th
-{
- background: #EFEFF7;
- border-bottom-color: #C8CDDE;
- border-bottom-style: solid;
- border-bottom-width: 1;
- color: #000066;
- font-weight: bold;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.code table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
- padding-top: 5;
-}
-/*------------------------------ End Syntax and Snipper Code Block Styles -------------------------------*/
-
-
-/*------------------------------ Begin Note Styles -------------------------------*/
-div.alert table
-{
- border: 0;
- font-size: 100%;
- width: 100%;
-}
-
-div.alert table th
-{
- background: #EFEFF7;
- border-bottom-width: 0;
- color: #000066;
- padding-left: 5;
- padding-right: 5;
-}
-
-div.alert table td
-{
- background: #F7F7FF;
- border-top-color: #FFFFFF;
- border-top-style: solid;
- border-top-width: 1;
- padding-left: 5;
- padding-right: 5;
-}
-
-
-/*------------------------------ End Note Styles -------------------------------*/
-
-
-/* Applies to the copy code text and image. */
-span.copyCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
- float: right;
- display: inline;
- text-align: right;
-}
-
-span.copyCodeOnHover
-{
- color: #E85F17;
- font-size:xx-small;
- font-weight: normal;
- cursor: pointer;
- float: right;
- display: inline;
- text-align: right;
- text-decoration: underline;
-}
-
-.downloadCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-.viewCode
-{
- color: #0000ff;
- font-size: 90%;
- font-weight: normal;
- cursor: pointer;
-}
-
-/* Formats the code in syntax and usage blocks, and the code in non-snipper code blocks. */
-div.code pre
-{
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
- word-wrap: break-word;
- background: #F7F7FF;
-}
-
-/* Formats parameter tooltips. */
-.tip
-{
- color: #0000FF;
- font-style: italic;
- cursor: pointer;
- text-decoration:underline;
-}
-
-/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */
-.math
-{
- font-family: Times New Roman;
- font-size: 125%
-}
-
-/* The sourceCodeList class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-.sourceCodeList
-{
- font-family: Verdana;
- font-size: 90%;
-}
-*/
-
-/* The viewCode class doesn't appear in the transforms.
- TODO: Find out whether this style is needed for the doc spec. */
-/*
-pre.viewCode
-{
- width: 100%;
- overflow: auto;
-}
-*/
-
-/* Dropdown areas */
-
-#devlangsMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #C8CDDE;
- background: #d4dfff;
- padding: 4px;
- font-size: 70%;
-}
-
-#memberOptionsMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #C8CDDE;
- background: #d4dfff;
- padding: 4px;
- font-size: 70%;
-}
-
-#memberFrameworksMenu {
- position: absolute;
- visibility: hidden;
- border-style: solid;
- border-width: 1px;
- border-color: #C8CDDE;
- background: #d4dfff;
- padding: 4px;
- font-size: 70%;
-}
-
-/* Applies to the checkbox labels in the filter drop-downs for devlang, member options, and member platforms. */
-.checkboxLabel
-{
- color: #0000FF;
- cursor: pointer;
- text-decoration:underline;
- padding-bottom:4;
-}
-
-img#devlangsDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Formats the Members Options filter drop-down image. */
-img#memberOptionsDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Formats the Members Platforms filter drop-down image. */
-img#memberFrameworksDropdownImage
-{
- border: 0;
- margin-left: 0;
- vertical-align: middle;
-}
-
-/* Line seperating footer from main body */
-
-div.footerLine {
- margin: 0;
- width: 100%;
- padding-top: 8;
- padding-bottom: 6;
- padding-left: 5;
- padding-right: 2;
-
-}
-
-div.hr1 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #C8CDDE;
- font-size: 1px;
-}
-
-div.hr2 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #D4DFFF;
- font-size: 1px;
-}
-
-div.hr3 {
- margin: 0;
- width: 100%;
- height: 1px;
- padding: 0;
- background: #EEEEFF;
- font-size: 1px;
-}
-
-span.cs {
- display: none;
-}
-
-span.vb {
- display: none;
-}
-
-span.cpp {
- display: none;
-}
-
-span.nu {
- display: inline;
-}
-
-span.code {
- font-family: Monospace, Courier New, Courier;
- font-size: 105%;
- color: #000066;
-}
-span.ui {
- font-weight: bold;
-}
-span.math {
- font-style: italic;
-}
-span.input {
- font-weight: bold;
-}
-span.term {
- font-style: italic;
-}
-span.label
-{
- font-weight: bold;
-}
-span.foreignPhrase {
- font-style: italic;
-}
-span.placeholder {
- font-style: italic;
-}
-span.keyword
-{
- font-weight: bold;
-}
-span.typeparameter
-{
- font-style:italic;
-}
-
-div.caption
-{
- font-weight: bold;
- font-size:100%;
- color:#003399;
-}
-
-/* syntax styles */
-
-div.code span.identifier
-{
- font-weight: bold;
-}
-
-div.code span.keyword
-{
- color: green;
-}
-
-div.code span.parameter
-{
- font-style: italic;
- color: purple;
-}
-
-div.code span.literal
-{
- color: purple;
-}
-
-div.code span.comment
-{
- color: red;
-}
-
-span.syntaxLabel
-{
- color:#0481DA;
- font-weight:bold;
-}
-span.introStyle
-{
- color:DarkGray;
-}
-
-div.seeAlsoStyle
-{
- padding-top:5px;
-
-}
-/* end of syntax styles */
-
-/* Glossary */
-SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;}
-DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;}
-
-
-/* FB STYLES */
-span.feedbackcss
-{
- width:100%;
- margin-left: 5px;
-/*
- border-width: 1px 1px 1px 1px;
- border-style: solid;
- border-color:#C8CDDE;
-*/
-}
-
-div#feedbackarea table
-{
- margin-bottom:0px;
- margin-top:0px;
- margin-left: 0;
- width:300;
- border-width: 0px 0px 0px 0px;
-}
-
-div#feedbackarea table td
-{
- background-color: #D4DFFF;
- font-family:Verdana;
- font-size:100%;
- text-align:center;
- color: #003399;
- border-bottom:0px;
-}
-
-div#feedbackarea p
-{
- font-size:100%;
- background-color: #D4DFFF;
- width: 100%;
- margin-bottom: 0;
- margin-top: 0;
- margin-left: 6;
- margin-right: 5;
-}
-div#feedbackarea H5
-{
- margin-bottom:0.7em;
- margin-left: 6;
-}
-p.feedbackarea
-{
- width:expression(document.body.clientWidth-27);
- font-size:100%;
- background-color: #D4DFFF;
-}
-
-input#submitFeedback
-{
- font-size:105%;
- text-align:center;
- background-color:#D4DFFF;
-}
-
-span#feedbackarea
-{
-/*
- background-color: #D4DFFF;
- color: #003399;
- border-color:#C8CDDE;
-*/
- width:100%;
-}
-
-div#feedbackarea
-{
- background-color: #D4DFFF;
- color: #003399;
- width:100%;
-}
-
-
-
-
+/* * * This file was autogenerated by Styler at 02:02 on 02/15/2003 * * */ + + +/*********************************************************** + * SCRIPT-SUPPORTING STYLES + ***********************************************************/ + +/* Defines the userData cache persistence mechanism. */ +.userDataStyle +{ + behavior: url(#default#userData); +} + +/* Used to save the scroll bar position when navigating away from a page. */ +div.saveHistory +{ + behavior: url(#default#saveHistory); +} + +/* Formats the expand/collapse images for all collapsible regions. */ +img.toggle +{ + border: 0; + margin-right: 5; +} + +/* Formats the Collapse All/Expand All images. */ +img#toggleAllImage +{ + margin-left: 0; + vertical-align: middle; +} + +/* Supports XLinks */ +MSHelp\:link +{ + text-decoration: underline; + color: #0000ff; + hoverColor: #3366ff; + filterString: ; +} + + +/*********************************************************** + * CONTENT PRESENTATION STYLES + ***********************************************************/ + +body +{ + background: #FFFFFF; + color: #000000; + font-family: Verdana; + font-size: medium; + font-style: normal; + font-weight: normal; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + width: 100%; +} + +dl +{ + margin-top: 15; + margin-bottom:5; + padding-left: 1; +} + +dl.authored dt { + font-style: bold; +} + +dd { + margin-left: 0; +} + +ul +{ + margin-top:0; + margin-bottom:0; + margin-left: 17; + list-style-type: disc; +} + +ul ul +{ + margin-bottom: 4; + margin-left: 17; + margin-top: 3; + list-style-type: disc; +} + +ol { + margin-top:0; + margin-bottom:0; + margin-left: 28; + list-style-type: decimal; +} + +ol ol { + margin-bottom: 4; + margin-left: 28; + margin-top: 3; + list-style-type: lower-alpha; +} + +li { + margin-top: 5; + margin-bottom: 5; +} + +p { + margin-top: 10; + margin-bottom: 5; +} + +a[href] { + color: #0000FF; +} + +a:visited { + color: #0000FF; +} + +a:hover { + color: #3366FF; +} + +code +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} + +span.parameter { + font-style: italic; + font-weight:bold; +} + +span.italic { + font-style: italic; +} + +span.selflink { + font-weight: bold; +} + +span.nolink { + +} + +/*********************************************************** + * STRUCTURE PRESENTATION STYLES + ***********************************************************/ + +/* Applies to everything below the non-scrolling header region. */ +div#mainSection +{ + font-size: 62.5%; + width: 100%; +} +html>body #mainSection +{ + font-size:73%; + width: 100%; +} + +/* Applies to everything below the non-scrolling header region, minus the footer. */ +div#mainBody +{ + font-size: 100%; + margin-left: 15; + margin-top: 10; + padding-bottom: 20; +} + +html>body #mainBody +{ + font-size: 93%; + margin-left: 15; + margin-top: 10; + padding-bottom: 20; +} + +/* Adds right padding for all blocks in mainBody */ +div#mainBody p, div#mainBody ol, div#mainBody ul, div#mainBody dl +{ + padding-right: 5; +} + +/*------------------------------ Begin Non-scrolling Header Region Styles -------------------------------*/ +/* Applies to the entire non-scrolling header region. */ +div#header +{ + background-color: #D4DFFF; + padding-top: 0; + padding-bottom: 0; + padding-left: 0; + padding-right: 0; + width: 100%; +} + +/* Applies to both tables in the non-scrolling header region. */ +div#header table +{ + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1; + width: 100%; +} + +/* Applies to cells in both tables in the non-scrolling header region. */ +div#header table td +{ + color: #0000FF; + font-size: 70%; + margin-top: 0; + margin-bottom: 0; + padding-right: 20; +} +/* Applies to second row in the upper table of the non-scrolling header region. */ +div#header table tr#headerTableRow2 td +{ + padding-left: 13px; +} + +/* Applies to the last row in the upper table of the non-scrolling header region. Text + in this row includes See Also, Constructors, Methods, and Properties. */ +div#header table tr#headerTableRow3 td +{ + padding-bottom: 2; + padding-top: 5; + padding-left: 15; +} + +/* Applies to the lower table in the non-scrolling header region. Text in this table + includes Collapse All/Expand All, Language Filter, and Members Options. */ +div#header table#bottomTable +{ + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + text-align: left; + padding-left: 15; +} + +/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors, + Protected Constructors, Public Properties, Protected Properties, and so on). */ +div#mainSection table td.imageCell +{ + white-space: nowrap; +} +/*------------------------------ End General Table Styles -------------------------------*/ + +/*------------------------------ Begin General Table Styles -------------------------------*/ + +div#mainBody div.alert, div#mainBody div.code, div#mainBody div.tableSection +{ + width:98.9%; +} + +div#mainBody div.section div.alert, div#mainBody div.section div.code, +div#mainBody div.section div.tableSection +{ + width:100%; +} + +div#mainBody div.section ul div.alert, div#mainBody div.section ul div.code, +div#mainBody div.section ul div.tableSection, div#mainBody div.section ol div.alert, +div#mainBody div.section ol div.code, div#mainBody div.section ol div.tableSection +{ + width:100%; +} + +div.alert p, div.code p +{ + margin-top:5; + margin-bottom:8; +} +dd p +{ + margin-top:2; + margin-bottom:8; +} +div.tableSection p +{ + margin-top:1; + margin-bottom:4; +} +li p +{ + margin-top:2; + margin-bottom:2; +} +div.seeAlsoNoToggleSection dl +{ + margin-top:8; + margin-bottom:1; + padding-left:1; +} +div.seeAlsoNoToggleSection dd p +{ + margin-top:2; + margin-bottom:8; +} +div.section dl +{ + margin-top:8; + margin-bottom:1; + padding-left:1; +} +div.section dd p +{ + margin-top:2; + margin-bottom:8; +} +/*------------------------------ End General Table Styles -------------------------------*/ + + + +/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/ +div.code table +{ + border: 0; + font-size: 95%; + margin-bottom: 5; + margin-top:-.4em; + width: 100% +} + +div.code table th +{ + background: #EFEFF7; + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1; + color: #000066; + font-weight: bold; + padding-left: 5; + padding-right: 5; +} + +div.code table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; + padding-top: 5; +} +/* Applies to the running header text in the first row of the upper table in the + non-scrolling header region. */ +span#runningHeaderText +{ + color: #003399; + font-size: 90%; + padding-left: 13; +} + +/* Applies to the topic title in the second row of the upper table in the + non-scrolling header region. */ +span#nsrTitle +{ + color: #003399; + font-size: 120%; + font-weight: 600; +} +/*------------------------------ End Non-scrolling Header Region Styles -------------------------------*/ + + +/* Formats the footer. Currently, the transforms pass in two parameters to the + footer SSC, but the default footer SSC doesn't use either parameter. + TODO: Investigate whether the default footer SSC has any impact on doc spec. */ +div#footer +{ + font-size: 80%; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + padding-top: 8; + padding-bottom: 6; + padding-left: 5; + padding-right: 2; + width: 100%; +} + +html>body div#footer +{ + font-size: 80%; + margin-top: 0; + margin-bottom: 0; + margin-left: 0; + margin-right: 0; + padding-top: 2; + padding-bottom: 6; + padding-left: 5; + padding-right: 2; + width: 98%; +} + +/* Unable to find this style in the transforms. The default footer SSC adds a plain horizontal rule. + TODO: Determine whether this style is required by the doc spec. */ +/* +hr#footerHR +{ + border-bottom-color: #EEEEFF; + border-bottom-style: solid; + border-bottom-width: 1; + border-top-color: C8CDDE; + border-top-style: solid; + border-top-width: 1; + height: 3; + color: #D4DFFF; +} +*/ + +/******************************************************************************************************************** + Collapsible Section Structure + + <h1 class="heading"> // Format of the collapsible section text + <span onclick="ExpandCollapse(xxxToggle)"> // Defines the onclick procedure for the expand/collapse section + <img id="xxxToggle"> // Expand/collapse image + </img> + </span> + </h1> + + <div id="xxxSection" class="section"> // The body of the collapsible section; hidden by default + </div> + + + The ExpandCollapse() function is responsible for toggling the expand/collapse image, and for + displaying/hiding the body of the collapsible section. +********************************************************************************************************************/ + +/* Applies to the body of a collapsible section */ +div.seeAlsoNoToggleSection +{ + margin-left:0; + padding-top: 2; + padding-bottom: 2; + padding-left: 0; + padding-right: 15; + width: 100%; +} + +div.section +{ + margin-left:0; + padding-top: 0; + padding-bottom: 0; + padding-left: 16; + padding-right: 15; + width: 100%; +} +html>body div.section +{ + margin-left:0; + padding-top: 2; + padding-bottom: 2; + padding-left: 16; + padding-right: 15; + width: 97%; +} +div.seeSection +{ + margin-left:0; + padding-top: 0; + padding-bottom: 2; + padding-left: 16; + padding-right: 15; + width: 100%; +} + +div.section p +{ + margin-top: 0 px; + margin-bottom: 0px; +} + +/*------------------------------ Begin Heading Styles -------------------------------*/ +/* As far as I can tell, only <h1> tags use this class. + TODO: Decide whether to roll these attributes into the h1.heading style */ +.heading +{ + font-weight: bold; + margin-top: 18; + margin-bottom: 8; +} + +/* All <h1> headings. */ +h1.heading +{ + color: #003399; + font-size: 130%; +} + +/* Applies to table titles and subsection titles. */ +.subHeading +{ + font-weight: bold; + margin-bottom: 4; +} +.procedureSubHeading +{ + font-weight: bold; + margin-bottom: 4; +} + +/* Formats the titles of author-generated tables. */ +h3.subHeading +{ + color: #000000; + font-size: 120%; + font-weight:800; +} + +h3.procedureSubHeading +{ + color: #003399; + font-size: 120%; +} + +/* Formats the titles of all subsections. */ +h4.subHeading +{ + color: #000000; + font-size: 110%; + font-weight:800; +} +span.labelheading, div.labelheading +{ + font-size:100%; + color:#003399; +} + +/*------------------------------ End Heading Styles -------------------------------*/ + + +/*------------------------------ Begin Image Styles -------------------------------*/ +img.copyCodeImage +{ + border: 0; + margin: 1; + margin-right: 3; +} + +img.downloadCodeImage +{ + border: 0; + margin-right: 3; +} + +img.viewCodeImage +{ + border: 0; + margin-right: 3; +} + +img.note +{ + border: 0; + margin-right: 3; +} +/*------------------------------ End Image Styles -------------------------------*/ + + +/*------------------------------ Begin General Table Styles -------------------------------*/ +div#mainSection table +{ + border: 0; + font-size: 100%; + width: 98.9%; + margin-top: 5px; + margin-bottom: 5px; +} + +div#mainSection table tr +{ + vertical-align: top; +} + +div#mainSection table th +{ + background-color: #EFEFF7; + border-bottom: 1px solid #C8CDDE; + border-left: 1px none #D5D5D3; + color: #000066; + padding-left: 5px; + padding-right: 5px; + text-align: left; +} + +div#mainSection table td +{ + background-color: #F7F7FF; + border-bottom: 1px solid #D5D5D3; + border-left: 1px none #D5D5D3; + padding-left: 5px; + padding-right: 5px; +} + +/* Formats the first column--the one that displays icons--in mref list tables (such as Public Constructors, + Protected Constructors, Public Properties, Protected Properties, and so on). */ +div#mainSection table td.imageCell +{ + white-space: nowrap; +} +/*------------------------------ End General Table Styles -------------------------------*/ + + +/*------------------------------ Begin Syntax and Snipper Code Block Styles -------------------------------*/ +div.code table +{ + border: 0; + font-size: 95%; + margin-bottom: 5; + width: 100% +} + +div.code table th +{ + background: #EFEFF7; + border-bottom-color: #C8CDDE; + border-bottom-style: solid; + border-bottom-width: 1; + color: #000066; + font-weight: bold; + padding-left: 5; + padding-right: 5; +} + +div.code table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; + padding-top: 5; +} +/*------------------------------ End Syntax and Snipper Code Block Styles -------------------------------*/ + + +/*------------------------------ Begin Note Styles -------------------------------*/ +div.alert table +{ + border: 0; + font-size: 100%; + width: 100%; +} + +div.alert table th +{ + background: #EFEFF7; + border-bottom-width: 0; + color: #000066; + padding-left: 5; + padding-right: 5; +} + +div.alert table td +{ + background: #F7F7FF; + border-top-color: #FFFFFF; + border-top-style: solid; + border-top-width: 1; + padding-left: 5; + padding-right: 5; +} + + +/*------------------------------ End Note Styles -------------------------------*/ + + +/* Applies to the copy code text and image. */ +span.copyCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; + float: right; + display: inline; + text-align: right; +} + +span.copyCodeOnHover +{ + color: #E85F17; + font-size:xx-small; + font-weight: normal; + cursor: pointer; + float: right; + display: inline; + text-align: right; + text-decoration: underline; +} + +.downloadCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +.viewCode +{ + color: #0000ff; + font-size: 90%; + font-weight: normal; + cursor: pointer; +} + +/* Formats the code in syntax and usage blocks, and the code in non-snipper code blocks. */ +div.code pre +{ + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; + word-wrap: break-word; + background: #F7F7FF; +} + +/* Formats parameter tooltips. */ +.tip +{ + color: #0000FF; + font-style: italic; + cursor: pointer; + text-decoration:underline; +} + +/* Applies to text styled as math. This text is passed as a parameter to the italics SSC definition */ +.math +{ + font-family: Times New Roman; + font-size: 125% +} + +/* The sourceCodeList class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +.sourceCodeList +{ + font-family: Verdana; + font-size: 90%; +} +*/ + +/* The viewCode class doesn't appear in the transforms. + TODO: Find out whether this style is needed for the doc spec. */ +/* +pre.viewCode +{ + width: 100%; + overflow: auto; +} +*/ + +/* Dropdown areas */ + +#devlangsMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #C8CDDE; + background: #d4dfff; + padding: 4px; + font-size: 70%; +} + +#memberOptionsMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #C8CDDE; + background: #d4dfff; + padding: 4px; + font-size: 70%; +} + +#memberFrameworksMenu { + position: absolute; + visibility: hidden; + border-style: solid; + border-width: 1px; + border-color: #C8CDDE; + background: #d4dfff; + padding: 4px; + font-size: 70%; +} + +/* Applies to the checkbox labels in the filter drop-downs for devlang, member options, and member platforms. */ +.checkboxLabel +{ + color: #0000FF; + cursor: pointer; + text-decoration:underline; + padding-bottom:4; +} + +img#devlangsDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Formats the Members Options filter drop-down image. */ +img#memberOptionsDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Formats the Members Platforms filter drop-down image. */ +img#memberFrameworksDropdownImage +{ + border: 0; + margin-left: 0; + vertical-align: middle; +} + +/* Line seperating footer from main body */ + +div.footerLine { + margin: 0; + width: 100%; + padding-top: 8; + padding-bottom: 6; + padding-left: 5; + padding-right: 2; + +} + +div.hr1 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #C8CDDE; + font-size: 1px; +} + +div.hr2 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #D4DFFF; + font-size: 1px; +} + +div.hr3 { + margin: 0; + width: 100%; + height: 1px; + padding: 0; + background: #EEEEFF; + font-size: 1px; +} + +span.cs { + display: none; +} + +span.vb { + display: none; +} + +span.cpp { + display: none; +} + +span.nu { + display: inline; +} + +span.code { + font-family: Monospace, Courier New, Courier; + font-size: 105%; + color: #000066; +} +span.ui { + font-weight: bold; +} +span.math { + font-style: italic; +} +span.input { + font-weight: bold; +} +span.term { + font-style: italic; +} +span.label +{ + font-weight: bold; +} +span.foreignPhrase { + font-style: italic; +} +span.placeholder { + font-style: italic; +} +span.keyword +{ + font-weight: bold; +} +span.typeparameter +{ + font-style:italic; +} + +div.caption +{ + font-weight: bold; + font-size:100%; + color:#003399; +} + +/* syntax styles */ + +div.code span.identifier +{ + font-weight: bold; +} + +div.code span.keyword +{ + color: green; +} + +div.code span.parameter +{ + font-style: italic; + color: purple; +} + +div.code span.literal +{ + color: purple; +} + +div.code span.comment +{ + color: red; +} + +span.syntaxLabel +{ + color:#0481DA; + font-weight:bold; +} +span.introStyle +{ + color:DarkGray; +} + +div.seeAlsoStyle +{ + padding-top:5px; + +} +/* end of syntax styles */ + +/* Glossary */ +SPAN.clsGlossary {cursor: default; color: #509950; font-weight: bold;} +DIV.clsTooltip {border: 1px solid black; padding: 2px; position: absolute; top: 0; left: 0; display: none; background-color: #FFFFAA; color: black; font-size: 8pt; font-family: Arial;} + + +/* FB STYLES */ +span.feedbackcss +{ + width:100%; + margin-left: 5px; +/* + border-width: 1px 1px 1px 1px; + border-style: solid; + border-color:#C8CDDE; +*/ +} + +div#feedbackarea table +{ + margin-bottom:0px; + margin-top:0px; + margin-left: 0; + width:300; + border-width: 0px 0px 0px 0px; +} + +div#feedbackarea table td +{ + background-color: #D4DFFF; + font-family:Verdana; + font-size:100%; + text-align:center; + color: #003399; + border-bottom:0px; +} + +div#feedbackarea p +{ + font-size:100%; + background-color: #D4DFFF; + width: 100%; + margin-bottom: 0; + margin-top: 0; + margin-left: 6; + margin-right: 5; +} +div#feedbackarea H5 +{ + margin-bottom:0.7em; + margin-left: 6; +} +p.feedbackarea +{ + width:expression(document.body.clientWidth-27); + font-size:100%; + background-color: #D4DFFF; +} + +input#submitFeedback +{ + font-size:105%; + text-align:center; + background-color:#D4DFFF; +} + +span#feedbackarea +{ +/* + background-color: #D4DFFF; + color: #003399; + border-color:#C8CDDE; +*/ + width:100%; +} + +div#feedbackarea +{ + background-color: #D4DFFF; + color: #003399; + width:100%; +} + + + + diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config index 9c38929..5458268 100644 --- a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config +++ b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config @@ -1,123 +1,123 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\Vs2005\transforms\skeleton_conceptual.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/topic" key="@id">
- <data files=".\DdueXml\*.xml" />
- </index>
- <copy name="comments" source="/topic" target="/document" />
- </component>
-
- <!-- resolve tokens -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
- <content file="%DXROOT%\Data\tokens.xml" />
- <replace elements="/*//ddue:token" item="string(.)" />
- </component>
-
- <!-- copy in metadata keywords -->
- <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" />
- </component>
-
- <!-- copy in metadata attributes -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="metadata" value="/metadata/topic" key="@id">
- <data files=".\ExtractedFiles\*.ContentMetadata.xml" />
- </index>
- <index name="version" value="/metadata/topic" key="@id">
- <data files="Version.xml" />
- </index>
- <copy name="metadata" source="*" target="/document/metadata" />
- <copy name="metadata" key="string('*')" source="*" target="/document/metadata" />
- <copy name="version" key="string('*')" source="*" target="/document/metadata" missing-target="error" />
- </component>
-
- <!-- Copy in metadata project settings -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="projectSettings" value="/*/item" key="@id">
- <data files=".\ExtractedFiles\*projectsettings.xml" />
- </index>
- <copy name="projectSettings" key="string('PBM_FileVersion')" source="." target="/document/metadata" />
- </component>
-
- <!-- Resolve code snippets -->
- <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <examples file="%DXROOT%\Data\CodeSnippet.xml" />
- <colors language="VisualBasic">
- <color pattern="^\s*'[^\r\n]*" class="comment" />
- <color pattern="\"[^"\r\n]*\"" class="literal" />
- <color pattern="\b((AddHandler)|(AddressOf)|(As)|(Boolean)|(ByRef)|(ByVal)|(Case)|(Catch)|(Char)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(Let)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Return)|(Select)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(String)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(Where)|(While)|(With)|(WriteOnly))\b" class="keyword" />
- </colors>
- <colors language="CSharp">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\"[^"\r\n]*\"" class="literal" />
- <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(extern)|(false)|(finally)|(float)|(for)|(foreach)|(from)|(get)|(group)|(if)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(namespace)|(new)|(null)|(on)|(orderby)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(select)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" />
- </colors>
- <colors language="ManagedCPlusPlus">
- <color pattern="/\*(.|\n)+?\*/" class="comment" />
- <color pattern="//[^\r\n]*" class="comment" />
- <color pattern="\"[^"\r\n]*\"" class="literal" />
- <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(double)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
- </colors>
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\Vs2005\transforms\main_conceptual.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />
- </argument>
- </transform>
- </component>
-
- <!-- resolve art links -->
- <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" />
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\Vs2005\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\VS2005\content\feedBack_content.xml" />
- <content file="%DXROOT%\Presentation\Vs2005\content\conceptual_content.xml" />
- </component>
-
- <!-- resolve conceptual links -->
- <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base=".\XmlComp" type="local" />
- <targets base="%DXROOT%\Data\XmlComp" type="index"/>
- </component>
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DXROOT%\Data\Reflection\" recurse="true" files="*.xml" type="index" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" />
- </component>
-
- <!-- record file creation events -->
- <component type="Microsoft.Ddue.Tools.HxfGeneratorComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll" input="%DXROOT%\Presentation\vs2005\seed.HxF" output=".\Output\test.HxF" />
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\Vs2005\transforms\skeleton_conceptual.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/topic" key="@id"> + <data files=".\DdueXml\*.xml" /> + </index> + <copy name="comments" source="/topic" target="/document" /> + </component> + + <!-- resolve tokens --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" /> + <content file="%DXROOT%\Data\tokens.xml" /> + <replace elements="/*//ddue:token" item="string(.)" /> + </component> + + <!-- copy in metadata keywords --> + <component type="Microsoft.Ddue.Tools.CopyFromFilesComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy base=".\XmlComp" file="concat($key,'.cmp.xml')" source="/metadata/topic[@id=$key]/*" target="/document/metadata" /> + </component> + + <!-- copy in metadata attributes --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="metadata" value="/metadata/topic" key="@id"> + <data files=".\ExtractedFiles\*.ContentMetadata.xml" /> + </index> + <index name="version" value="/metadata/topic" key="@id"> + <data files="Version.xml" /> + </index> + <copy name="metadata" source="*" target="/document/metadata" /> + <copy name="metadata" key="string('*')" source="*" target="/document/metadata" /> + <copy name="version" key="string('*')" source="*" target="/document/metadata" missing-target="error" /> + </component> + + <!-- Copy in metadata project settings --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="projectSettings" value="/*/item" key="@id"> + <data files=".\ExtractedFiles\*projectsettings.xml" /> + </index> + <copy name="projectSettings" key="string('PBM_FileVersion')" source="." target="/document/metadata" /> + </component> + + <!-- Resolve code snippets --> + <component type="Microsoft.Ddue.Tools.ExampleComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <examples file="%DXROOT%\Data\CodeSnippet.xml" /> + <colors language="VisualBasic"> + <color pattern="^\s*'[^\r\n]*" class="comment" /> + <color pattern="\"[^"\r\n]*\"" class="literal" /> + <color pattern="\b((AddHandler)|(AddressOf)|(As)|(Boolean)|(ByRef)|(ByVal)|(Case)|(Catch)|(Char)|(Class)|(Const)|(Continue)|(Delegate)|(Dim)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(Enum)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(Let)|(Loop)|(Me)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(Namespace)|(New)|(Next)|(Nothing)|(NotInheritable)|(NotOverrideable)|(Of)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(RemoveHandler)|(Return)|(Select)|(Set)|(Shadows)|(Shared)|(Static)|(Step)|(String)|(Structure)|(Sub)|(Then)|(Throw)|(To)|(True)|(Try)|(Until)|(Using)|(When)|(Where)|(While)|(With)|(WriteOnly))\b" class="keyword" /> + </colors> + <colors language="CSharp"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\"[^"\r\n]*\"" class="literal" /> + <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(extern)|(false)|(finally)|(float)|(for)|(foreach)|(from)|(get)|(group)|(if)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(namespace)|(new)|(null)|(on)|(orderby)|(out)|(override)|(params)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sealed)|(select)|(set)|(static)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(using)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" /> + </colors> + <colors language="ManagedCPlusPlus"> + <color pattern="/\*(.|\n)+?\*/" class="comment" /> + <color pattern="//[^\r\n]*" class="comment" /> + <color pattern="\"[^"\r\n]*\"" class="literal" /> + <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(delegate)|(delete)|(do)|(double)|(else)|(enum)|(event)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(namespace)|(new)|(noinline)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(sealed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(throw)|(true)|(try)|(typedef)|(union)|(using)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" /> + </colors> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\Vs2005\transforms\main_conceptual.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" /> + </argument> + </transform> + </component> + + <!-- resolve art links --> + <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets input="%DXROOT%\Data\ArtStore" output=".\Output\media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" /> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\Vs2005\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\VS2005\content\feedBack_content.xml" /> + <content file="%DXROOT%\Presentation\Vs2005\content\conceptual_content.xml" /> + </component> + + <!-- resolve conceptual links --> + <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base=".\XmlComp" type="local" /> + <targets base="%DXROOT%\Data\XmlComp" type="index"/> + </component> + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DXROOT%\Data\Reflection\" recurse="true" files="*.xml" type="index" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base=".\Output\html" path="concat($key,'.htm')" indent="true" omit-xml-declaration="true" /> + </component> + + <!-- record file creation events --> + <component type="Microsoft.Ddue.Tools.HxfGeneratorComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll" input="%DXROOT%\Presentation\vs2005\seed.HxF" output=".\Output\test.HxF" /> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config index 3e6133a..237a27e 100644 --- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config +++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config @@ -1,140 +1,140 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in explicitInterfaceImplemented reflection data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" />
- <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/parameters/parameter//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements//element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in comments for the member's declaring type. -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\vs2005\Transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <!--<language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />-->
- <language label="JavaScript" name="JavaScript" style="vb" />
- </argument>
- </transform>
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" />
- </component>
-
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" />
- <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" />
- <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="true" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in explicitInterfaceImplemented reflection data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" /> + <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" /> + </component> + </components> + </component> + + <!-- Copy in parameter data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/parameters/parameter//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements//element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in comments for the member's declaring type. --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" /> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\vs2005\Transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <!--<language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" />--> + <language label="JavaScript" name="JavaScript" style="vb" /> + </argument> + </transform> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" /> + </component> + + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" /> + <targets base="%DxTempDir%\ReflectionData\Dependencies" recurse="true" files="*.xml" type="index" /> + <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base ="%DxTempDir%\Output\html" path="concat(/html/head/meta[@name='guid']/@content,'.htm')" indent="true" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config index 8c0191a..e4b7612 100644 --- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config +++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config @@ -1,154 +1,154 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in explicitInterfaceImplemented reflection data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" />
- <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/parameters/parameter//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements//element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in comments for the member's declaring type. -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\vs2005\Transforms\web_reference.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <!--<language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />-->
- <language label="JavaScript" name="JavaScript" style="vb" />
- </argument>
- </transform>
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\web_content.xml" />
- </component>
-
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll" href-format="{0}.aspx">
- <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" />
- <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" />
- </component>
-
- <!-- save the meta data needed to build toc -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DxRoot%\ProductionTools\BuildComponents.dll">
- <save base="%DxTempDir%\TopicInfo"
- path="concat(/root/@fileName, '.xml')"
- indent="true"
- omit-xml-declaration="true"
- select="/root/metadata" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base ="%DxWebOutputDir%\api"
- path="concat(/root/@fileName,'.aspx')"
- indent="true"
- omit-root="true"
- omit-xml-declaration="true"
- select="/root/content/child::node()" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%DxTempDir%\ReflectionData" recurse="true" files="*.xml" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in explicitInterfaceImplemented reflection data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" /> + <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" /> + </component> + </components> + </component> + + <!-- Copy in parameter data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/parameters/parameter//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements//element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in comments for the member's declaring type. --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" /> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\vs2005\Transforms\web_reference.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <!--<language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" />--> + <language label="JavaScript" name="JavaScript" style="vb" /> + </argument> + </transform> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\web_content.xml" /> + </component> + + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll" href-format="{0}.aspx"> + <targets base="%DxTempDir%\ReflectionData\Framework" recurse="true" files="*.xml" type="msdn" /> + <targets files="%DxTempDir%\ReflectionData\targets.xml" type="local" /> + </component> + + <!-- save the meta data needed to build toc --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DxRoot%\ProductionTools\BuildComponents.dll"> + <save base="%DxTempDir%\TopicInfo" + path="concat(/root/@fileName, '.xml')" + indent="true" + omit-xml-declaration="true" + select="/root/metadata" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base ="%DxWebOutputDir%\api" + path="concat(/root/@fileName,'.aspx')" + indent="true" + omit-root="true" + omit-xml-declaration="true" + select="/root/content/child::node()" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config index 95a0b6f..8522fd9 100644 --- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config +++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config @@ -1,141 +1,141 @@ -<configuration>
- <dduetools>
- <builder>
- <components>
-
- <!-- Create skeleton document -->
- <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" />
- <copy source="/*" target="/" />
- </component>
-
- <!-- Copy in reflection data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="reflection" value="/reflection/apis/api" key="@id" cache="10">
- <data base="%FxReflectionData%" recurse="true" files="*.xml" />
- <data files="%ReflectionXmlFile%" />
- </index>
- <copy name="reflection" source="*" target="/document/reference" />
- </component>
-
- <!-- Copy in container data -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
- </component>
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/containers//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in explicitInterfaceImplemented reflection data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" />
- <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/parameters/parameter//type/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" />
- </component>
- </components>
- </component>
-
- <!-- Generate syntax -->
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" />
- <then>
- <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <syntax input="/document/reference" output="/document/syntax" />
- <generators>
- <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
- </generators>
- </component>
- </then>
- </component>
-
- <!-- Copy in comments -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <index name="comments" value="/doc/members/member" key="@name" cache="100">
- <data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" recurse="false" files="*.xml" />
- <data files="%DocumentationFile%" />
- </index>
- <copy name="comments" source="*" target="/document/comments" />
- </component>
-
- <!-- Copy in reflection data and comments for members -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <variable expression="/document/reference/elements//element/@api" />
- <components>
- <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" />
- <then>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </then>
- </component>
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" />
- </component>
- </components>
- </component>
-
- <!-- Copy in comments for the member's declaring type. -->
- <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" />
- </component>
-
- <!-- transform -->
- <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <transform file="%DXROOT%\Presentation\vs2005\Transforms\main_sandcastle.xsl">
- <argument key="metadata" value="true" />
- <argument key="languages">
- <language label="VisualBasic" name="VisualBasic" style="vb" />
- <language label="CSharp" name="CSharp" style="cs" />
- <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" />
- <!--<language label="JSharp" name="JSharp" style="cs" />
- <language label="JScript" name="JScript" style="cs" />-->
- <language label="JavaScript" name="JavaScript" style="vb" />
- </argument>
- </transform>
- </component>
-
- <!-- resolve shared content -->
- <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" />
- <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
- <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" />
- </component>
-
-
- <!-- resolve reference links -->
- <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <targets base="%FxReflectionData%" recurse="true" files="*.xml" type="msdn" />
- <targets files="%ReflectionXmlFile%" type="local" />
- </component>
-
- <!-- save the result -->
- <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
- <save base ="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="true" omit-xml-declaration="true" />
- </component>
-
- </components>
- </builder>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <builder> + <components> + + <!-- Create skeleton document --> + <component type="Microsoft.Ddue.Tools.CopyFromFileComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <data file="%DXROOT%\Presentation\vs2005\Transforms\skeleton.xml" /> + <copy source="/*" target="/" /> + </component> + + <!-- Copy in reflection data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="reflection" value="/reflection/apis/api" key="@id" cache="10"> + <data base="%FxReflectionData%" recurse="true" files="*.xml" /> + <data files="%ReflectionXmlFile%" /> + </index> + <copy name="reflection" source="*" target="/document/reference" /> + </component> + + <!-- Copy in container data --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" key="string(/document/reference/containers/namespace/@api)" source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" /> + </component> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/containers//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata|typedata|templates|attributes" target="/document/reference/containers//type[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in explicitInterfaceImplemented reflection data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/implements//*[@api=$key and not(apidata)]" /> + <copy name="reflection" source="templates" target="/document/reference/implements//*[@api=$key and not(apidata) and not(specialization)]" /> + </component> + </components> + </component> + + <!-- Copy in parameter data --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/parameters/parameter//type/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="apidata" target="/document/reference/parameters/parameter//type[boolean(@api=$key) and not(apidata)]" /> + </component> + </components> + </component> + + <!-- Generate syntax --> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(starts-with($key,'Overload:') or starts-with($key,'R:'))" /> + <then> + <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <syntax input="/document/reference" output="/document/syntax" /> + <generators> + <generator type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + <generator type="Microsoft.Ddue.Tools.ScriptSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" /> + </generators> + </component> + </then> + </component> + + <!-- Copy in comments --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <index name="comments" value="/doc/members/member" key="@name" cache="100"> + <data base="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727" recurse="false" files="*.xml" /> + <data files="%DocumentationFile%" /> + </index> + <copy name="comments" source="*" target="/document/comments" /> + </component> + + <!-- Copy in reflection data and comments for members --> + <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <variable expression="/document/reference/elements//element/@api" /> + <components> + <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <if condition="not(/document/reference/elements/element[@api=$key]/apidata)" /> + <then> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="reflection" source="*[not(self::elements)]" target="/document/reference/elements//element[@api=$key]" /> + </component> + </then> + </component> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" source="summary|overloads" target="/document/reference/elements//element[@api=$key]" /> + </component> + </components> + </component> + + <!-- Copy in comments for the member's declaring type. --> + <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary" target="/document/reference/containers" /> + </component> + + <!-- transform --> + <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <transform file="%DXROOT%\Presentation\vs2005\Transforms\main_sandcastle.xsl"> + <argument key="metadata" value="true" /> + <argument key="languages"> + <language label="VisualBasic" name="VisualBasic" style="vb" /> + <language label="CSharp" name="CSharp" style="cs" /> + <language label="ManagedCPlusPlus" name="ManagedCPlusPlus" style="cpp" /> + <!--<language label="JSharp" name="JSharp" style="cs" /> + <language label="JScript" name="JScript" style="cs" />--> + <language label="JavaScript" name="JavaScript" style="vb" /> + </argument> + </transform> + </component> + + <!-- resolve shared content --> + <component type="Microsoft.Ddue.Tools.SharedContentComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <content file="%DXROOT%\Presentation\vs2005\content\shared_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\reference_content.xml" /> + <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" /> + <content file="%DXROOT%\Presentation\vs2005\content\feedback_content.xml" /> + </component> + + + <!-- resolve reference links --> + <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <targets base="%FxReflectionData%" recurse="true" files="*.xml" type="msdn" /> + <targets files="%ReflectionXmlFile%" type="local" /> + </component> + + <!-- save the result --> + <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll"> + <save base ="%OutputHtml%" path="concat(/html/head/meta[@name='file']/@content,'.htm')" indent="true" omit-xml-declaration="true" /> + </component> + + </components> + </builder> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/Presentation/vs2005/copyOutput.bat b/tools/Sandcastle/Presentation/vs2005/copyOutput.bat index 7cf1852..944c7f6 100644 --- a/tools/Sandcastle/Presentation/vs2005/copyOutput.bat +++ b/tools/Sandcastle/Presentation/vs2005/copyOutput.bat @@ -1,11 +1,11 @@ -if not exist Output mkdir Output
-if not exist Output\html mkdir Output\html
-if not exist Output\icons mkdir Output\icons
-if not exist Output\scripts mkdir Output\scripts
-if not exist Output\styles mkdir Output\styles
-if not exist Output\media mkdir Output\media
-copy "%DXROOT%\Presentation\vs2005\icons\*" Output\icons
-copy "%DXROOT%\Presentation\vs2005\scripts\*" Output\scripts
-copy "%DXROOT%\Presentation\vs2005\styles\*" Output\styles
-if not exist Intellisense mkdir Intellisense
-
+if not exist Output mkdir Output +if not exist Output\html mkdir Output\html +if not exist Output\icons mkdir Output\icons +if not exist Output\scripts mkdir Output\scripts +if not exist Output\styles mkdir Output\styles +if not exist Output\media mkdir Output\media +copy "%DXROOT%\Presentation\vs2005\icons\*" Output\icons +copy "%DXROOT%\Presentation\vs2005\scripts\*" Output\scripts +copy "%DXROOT%\Presentation\vs2005\styles\*" Output\styles +if not exist Intellisense mkdir Intellisense + diff --git a/tools/Sandcastle/Presentation/vs2005/seed.HxF b/tools/Sandcastle/Presentation/vs2005/seed.HxF index 346434c..e56836f 100644 --- a/tools/Sandcastle/Presentation/vs2005/seed.HxF +++ b/tools/Sandcastle/Presentation/vs2005/seed.HxF @@ -1,3 +1,3 @@ -Styles/Presentation.css
-Scripts/*.js
-Icons/*.gif
+Styles/Presentation.css +Scripts/*.js +Icons/*.gif diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl index 8ce6de1..c878e22 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl @@ -1,227 +1,227 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:template name="autogenSeeAlsoLinks">
-
- <!-- a link to the containing type on all list and member topics -->
- <xsl:if test="($group='member' or $group='list')">
- <xsl:variable name="typeTopicId">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/@api"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <div class="seeAlsoStyle">
- <referenceLink target="{$typeTopicId}" display-target="format">
- <include item="SeeAlsoTypeLinkText">
- <parameter>{0}</parameter>
- <parameter>
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </referenceLink>
- </div>
- <!--
- <div class="seeAlsoStyle">
- <include item="SeeAlsoTypeLinkText">
- <parameter>
- <referenceLink target="{$typeTopicId}" />
- </parameter>
- <parameter>
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </div>
- -->
- </xsl:if>
-
- <!-- a link to the type's All Members list -->
- <xsl:variable name="allMembersTopicId">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@allMembersTopicId">
- <xsl:value-of select="/document/reference/topicdata/@allMembersTopicId"/>
- </xsl:when>
- <xsl:when test="$group='member' or ($group='list' and $subgroup='overload')">
- <xsl:value-of select="/document/reference/containers/type/topicdata/@allMembersTopicId"/>
- </xsl:when>
- </xsl:choose>
- </xsl:variable>
- <xsl:if test="normalize-space($allMembersTopicId) and not($allMembersTopicId=$key)">
- <div class="seeAlsoStyle">
- <referenceLink target="{$allMembersTopicId}" display-target="format">
- <include item="SeeAlsoMembersLinkText">
- <parameter>{0}</parameter>
- </include>
- </referenceLink>
- </div>
- <!--
- <div class="seeAlsoStyle">
- <include item="SeeAlsoMembersLinkText">
- <parameter>
- <referenceLink target="{$allMembersTopicId}" />
- </parameter>
- </include>
- </div>
- -->
- </xsl:if>
-
- <xsl:if test="/document/reference/memberdata/@overload">
- <!-- a link to the overload topic -->
- <div class="seeAlsoStyle">
- <referenceLink target="{/document/reference/memberdata/@overload}" display-target="format" show-parameters="false">
- <include item="SeeAlsoOverloadLinkText">
- <parameter>{0}</parameter>
- </include>
- </referenceLink>
- </div>
- </xsl:if>
-
- <!-- a link to the namespace topic -->
- <xsl:variable name="namespaceId">
- <xsl:value-of select="/document/reference/containers/namespace/@api"/>
- </xsl:variable>
- <xsl:if test="normalize-space($namespaceId)">
- <div class="seeAlsoStyle">
- <referenceLink target="{$namespaceId}" display-target="format">
- <include item="SeeAlsoNamespaceLinkText">
- <parameter>{0}</parameter>
- </include>
- </referenceLink>
- </div>
- <!--
- <div class="seeAlsoStyle">
- <include item="SeeAlsoNamespaceLinkText">
- <parameter>
- <referenceLink target="{$namespaceId}" />
- </parameter>
- </include>
- </div>
- -->
- </xsl:if>
-
- </xsl:template>
-
- <xsl:variable name="typeId">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata[@group='api'] and /document/reference/apidata[@group='type']">
- <xsl:value-of select="$key"/>
- </xsl:when>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/@api"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- indent by 2*n spaces -->
- <xsl:template name="indent">
- <xsl:param name="count" />
- <xsl:if test="$count > 1">
- <xsl:text>  </xsl:text>
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$count - 1" />
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Gets the substring after the last occurence of a period in a given string -->
- <xsl:template name="subString">
- <xsl:param name="name" />
-
- <xsl:choose>
- <xsl:when test="contains($name, '.')">
- <xsl:call-template name="subString">
- <xsl:with-param name="name" select="substring-after($name, '.')" />
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name" />
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template name="codeSection">
- <xsl:param name="codeLang" />
- <div class="code">
- <span codeLanguage="{$codeLang}">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th>
- <xsl:variable name="codeLangLC" select="translate($codeLang,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/>
- <xsl:if test="$codeLangLC='visualbasic' or $codeLangLC='csharp' or $codeLangLC='managedcplusplus' or $codeLangLC='jsharp' or $codeLangLC='jscript'">
- <include item="{$codeLang}"/>
- </xsl:if>
- <xsl:text> </xsl:text>
- </th>
- <th>
- <span class="copyCode" onclick="CopyCode(this)" onkeypress="CopyCode_CheckKey(this, event)" onmouseover="ChangeCopyCodeIcon(this)" onmouseout="ChangeCopyCodeIcon(this)" tabindex="0">
- <img class="copyCodeImage" name="ccImage" align="absmiddle">
- <includeAttribute name="title" item="copyImage" />
- <includeAttribute name="src" item="iconPath">
- <parameter>copycode.gif</parameter>
- </includeAttribute>
- </img>
- <include item="copyCode"/>
- </span>
- </th>
- </tr>
- <tr>
- <td colspan="2">
- <!-- alansm: fix bug 321956 - use apply-templates rather than copy-of, so ddue:codeFeaturedElement nodes are transformed -->
- <pre><xsl:text/><xsl:apply-templates/><!--<xsl:copy-of select="node()"/>--><xsl:text/></pre>
- </td>
- </tr>
- </table>
- </span>
- </div>
-
- </xsl:template>
-
- <!-- sireeshm: fix bug 361746 - use copy-of, so that span class="keyword", "literal" and "comment" nodes are copied to preserve code colorization in snippets -->
- <xsl:template match="ddue:span[@class='keyword' or @class='literal' or @class='comment']">
- <xsl:copy-of select="."/>
- </xsl:template>
-
- <xsl:template name="nonScrollingRegionTypeLinks">
- <include item="nonScrollingTypeLinkText">
- <parameter>{0}</parameter>
- <parameter>
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </xsl:template>
-
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:template name="autogenSeeAlsoLinks"> + + <!-- a link to the containing type on all list and member topics --> + <xsl:if test="($group='member' or $group='list')"> + <xsl:variable name="typeTopicId"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/@api"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <div class="seeAlsoStyle"> + <referenceLink target="{$typeTopicId}" display-target="format"> + <include item="SeeAlsoTypeLinkText"> + <parameter>{0}</parameter> + <parameter> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </referenceLink> + </div> + <!-- + <div class="seeAlsoStyle"> + <include item="SeeAlsoTypeLinkText"> + <parameter> + <referenceLink target="{$typeTopicId}" /> + </parameter> + <parameter> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </div> + --> + </xsl:if> + + <!-- a link to the type's All Members list --> + <xsl:variable name="allMembersTopicId"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@allMembersTopicId"> + <xsl:value-of select="/document/reference/topicdata/@allMembersTopicId"/> + </xsl:when> + <xsl:when test="$group='member' or ($group='list' and $subgroup='overload')"> + <xsl:value-of select="/document/reference/containers/type/topicdata/@allMembersTopicId"/> + </xsl:when> + </xsl:choose> + </xsl:variable> + <xsl:if test="normalize-space($allMembersTopicId) and not($allMembersTopicId=$key)"> + <div class="seeAlsoStyle"> + <referenceLink target="{$allMembersTopicId}" display-target="format"> + <include item="SeeAlsoMembersLinkText"> + <parameter>{0}</parameter> + </include> + </referenceLink> + </div> + <!-- + <div class="seeAlsoStyle"> + <include item="SeeAlsoMembersLinkText"> + <parameter> + <referenceLink target="{$allMembersTopicId}" /> + </parameter> + </include> + </div> + --> + </xsl:if> + + <xsl:if test="/document/reference/memberdata/@overload"> + <!-- a link to the overload topic --> + <div class="seeAlsoStyle"> + <referenceLink target="{/document/reference/memberdata/@overload}" display-target="format" show-parameters="false"> + <include item="SeeAlsoOverloadLinkText"> + <parameter>{0}</parameter> + </include> + </referenceLink> + </div> + </xsl:if> + + <!-- a link to the namespace topic --> + <xsl:variable name="namespaceId"> + <xsl:value-of select="/document/reference/containers/namespace/@api"/> + </xsl:variable> + <xsl:if test="normalize-space($namespaceId)"> + <div class="seeAlsoStyle"> + <referenceLink target="{$namespaceId}" display-target="format"> + <include item="SeeAlsoNamespaceLinkText"> + <parameter>{0}</parameter> + </include> + </referenceLink> + </div> + <!-- + <div class="seeAlsoStyle"> + <include item="SeeAlsoNamespaceLinkText"> + <parameter> + <referenceLink target="{$namespaceId}" /> + </parameter> + </include> + </div> + --> + </xsl:if> + + </xsl:template> + + <xsl:variable name="typeId"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata[@group='api'] and /document/reference/apidata[@group='type']"> + <xsl:value-of select="$key"/> + </xsl:when> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/topicdata/@typeTopicId"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/@api"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- indent by 2*n spaces --> + <xsl:template name="indent"> + <xsl:param name="count" /> + <xsl:if test="$count > 1"> + <xsl:text>  </xsl:text> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$count - 1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- Gets the substring after the last occurence of a period in a given string --> + <xsl:template name="subString"> + <xsl:param name="name" /> + + <xsl:choose> + <xsl:when test="contains($name, '.')"> + <xsl:call-template name="subString"> + <xsl:with-param name="name" select="substring-after($name, '.')" /> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name" /> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template name="codeSection"> + <xsl:param name="codeLang" /> + <div class="code"> + <span codeLanguage="{$codeLang}"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th> + <xsl:variable name="codeLangLC" select="translate($codeLang,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/> + <xsl:if test="$codeLangLC='visualbasic' or $codeLangLC='csharp' or $codeLangLC='managedcplusplus' or $codeLangLC='jsharp' or $codeLangLC='jscript'"> + <include item="{$codeLang}"/> + </xsl:if> + <xsl:text> </xsl:text> + </th> + <th> + <span class="copyCode" onclick="CopyCode(this)" onkeypress="CopyCode_CheckKey(this, event)" onmouseover="ChangeCopyCodeIcon(this)" onmouseout="ChangeCopyCodeIcon(this)" tabindex="0"> + <img class="copyCodeImage" name="ccImage" align="absmiddle"> + <includeAttribute name="title" item="copyImage" /> + <includeAttribute name="src" item="iconPath"> + <parameter>copycode.gif</parameter> + </includeAttribute> + </img> + <include item="copyCode"/> + </span> + </th> + </tr> + <tr> + <td colspan="2"> + <!-- alansm: fix bug 321956 - use apply-templates rather than copy-of, so ddue:codeFeaturedElement nodes are transformed --> + <pre><xsl:text/><xsl:apply-templates/><!--<xsl:copy-of select="node()"/>--><xsl:text/></pre> + </td> + </tr> + </table> + </span> + </div> + + </xsl:template> + + <!-- sireeshm: fix bug 361746 - use copy-of, so that span class="keyword", "literal" and "comment" nodes are copied to preserve code colorization in snippets --> + <xsl:template match="ddue:span[@class='keyword' or @class='literal' or @class='comment']"> + <xsl:copy-of select="."/> + </xsl:template> + + <xsl:template name="nonScrollingRegionTypeLinks"> + <include item="nonScrollingTypeLinkText"> + <parameter>{0}</parameter> + <parameter> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl index 68c58d8..099857d 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl @@ -1,495 +1,495 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="globalTemplates.xsl"/>
- <xsl:template name="upperBodyStuff">
- <input type="hidden" id="userDataCache" class="userDataStyle"/>
- <input type="hidden" id="hiddenScrollOffset"/>
-
- <xsl:call-template name="commonImages"/>
-
- <xsl:call-template name="bodyHeader"/>
-
- </xsl:template>
-
- <xsl:template name="bodyHeader">
- <div id="header">
- <xsl:call-template name="bodyHeaderTopTable"/>
-
- <xsl:call-template name="bodyHeaderBottomTable"/>
- </div>
- </xsl:template>
-
- <xsl:template name="bodyHeaderBottomTable">
- <table id="bottomTable" cellpadding="0" cellspacing="0">
- <tr id="headerTableRow1">
- <td align="left">
- <span id="runningHeaderText">
- <xsl:call-template name="runningHeader" />
- </span>
- </td>
- </tr>
- <tr id="headerTableRow2">
- <td align="left">
- <span id="nsrTitle">
- <include item="nsrTitle">
- <parameter>
- <xsl:call-template name="topicTitleDecorated"/>
- </parameter>
- </include>
- </span>
- </td>
- </tr>
- <tr id="headerTableRow3">
- <td align="left">
- <xsl:call-template name="headerRowLinks"/>
- </td>
- <!--<td align="right">
- <span id="headfb" class="feedbackhead"></span>
- </td>-->
- </tr>
- </table>
- <table id="gradientTable">
- <tr>
- <td class="nsrBottom">
- <includeAttribute name="background" item="iconPath">
- <parameter>gradient.gif</parameter>
- </includeAttribute>
- </td>
- </tr>
- </table>
- </xsl:template>
-
- <xsl:template name="memberTableLink">
- <xsl:param name="headerGroup" />
- <xsl:variable name="sectionId">
- <xsl:value-of select="concat($headerGroup, 'TableToggle')"/>
- </xsl:variable>
- <include item="nsrLinkSeparator"/>
- <a href="#{$sectionId}" onclick="OpenSection({$sectionId})">
- <include item="{$headerGroup}Table"/>
- </a>
- <xsl:text> </xsl:text>
- </xsl:template>
-
- <xsl:template name="headerRowLinks">
- <xsl:variable name="hasTypeLink" select="/document/reference/topicdata/@typeTopicId or /document/reference/containers/type/@api"/>
- <xsl:variable name="hasMembersLink" select="/document/reference/topicdata/@allMembersTopicId and ($subgroup='class' or $subgroup='structure' or $subgroup='interface')"/>
-
- <!-- Member list pages and member pages get link to Type Overview pages -->
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@typeTopicId">
- <referenceLink target="{/document/reference/topicdata/@typeTopicId}" display-target="format">
- <xsl:call-template name="nonScrollingRegionTypeLinks" />
- </referenceLink>
- <xsl:text> </xsl:text>
- </xsl:when>
- <xsl:when test="/document/reference/containers/type/@api">
- <referenceLink target="{/document/reference/containers/type/@api}" display-target="format">
- <xsl:call-template name="nonScrollingRegionTypeLinks" />
- </referenceLink>
- <xsl:text> </xsl:text>
- </xsl:when>
- </xsl:choose>
-
- <!-- class, structure, and interface About topics get link to Members topic (unless the doc model has the all members lists on the type topic) -->
- <xsl:if test="$hasMembersLink">
- <xsl:if test="$hasTypeLink">
- <include item="nsrLinkSeparator"/>
- </xsl:if>
- <referenceLink target="{/document/reference/topicdata/@allMembersTopicId}">
- <include item="allMembersTitle"/>
- </referenceLink>
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!--all members only -->
- <xsl:if test="$subgroup='members'">
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='constructor']">
- <!-- add a link to the member list section for this subgroup -->
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">constructor</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- method subgroup includes operators -->
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='method']">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">method</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='field']">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">field</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='property' and not(@subsubgroup)]">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">property</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/apidata[@subsubgroup='attachedProperty']">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">attachedProperty</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='event' and not(@subsubgroup)]">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">event</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element/apidata[@subsubgroup='attachedEvent']">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">attachedEvent</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="/document/reference/elements/element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <xsl:call-template name="memberTableLink">
- <xsl:with-param name="headerGroup">ExplicitInterfaceImplementation</xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:if>
-
- <!-- include Example link if there's an Example section -->
- <xsl:if test="$examplesSection">
- <xsl:if test="$hasTypeLink or $hasMembersLink">
- <include item="nsrLinkSeparator"/>
- </xsl:if>
- <a href="#exampleToggle" onclick="OpenSection(exampleToggle)">
- <include item="Example"/>
- </a>
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- most mref topics get autogenerated see also links to see also section -->
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:if test="$hasTypeLink or $hasMembersLink or $examplesSection">
- <include item="nsrLinkSeparator"/>
- </xsl:if>
- <a href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)">
- <include item="SeeAlso"/>
- </a>
- <xsl:text> </xsl:text>
- </xsl:if>
-
- <!-- Feedback link -->
- <xsl:if test="$hasTypeLink or $hasMembersLink or $examplesSection or $hasSeeAlsoSection">
- <include item="nsrLinkSeparator"/>
- </xsl:if>
- <include item="feedbackHeader">
- <parameter>
- <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" />
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" />
- </parameter>
- </include>
-
- </xsl:template>
-
-
- <xsl:template name="bodyHeaderTopTable">
- <xsl:variable name="showDevlangsFilter" select="boolean(($languages != 'false') and (count($languages/language) > 0))"/>
- <xsl:variable name="showMemberOptionsFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList')"/>
- <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element/versions/versions)"/>
- <table id="topTable" cellspacing="0" cellpadding="0">
- <tr>
- <td>
- <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0">
- <img ID="toggleAllImage" class="toggleAll">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <label id="collapseAllLabel" for="toggleAllImage" style="display: none;">
- <include item="collapseAll"/>
- </label>
- <label id="expandAllLabel" for="toggleAllImage" style="display: none;">
- <include item="expandAll"/>
- </label>
- <xsl:text> </xsl:text>
- </span>
-
- <xsl:if test="boolean($showDevlangsFilter)">
- <xsl:call-template name="devlangsDropdown"/>
- </xsl:if>
-
- <!-- include the member options dropdown on memberlist topics -->
- <xsl:if test="boolean($showMemberOptionsFilter)">
- <xsl:call-template name="memberOptionsDropdown"/>
- </xsl:if>
-
- <!-- include the member platforms dropdown on memberlist topics that have platform info -->
- <xsl:if test="boolean($showMemberFrameworksFilter)">
- <xsl:call-template name="memberFrameworksDropdown"/>
- </xsl:if>
- </td>
- </tr>
- </table>
- <xsl:if test="boolean($showDevlangsFilter)">
- <xsl:call-template name="devlangsMenu"/>
- </xsl:if>
-
- <!-- include the member options dropdown on memberlist topics -->
- <xsl:if test="boolean($showMemberOptionsFilter)">
- <xsl:call-template name="memberOptionsMenu"/>
- </xsl:if>
-
- <!-- include the member platforms dropdown on memberlist topics that have platform info -->
- <xsl:if test="boolean($showMemberFrameworksFilter)">
- <xsl:call-template name="memberFrameworksMenu"/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="FrameworksMenuCheckbox">
- <xsl:variable name="versionName" select="@name"/>
- <!-- checkbox for each version group -->
- <input id="{$versionName}Checkbox" type='checkbox' data="{$versionName},'persist'" value="on" onClick="SetMemberFrameworks(this)"/>
- <label class="checkboxLabel" for="{$versionName}Checkbox">
- <include item="Include{$versionName}Members"/>
- </label>
- <br/>
- </xsl:template>
-
- <!-- /document/reference/elements/element/versions/versions -->
- <xsl:template name="memberFrameworksMenu">
- <div id="memberFrameworksMenu">
- <xsl:for-each select="/document/reference/elements//element/versions[versions]">
- <xsl:if test="position()=1">
- <xsl:for-each select="versions">
- <xsl:call-template name="FrameworksMenuCheckbox"/>
- </xsl:for-each>
- </xsl:if>
- </xsl:for-each>
- <xsl:text> </xsl:text>
- </div>
- </xsl:template>
-
- <xsl:template name="memberFrameworksDropdown">
- <include item="dropdownSeparator"/>
- <span id="memberFrameworksDropdown" class="filter" tabindex="0">
- <img id="memberFrameworksDropdownImage">
- <includeAttribute name="src" item="iconPath">
- <parameter>dropdown.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <label id="memberFrameworksMenuAllLabel" for="memberFrameworksDropdownImage" style="display: none;">
- <nobr><include item="memberFrameworksShowAll"/><xsl:text> </xsl:text></nobr>
- </label>
- <label id="memberFrameworksMenuMultipleLabel" for="memberFrameworksDropdownImage" style="display: none;">
- <nobr><include item="memberFrameworksMultiple"/><xsl:text> </xsl:text></nobr>
- </label>
- <xsl:for-each select="/document/reference/elements//element/versions[versions]">
- <xsl:if test="position()=1">
- <xsl:for-each select="versions">
- <xsl:variable name="versionName" select="@name"/>
- <label id="memberFrameworksMenu{$versionName}Label" for="memberFrameworksDropdownImage" style="display: none;">
- <nobr><include item="memberFrameworks{$versionName}"/><xsl:text> </xsl:text></nobr>
- </label>
- </xsl:for-each>
- </xsl:if>
- </xsl:for-each>
- </span>
- </xsl:template>
-
- <!-- -->
- <xsl:variable name="moreMemberOptions" select="false()"/>
-
- <xsl:template name="memberOptionsMenu">
- <div id="memberOptionsMenu">
- <xsl:if test="$moreMemberOptions">
- <input id="PublicCheckbox" type='checkbox' data="Public" value="on" onClick="SetMemberOptions(this, 'vis')"/>
- <label class="checkboxLabel" for="PublicCheckbox">
- <include item="includePublicMembers"/>
- </label>
- <br/>
- </xsl:if>
- <input id="ProtectedCheckbox" type='checkbox' data="Protected" value="on" onClick="SetMemberOptions(this, 'vis')"/>
- <label class="checkboxLabel" for="ProtectedCheckbox">
- <include item="includeProtectedMembers"/>
- </label>
- <br/>
- <xsl:if test="$moreMemberOptions">
- <br/>
- <input id="DeclaredCheckbox" type='checkbox' data="Declared" value="on" onClick="SetMemberOptions(this, 'decl')"/>
- <label class="checkboxLabel" for="DeclaredCheckbox">
- <include item="includeDeclaredMembers"/>
- </label>
- <br/>
- </xsl:if>
- <input id="InheritedCheckbox" type='checkbox' data="Inherited" value="on" onClick="SetMemberOptions(this, 'decl')"/>
- <label class="checkboxLabel" for="InheritedCheckbox">
- <include item="includeInheritedMembers"/>
- </label>
- <br/>
- </div>
- </xsl:template>
-
- <xsl:template name="memberOptionsDropdown">
- <include item="dropdownSeparator"/>
- <span id="memberOptionsDropdown" class="filter" tabindex="0">
- <img id="memberOptionsDropdownImage">
- <includeAttribute name="src" item="iconPath">
- <parameter>dropdown.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <label id="memberOptionsMenuAllLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsShowAll"/><xsl:text> </xsl:text></nobr>
- </label>
- <label id="memberOptionsMenuMultipleLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr>
- </label>
- <label id="memberOptionsMenuProtectedLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr>
- </label>
- <label id="memberOptionsMenuInheritedLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr>
- </label>
- <xsl:if test="$moreMemberOptions">
- <label id="memberOptionsMenuPublicLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr>
- </label>
- <label id="memberOptionsMenuDeclaredLabel" for="memberOptionsDropdownImage" style="display: none;">
- <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr>
- </label>
- </xsl:if>
- </span>
- </xsl:template>
-
- <xsl:template name="devlangsDropdown">
- <!-- if only one language, omit the dropdown -->
- <xsl:if test="(count($languages/language) > 1)">
- <include item="dropdownSeparator"/>
- <span id="devlangsDropdown" class="filter" tabindex="0">
- <img id="devlangsDropdownImage">
- <includeAttribute name="src" item="iconPath">
- <parameter>dropdown.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:text> </xsl:text>
- <label id="devlangsMenuAllLabel" for="devlangsDropdownImage" style="display: none;">
- <nobr>
- <include item="devlangsDropdown">
- <parameter>
- <include item="all"/>
- </parameter>
- </include>
- <xsl:text> </xsl:text>
- </nobr>
- </label>
- <label id="devlangsMenuMultipleLabel" for="devlangsDropdownImage" style="display: none;">
- <nobr>
- <include item="devlangsDropdown">
- <parameter>
- <include item="multiple"/>
- </parameter>
- </include>
- <xsl:text> </xsl:text>
- </nobr>
- </label>
- <xsl:for-each select="$languages/language">
- <label id="devlangsMenu{@name}Label" for="devlangsDropdownImage" style="display: none;">
- <nobr>
- <include item="devlangsDropdown">
- <parameter>
- <include item="{@name}"/>
- </parameter>
- </include>
- <xsl:text> </xsl:text>
- </nobr>
- </label>
- </xsl:for-each>
- </span>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="devlangsMenu">
- <div id="devlangsMenu">
- <xsl:for-each select="$languages/language">
- <input id="{@name}Checkbox" type='checkbox' data="{@name},{@style},'persist'" value="on" onClick="SetLanguage(this)"/>
- <label class="checkboxLabel" for="{@name}Checkbox">
- <include item="{@name}"/>
- </label>
- <br/>
- </xsl:for-each>
- </div>
- </xsl:template>
-
-
-
- <!-- image links
-current ndppick XSLT behavior:
-expandAllImage - all
-dropDownImage - not namespace or derivedTypeList
-dropDownHoverImage - not namespace or derivedTypeList
-collapseImage - all
-expandImage - all
-collapseAllImage - all
-copyImage - overview (not namespace); list (only overload lists ctor, method, prop)
-copyHoverImage - overview (not namespace); list (only overload lists ctor, method, prop)
- -->
- <xsl:template name="commonImages">
- <img id="collapseImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="collapseImage" />
- </img>
- <img id="expandImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>expand_all.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="expandImage" />
- </img>
- <img id="collapseAllImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <img id="expandAllImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>expand_all.gif</parameter>
- </includeAttribute>
- </img>
- <img id="dropDownImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>dropdown.gif</parameter>
- </includeAttribute>
- </img>
- <img id="dropDownHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>dropdownHover.gif</parameter>
- </includeAttribute>
- </img>
- <img id="copyImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>copycode.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="copyImage" />
- </img>
- <img id="copyHoverImage" style="display:none; height:0; width:0;">
- <includeAttribute name="src" item="iconPath">
- <parameter>copycodeHighlight.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="copyHoverImage" />
- </img>
-
- </xsl:template>
-
-
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="globalTemplates.xsl"/> + <xsl:template name="upperBodyStuff"> + <input type="hidden" id="userDataCache" class="userDataStyle"/> + <input type="hidden" id="hiddenScrollOffset"/> + + <xsl:call-template name="commonImages"/> + + <xsl:call-template name="bodyHeader"/> + + </xsl:template> + + <xsl:template name="bodyHeader"> + <div id="header"> + <xsl:call-template name="bodyHeaderTopTable"/> + + <xsl:call-template name="bodyHeaderBottomTable"/> + </div> + </xsl:template> + + <xsl:template name="bodyHeaderBottomTable"> + <table id="bottomTable" cellpadding="0" cellspacing="0"> + <tr id="headerTableRow1"> + <td align="left"> + <span id="runningHeaderText"> + <xsl:call-template name="runningHeader" /> + </span> + </td> + </tr> + <tr id="headerTableRow2"> + <td align="left"> + <span id="nsrTitle"> + <include item="nsrTitle"> + <parameter> + <xsl:call-template name="topicTitleDecorated"/> + </parameter> + </include> + </span> + </td> + </tr> + <tr id="headerTableRow3"> + <td align="left"> + <xsl:call-template name="headerRowLinks"/> + </td> + <!--<td align="right"> + <span id="headfb" class="feedbackhead"></span> + </td>--> + </tr> + </table> + <table id="gradientTable"> + <tr> + <td class="nsrBottom"> + <includeAttribute name="background" item="iconPath"> + <parameter>gradient.gif</parameter> + </includeAttribute> + </td> + </tr> + </table> + </xsl:template> + + <xsl:template name="memberTableLink"> + <xsl:param name="headerGroup" /> + <xsl:variable name="sectionId"> + <xsl:value-of select="concat($headerGroup, 'TableToggle')"/> + </xsl:variable> + <include item="nsrLinkSeparator"/> + <a href="#{$sectionId}" onclick="OpenSection({$sectionId})"> + <include item="{$headerGroup}Table"/> + </a> + <xsl:text> </xsl:text> + </xsl:template> + + <xsl:template name="headerRowLinks"> + <xsl:variable name="hasTypeLink" select="/document/reference/topicdata/@typeTopicId or /document/reference/containers/type/@api"/> + <xsl:variable name="hasMembersLink" select="/document/reference/topicdata/@allMembersTopicId and ($subgroup='class' or $subgroup='structure' or $subgroup='interface')"/> + + <!-- Member list pages and member pages get link to Type Overview pages --> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@typeTopicId"> + <referenceLink target="{/document/reference/topicdata/@typeTopicId}" display-target="format"> + <xsl:call-template name="nonScrollingRegionTypeLinks" /> + </referenceLink> + <xsl:text> </xsl:text> + </xsl:when> + <xsl:when test="/document/reference/containers/type/@api"> + <referenceLink target="{/document/reference/containers/type/@api}" display-target="format"> + <xsl:call-template name="nonScrollingRegionTypeLinks" /> + </referenceLink> + <xsl:text> </xsl:text> + </xsl:when> + </xsl:choose> + + <!-- class, structure, and interface About topics get link to Members topic (unless the doc model has the all members lists on the type topic) --> + <xsl:if test="$hasMembersLink"> + <xsl:if test="$hasTypeLink"> + <include item="nsrLinkSeparator"/> + </xsl:if> + <referenceLink target="{/document/reference/topicdata/@allMembersTopicId}"> + <include item="allMembersTitle"/> + </referenceLink> + <xsl:text> </xsl:text> + </xsl:if> + + <!--all members only --> + <xsl:if test="$subgroup='members'"> + <xsl:if test="/document/reference/elements/element/apidata[@subgroup='constructor']"> + <!-- add a link to the member list section for this subgroup --> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">constructor</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- method subgroup includes operators --> + <xsl:if test="/document/reference/elements/element/apidata[@subgroup='method']"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">method</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/apidata[@subgroup='field']"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">field</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/apidata[@subgroup='property' and not(@subsubgroup)]"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">property</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/apidata[@subsubgroup='attachedProperty']"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">attachedProperty</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/apidata[@subgroup='event' and not(@subsubgroup)]"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">event</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element/apidata[@subsubgroup='attachedEvent']"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">attachedEvent</xsl:with-param> + </xsl:call-template> + </xsl:if> + + <xsl:if test="/document/reference/elements/element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <xsl:call-template name="memberTableLink"> + <xsl:with-param name="headerGroup">ExplicitInterfaceImplementation</xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:if> + + <!-- include Example link if there's an Example section --> + <xsl:if test="$examplesSection"> + <xsl:if test="$hasTypeLink or $hasMembersLink"> + <include item="nsrLinkSeparator"/> + </xsl:if> + <a href="#exampleToggle" onclick="OpenSection(exampleToggle)"> + <include item="Example"/> + </a> + <xsl:text> </xsl:text> + </xsl:if> + + <!-- most mref topics get autogenerated see also links to see also section --> + <xsl:if test="$hasSeeAlsoSection"> + <xsl:if test="$hasTypeLink or $hasMembersLink or $examplesSection"> + <include item="nsrLinkSeparator"/> + </xsl:if> + <a href="#seeAlsoToggle" onclick="OpenSection(seeAlsoToggle)"> + <include item="SeeAlso"/> + </a> + <xsl:text> </xsl:text> + </xsl:if> + + <!-- Feedback link --> + <xsl:if test="$hasTypeLink or $hasMembersLink or $examplesSection or $hasSeeAlsoSection"> + <include item="nsrLinkSeparator"/> + </xsl:if> + <include item="feedbackHeader"> + <parameter> + <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" /> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" /> + </parameter> + </include> + + </xsl:template> + + + <xsl:template name="bodyHeaderTopTable"> + <xsl:variable name="showDevlangsFilter" select="boolean(($languages != 'false') and (count($languages/language) > 0))"/> + <xsl:variable name="showMemberOptionsFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList')"/> + <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element/versions/versions)"/> + <table id="topTable" cellspacing="0" cellpadding="0"> + <tr> + <td> + <span onclick="ExpandCollapseAll(toggleAllImage)" style="cursor:default;" onkeypress="ExpandCollapseAll_CheckKey(toggleAllImage, event)" tabindex="0"> + <img ID="toggleAllImage" class="toggleAll"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <label id="collapseAllLabel" for="toggleAllImage" style="display: none;"> + <include item="collapseAll"/> + </label> + <label id="expandAllLabel" for="toggleAllImage" style="display: none;"> + <include item="expandAll"/> + </label> + <xsl:text> </xsl:text> + </span> + + <xsl:if test="boolean($showDevlangsFilter)"> + <xsl:call-template name="devlangsDropdown"/> + </xsl:if> + + <!-- include the member options dropdown on memberlist topics --> + <xsl:if test="boolean($showMemberOptionsFilter)"> + <xsl:call-template name="memberOptionsDropdown"/> + </xsl:if> + + <!-- include the member platforms dropdown on memberlist topics that have platform info --> + <xsl:if test="boolean($showMemberFrameworksFilter)"> + <xsl:call-template name="memberFrameworksDropdown"/> + </xsl:if> + </td> + </tr> + </table> + <xsl:if test="boolean($showDevlangsFilter)"> + <xsl:call-template name="devlangsMenu"/> + </xsl:if> + + <!-- include the member options dropdown on memberlist topics --> + <xsl:if test="boolean($showMemberOptionsFilter)"> + <xsl:call-template name="memberOptionsMenu"/> + </xsl:if> + + <!-- include the member platforms dropdown on memberlist topics that have platform info --> + <xsl:if test="boolean($showMemberFrameworksFilter)"> + <xsl:call-template name="memberFrameworksMenu"/> + </xsl:if> + </xsl:template> + + <xsl:template name="FrameworksMenuCheckbox"> + <xsl:variable name="versionName" select="@name"/> + <!-- checkbox for each version group --> + <input id="{$versionName}Checkbox" type='checkbox' data="{$versionName},'persist'" value="on" onClick="SetMemberFrameworks(this)"/> + <label class="checkboxLabel" for="{$versionName}Checkbox"> + <include item="Include{$versionName}Members"/> + </label> + <br/> + </xsl:template> + + <!-- /document/reference/elements/element/versions/versions --> + <xsl:template name="memberFrameworksMenu"> + <div id="memberFrameworksMenu"> + <xsl:for-each select="/document/reference/elements//element/versions[versions]"> + <xsl:if test="position()=1"> + <xsl:for-each select="versions"> + <xsl:call-template name="FrameworksMenuCheckbox"/> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + <xsl:text> </xsl:text> + </div> + </xsl:template> + + <xsl:template name="memberFrameworksDropdown"> + <include item="dropdownSeparator"/> + <span id="memberFrameworksDropdown" class="filter" tabindex="0"> + <img id="memberFrameworksDropdownImage"> + <includeAttribute name="src" item="iconPath"> + <parameter>dropdown.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <label id="memberFrameworksMenuAllLabel" for="memberFrameworksDropdownImage" style="display: none;"> + <nobr><include item="memberFrameworksShowAll"/><xsl:text> </xsl:text></nobr> + </label> + <label id="memberFrameworksMenuMultipleLabel" for="memberFrameworksDropdownImage" style="display: none;"> + <nobr><include item="memberFrameworksMultiple"/><xsl:text> </xsl:text></nobr> + </label> + <xsl:for-each select="/document/reference/elements//element/versions[versions]"> + <xsl:if test="position()=1"> + <xsl:for-each select="versions"> + <xsl:variable name="versionName" select="@name"/> + <label id="memberFrameworksMenu{$versionName}Label" for="memberFrameworksDropdownImage" style="display: none;"> + <nobr><include item="memberFrameworks{$versionName}"/><xsl:text> </xsl:text></nobr> + </label> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </span> + </xsl:template> + + <!-- --> + <xsl:variable name="moreMemberOptions" select="false()"/> + + <xsl:template name="memberOptionsMenu"> + <div id="memberOptionsMenu"> + <xsl:if test="$moreMemberOptions"> + <input id="PublicCheckbox" type='checkbox' data="Public" value="on" onClick="SetMemberOptions(this, 'vis')"/> + <label class="checkboxLabel" for="PublicCheckbox"> + <include item="includePublicMembers"/> + </label> + <br/> + </xsl:if> + <input id="ProtectedCheckbox" type='checkbox' data="Protected" value="on" onClick="SetMemberOptions(this, 'vis')"/> + <label class="checkboxLabel" for="ProtectedCheckbox"> + <include item="includeProtectedMembers"/> + </label> + <br/> + <xsl:if test="$moreMemberOptions"> + <br/> + <input id="DeclaredCheckbox" type='checkbox' data="Declared" value="on" onClick="SetMemberOptions(this, 'decl')"/> + <label class="checkboxLabel" for="DeclaredCheckbox"> + <include item="includeDeclaredMembers"/> + </label> + <br/> + </xsl:if> + <input id="InheritedCheckbox" type='checkbox' data="Inherited" value="on" onClick="SetMemberOptions(this, 'decl')"/> + <label class="checkboxLabel" for="InheritedCheckbox"> + <include item="includeInheritedMembers"/> + </label> + <br/> + </div> + </xsl:template> + + <xsl:template name="memberOptionsDropdown"> + <include item="dropdownSeparator"/> + <span id="memberOptionsDropdown" class="filter" tabindex="0"> + <img id="memberOptionsDropdownImage"> + <includeAttribute name="src" item="iconPath"> + <parameter>dropdown.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <label id="memberOptionsMenuAllLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsShowAll"/><xsl:text> </xsl:text></nobr> + </label> + <label id="memberOptionsMenuMultipleLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr> + </label> + <label id="memberOptionsMenuProtectedLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr> + </label> + <label id="memberOptionsMenuInheritedLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr> + </label> + <xsl:if test="$moreMemberOptions"> + <label id="memberOptionsMenuPublicLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr> + </label> + <label id="memberOptionsMenuDeclaredLabel" for="memberOptionsDropdownImage" style="display: none;"> + <nobr><include item="memberOptionsFiltered"/><xsl:text> </xsl:text></nobr> + </label> + </xsl:if> + </span> + </xsl:template> + + <xsl:template name="devlangsDropdown"> + <!-- if only one language, omit the dropdown --> + <xsl:if test="(count($languages/language) > 1)"> + <include item="dropdownSeparator"/> + <span id="devlangsDropdown" class="filter" tabindex="0"> + <img id="devlangsDropdownImage"> + <includeAttribute name="src" item="iconPath"> + <parameter>dropdown.gif</parameter> + </includeAttribute> + </img> + <xsl:text> </xsl:text> + <label id="devlangsMenuAllLabel" for="devlangsDropdownImage" style="display: none;"> + <nobr> + <include item="devlangsDropdown"> + <parameter> + <include item="all"/> + </parameter> + </include> + <xsl:text> </xsl:text> + </nobr> + </label> + <label id="devlangsMenuMultipleLabel" for="devlangsDropdownImage" style="display: none;"> + <nobr> + <include item="devlangsDropdown"> + <parameter> + <include item="multiple"/> + </parameter> + </include> + <xsl:text> </xsl:text> + </nobr> + </label> + <xsl:for-each select="$languages/language"> + <label id="devlangsMenu{@name}Label" for="devlangsDropdownImage" style="display: none;"> + <nobr> + <include item="devlangsDropdown"> + <parameter> + <include item="{@name}"/> + </parameter> + </include> + <xsl:text> </xsl:text> + </nobr> + </label> + </xsl:for-each> + </span> + </xsl:if> + </xsl:template> + + <xsl:template name="devlangsMenu"> + <div id="devlangsMenu"> + <xsl:for-each select="$languages/language"> + <input id="{@name}Checkbox" type='checkbox' data="{@name},{@style},'persist'" value="on" onClick="SetLanguage(this)"/> + <label class="checkboxLabel" for="{@name}Checkbox"> + <include item="{@name}"/> + </label> + <br/> + </xsl:for-each> + </div> + </xsl:template> + + + + <!-- image links +current ndppick XSLT behavior: +expandAllImage - all +dropDownImage - not namespace or derivedTypeList +dropDownHoverImage - not namespace or derivedTypeList +collapseImage - all +expandImage - all +collapseAllImage - all +copyImage - overview (not namespace); list (only overload lists ctor, method, prop) +copyHoverImage - overview (not namespace); list (only overload lists ctor, method, prop) + --> + <xsl:template name="commonImages"> + <img id="collapseImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="collapseImage" /> + </img> + <img id="expandImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>expand_all.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="expandImage" /> + </img> + <img id="collapseAllImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <img id="expandAllImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>expand_all.gif</parameter> + </includeAttribute> + </img> + <img id="dropDownImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>dropdown.gif</parameter> + </includeAttribute> + </img> + <img id="dropDownHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>dropdownHover.gif</parameter> + </includeAttribute> + </img> + <img id="copyImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>copycode.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="copyImage" /> + </img> + <img id="copyHoverImage" style="display:none; height:0; width:0;"> + <includeAttribute name="src" item="iconPath"> + <parameter>copycodeHighlight.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="copyHoverImage" /> + </img> + + </xsl:template> + + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl index ae1b9f0..41daf9c 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl @@ -1,570 +1,570 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
->
-
- <xsl:output method="xml" indent="no" encoding="utf-8" />
-
- <xsl:include href="htmlBody.xsl" />
- <xsl:include href="utilities_dduexml.xsl" />
-
- <xsl:variable name="hasSeeAlsoSection" select="boolean(count(/document/topic/*/ddue:relatedTopics/*[local-name()!='sampleRef']) > 0)"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/topic/*/ddue:codeExample[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="normalize-space(/document/topic/*/ddue:codeExample)
- or normalize-space(/document/topic/*//ddue:snippets/ddue:snippet)
- or /document/topic/ddue:developerSampleDocument/ddue:relatedTopics/ddue:sampleRef[@srcID]" />
- <xsl:variable name="group" select="/document/reference/apidata/@group" />
- <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" />
- <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" />
- <xsl:variable name="pseudo" select="boolean(/document/reference/apidata[@pseudo='true'])"/>
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
- <xsl:param name="metadata" value="false" />
- <xsl:param name="languages">false</xsl:param>
-
- <xsl:template match="/document">
- <html xmlns:xlink="http://www.w3.org/1999/xlink">
- <head>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>
- <META NAME="save" CONTENT="history"/>
- <title>
- <xsl:call-template name="topicTitlePlain"/>
- </title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
- <xsl:call-template name="upperBodyStuff"/>
- <xsl:call-template name="main"/>
- </body>
- </html>
- </xsl:template>
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- <!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />-->
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>EventUtilities.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>SplitScreen.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>Dropdown.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>script_manifold.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>script_feedBack.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>CheckboxMenu.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath">
- <parameter>CommonUtilities.js</parameter>
- </includeAttribute>
- <xsl:text> </xsl:text>
- </script>
-
- </xsl:template>
-
- <xsl:template name="insertMetadata">
- <xsl:if test="$metadata='true'">
- <xml>
- <!-- mshelp metadata -->
-
- <!-- insert toctitle -->
- <xsl:if test="normalize-space(/document/metadata/tableOfContentsTitle) and (/document/metadata/tableOfContentsTitle != /document/metadata/title)">
- <MSHelp:TOCTitle Title="{/document/metadata/tableOfContentsTitle}" />
- </xsl:if>
-
- <!-- link index -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
-
- <!-- authored K -->
- <xsl:variable name="docset" select="translate(/document/metadata/attribute[@name='DocSet'][1]/text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/>
- <xsl:for-each select="/document/metadata/keyword[@index='K']">
- <xsl:variable name="nestedKeywordText">
- <xsl:call-template name="nestedKeywordText"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="not(contains(text(),'[')) and ($docset='avalon' or $docset='wpf' or $docset='wcf' or $docset='windowsforms')">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="kIndexTermWithTechQualifier">
- <parameter>
- <xsl:value-of select="text()"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$docset"/>
- </parameter>
- <parameter>
- <xsl:value-of select="$nestedKeywordText"/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <xsl:otherwise>
- <MSHelp:Keyword Index="K" Term="{concat(text(),$nestedKeywordText)}" />
- </xsl:otherwise>
- </xsl:choose>
- <!--
- <MSHelp:Keyword Index="K">
- <xsl:choose>
- <xsl:when test="normalize-space($docset)='' or contains(text(),'[')">
- <xsl:attribute name="Term">
- <xsl:value-of select="concat(text(),$nestedKeywordText)"/>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="Term" item="kIndexTermWithTechQualifier">
- <parameter><xsl:value-of select="text()"/></parameter>
- <parameter><xsl:value-of select="$docset"/></parameter>
- <parameter><xsl:value-of select="$nestedKeywordText"/></parameter>
- </includeAttribute>
- </xsl:otherwise>
- </xsl:choose>
- </MSHelp:Keyword>
- -->
- </xsl:for-each>
-
- <!-- authored S -->
- <xsl:for-each select="/document/metadata/keyword[@index='S']">
- <MSHelp:Keyword Index="S">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='S']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- <!-- S index keywords need to be converted to F index keywords -->
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='S']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored F -->
- <xsl:for-each select="/document/metadata/keyword[@index='F']">
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='F']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored B -->
- <xsl:for-each select="/document/metadata/keyword[@index='B']">
- <MSHelp:Keyword Index="B">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='B']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- Topic version -->
- <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" />
-
- <!-- Asset ID -->
- <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" />
-
- <!-- Abstract -->
- <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" />
- <xsl:choose>
- <xsl:when test="string-length($abstract) > 254">
- <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" />
- </xsl:when>
- <xsl:when test="string-length($abstract) > 0">
- <MSHelp:Attr Name="Abstract" Value="{$abstract}" />
- </xsl:when>
- </xsl:choose>
-
- <!-- authored attributes -->
- <xsl:for-each select="/document/metadata/attribute">
- <MSHelp:Attr Name="{@name}" Value="{text()}" />
- </xsl:for-each>
-
- <!-- TopicType attribute -->
- <xsl:for-each select="/document/topic/*[1]">
- <MSHelp:Attr Name="TopicType">
- <includeAttribute name="Value" item="TT_{local-name()}"/>
- </MSHelp:Attr>
- </xsl:for-each>
-
- <!-- Locale attribute -->
- <MSHelp:Attr Name="Locale">
- <includeAttribute name="Value" item="locale"/>
- </MSHelp:Attr>
-
- </xml>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="nestedKeywordText">
- <xsl:for-each select="keyword[@index='K']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:template>
-
- <!-- document body -->
-
- <!-- Title in topic -->
-
- <xsl:template name="topicTitleDecorated">
- <xsl:call-template name="topicTitle" />
- </xsl:template>
-
- <xsl:template name="topicTitlePlain">
- <xsl:call-template name="topicTitle" />
- </xsl:template>
-
- <xsl:template name="topicTitle">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/metadata/title)">
- <xsl:value-of select="normalize-space(/document/metadata/title)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="mainSection">
-
- <div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()">
- <include item="header" />
- </div>
- <!--<xsl:call-template name="head" />-->
- <xsl:call-template name="body" />
- </div>
- <xsl:call-template name="foot" />
- </div>
-
- </xsl:template>
-
- <!--<xsl:template name="head">
- <include item="header" />
- </xsl:template>-->
-
- <xsl:template name="body">
- <xsl:apply-templates select="topic" />
- </xsl:template>
-
- <!-- sections that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:title">
- <!-- don't print title -->
- </xsl:template>
-
- <xsl:template match="ddue:introduction">
- <xsl:apply-templates select="@address" />
- <div class="introduction">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:parameters">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'parameters'"/>
- <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:returnValue">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'returnValue'"/>
- <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:exceptions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:relatedSections">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'relatedSections'"/>
- <xsl:with-param name="title"><include item="relatedSectionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:relatedTopics">
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'"/>
- <xsl:with-param name="title"><include item="relatedTopicsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
-
- <!-- Concepts sub-section -->
- <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoConcepts"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Reference sub-section -->
- <xsl:if test="normalize-space(ddue:codeEntityReference)">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoReference"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Other Resources sub-section -->
- <xsl:if test="ddue:externalLink">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoOtherResources"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="*">
- <xsl:if test="name() = 'externalLink'">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <!-- create Example section for the first codeExample node -->
- <xsl:if test="not(preceding-sibling::ddue:codeExample) and ../ddue:codeExample[normalize-space(.)!='']">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title">
- <include item="Example" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- <!-- if there are additional codeExample nodes, put them inside this section -->
- <xsl:for-each select="following-sibling::ddue:codeExample">
- <xsl:apply-templates />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeReference">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <xsl:variable name="runningHeaderText">
- <xsl:value-of select="/document/metadata/runningHeaderText/@uscid"/>
- </xsl:variable>
- <include item="{$runningHeaderText}" />
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <div id="footer">
- <div class="footerLine">
- <img width="100%" height="3px">
- <includeAttribute name="src" item="iconPath">
- <parameter>footer.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="footerImage" />
- </img>
- </div>
-
- <include item="footer">
- <parameter>
- <xsl:value-of select="$key"/>
- </parameter>
- <parameter>
- <xsl:call-template name="topicTitlePlain"/>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" />
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" />
- </parameter>
- </include>
- </div>
- </xsl:template>
-
- <!-- autoOutline
- Inserts a bullet list of links to the topic's top-level sections or a section's subsections.
- Authors can insert <token>autoOutline</token> in a topic's introduction to get a bullet list of the top-level sections;
- or in a ddue:section/ddue:content to get a bullet list of the section's subsections.
- The shared content component replaces <token>autoOutline</token> with an <autoOutline/> node.
- -->
- <xsl:template match="autoOutline">
- <xsl:choose>
- <!--if <autoOutline/> is in introduction, it outlines the topic's toplevel sections-->
- <xsl:when test="ancestor::ddue:introduction">
- <xsl:for-each select="ancestor::ddue:introduction/parent::*">
- <xsl:call-template name="insertAutoOutline">
- <xsl:with-param name="outlineType">toplevel</xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <!--if <autoOutline/> is in section/content, it outlines the section's subsections-->
- <xsl:when test="ancestor::ddue:content[parent::ddue:section]">
- <xsl:for-each select="ancestor::ddue:content/parent::ddue:section/ddue:sections">
- <xsl:call-template name="insertAutoOutline">
- <xsl:with-param name="outlineType">subsection</xsl:with-param>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="insertAutoOutline">
- <xsl:param name="outlineType"/>
- <!--insert an outline if there are sections with title and address-->
- <xsl:if test="ddue:section[ddue:title[normalize-space(.)!='']]">
- <!--insert a boilerplate intro-->
- <xsl:choose>
- <xsl:when test="$outlineType='toplevel'">
- <include item="autoOutlineTopLevelIntro"/>
- </xsl:when>
- <xsl:when test="$outlineType='subsection'">
- <include item="autoOutlineSubsectionIntro"/>
- </xsl:when>
- </xsl:choose>
- <ul>
- <xsl:for-each select="ddue:section[ddue:title[normalize-space(.)!='']]">
- <xsl:call-template name="outlineSectionEntry" />
- </xsl:for-each>
- <!--for toplevel outlines include a link to See Also-->
- <xsl:if test="starts-with($outlineType,'toplevel') and //ddue:relatedTopics[normalize-space(.)!='']">
- <li>
- <A>
- <xsl:attribute name="HREF">#seeAlsoSection</xsl:attribute>
- <include item="RelatedTopicsLinkText"/>
- </A>
- </li>
- </xsl:if>
- </ul>
- </xsl:if>
- </xsl:template>
-
- <!--a list item in the outline's bullet list-->
- <xsl:template name="outlineSectionEntry">
- <li>
- <A>
- <xsl:if test="@address">
- <xsl:attribute name="HREF">
- #<xsl:value-of select="@address"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:value-of select="ddue:title" />
- </A>
- </li>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" +> + + <xsl:output method="xml" indent="no" encoding="utf-8" /> + + <xsl:include href="htmlBody.xsl" /> + <xsl:include href="utilities_dduexml.xsl" /> + + <xsl:variable name="hasSeeAlsoSection" select="boolean(count(/document/topic/*/ddue:relatedTopics/*[local-name()!='sampleRef']) > 0)"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/topic/*/ddue:codeExample[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="normalize-space(/document/topic/*/ddue:codeExample) + or normalize-space(/document/topic/*//ddue:snippets/ddue:snippet) + or /document/topic/ddue:developerSampleDocument/ddue:relatedTopics/ddue:sampleRef[@srcID]" /> + <xsl:variable name="group" select="/document/reference/apidata/@group" /> + <xsl:variable name="subgroup" select="/document/reference/apidata/@subgroup" /> + <xsl:variable name="subsubgroup" select="/document/reference/apidata/@subsubgroup" /> + <xsl:variable name="pseudo" select="boolean(/document/reference/apidata[@pseudo='true'])"/> + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + <xsl:param name="metadata" value="false" /> + <xsl:param name="languages">false</xsl:param> + + <xsl:template match="/document"> + <html xmlns:xlink="http://www.w3.org/1999/xlink"> + <head> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/> + <META NAME="save" CONTENT="history"/> + <title> + <xsl:call-template name="topicTitlePlain"/> + </title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + <xsl:call-template name="upperBodyStuff"/> + <xsl:call-template name="main"/> + </body> + </html> + </xsl:template> + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + <!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />--> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>EventUtilities.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>SplitScreen.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>Dropdown.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>script_manifold.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>script_feedBack.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>CheckboxMenu.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"> + <parameter>CommonUtilities.js</parameter> + </includeAttribute> + <xsl:text> </xsl:text> + </script> + + </xsl:template> + + <xsl:template name="insertMetadata"> + <xsl:if test="$metadata='true'"> + <xml> + <!-- mshelp metadata --> + + <!-- insert toctitle --> + <xsl:if test="normalize-space(/document/metadata/tableOfContentsTitle) and (/document/metadata/tableOfContentsTitle != /document/metadata/title)"> + <MSHelp:TOCTitle Title="{/document/metadata/tableOfContentsTitle}" /> + </xsl:if> + + <!-- link index --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + + <!-- authored K --> + <xsl:variable name="docset" select="translate(/document/metadata/attribute[@name='DocSet'][1]/text(),'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz ')"/> + <xsl:for-each select="/document/metadata/keyword[@index='K']"> + <xsl:variable name="nestedKeywordText"> + <xsl:call-template name="nestedKeywordText"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="not(contains(text(),'[')) and ($docset='avalon' or $docset='wpf' or $docset='wcf' or $docset='windowsforms')"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="kIndexTermWithTechQualifier"> + <parameter> + <xsl:value-of select="text()"/> + </parameter> + <parameter> + <xsl:value-of select="$docset"/> + </parameter> + <parameter> + <xsl:value-of select="$nestedKeywordText"/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <xsl:otherwise> + <MSHelp:Keyword Index="K" Term="{concat(text(),$nestedKeywordText)}" /> + </xsl:otherwise> + </xsl:choose> + <!-- + <MSHelp:Keyword Index="K"> + <xsl:choose> + <xsl:when test="normalize-space($docset)='' or contains(text(),'[')"> + <xsl:attribute name="Term"> + <xsl:value-of select="concat(text(),$nestedKeywordText)"/> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="Term" item="kIndexTermWithTechQualifier"> + <parameter><xsl:value-of select="text()"/></parameter> + <parameter><xsl:value-of select="$docset"/></parameter> + <parameter><xsl:value-of select="$nestedKeywordText"/></parameter> + </includeAttribute> + </xsl:otherwise> + </xsl:choose> + </MSHelp:Keyword> + --> + </xsl:for-each> + + <!-- authored S --> + <xsl:for-each select="/document/metadata/keyword[@index='S']"> + <MSHelp:Keyword Index="S"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='S']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + <!-- S index keywords need to be converted to F index keywords --> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='S']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored F --> + <xsl:for-each select="/document/metadata/keyword[@index='F']"> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='F']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored B --> + <xsl:for-each select="/document/metadata/keyword[@index='B']"> + <MSHelp:Keyword Index="B"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='B']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- Topic version --> + <MSHelp:Attr Name="RevisionNumber" Value="{/document/topic/@revisionNumber}" /> + + <!-- Asset ID --> + <MSHelp:Attr Name="AssetID" Value="{/document/topic/@id}" /> + + <!-- Abstract --> + <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" /> + <xsl:choose> + <xsl:when test="string-length($abstract) > 254"> + <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" /> + </xsl:when> + <xsl:when test="string-length($abstract) > 0"> + <MSHelp:Attr Name="Abstract" Value="{$abstract}" /> + </xsl:when> + </xsl:choose> + + <!-- authored attributes --> + <xsl:for-each select="/document/metadata/attribute"> + <MSHelp:Attr Name="{@name}" Value="{text()}" /> + </xsl:for-each> + + <!-- TopicType attribute --> + <xsl:for-each select="/document/topic/*[1]"> + <MSHelp:Attr Name="TopicType"> + <includeAttribute name="Value" item="TT_{local-name()}"/> + </MSHelp:Attr> + </xsl:for-each> + + <!-- Locale attribute --> + <MSHelp:Attr Name="Locale"> + <includeAttribute name="Value" item="locale"/> + </MSHelp:Attr> + + </xml> + </xsl:if> + </xsl:template> + + <xsl:template name="nestedKeywordText"> + <xsl:for-each select="keyword[@index='K']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:template> + + <!-- document body --> + + <!-- Title in topic --> + + <xsl:template name="topicTitleDecorated"> + <xsl:call-template name="topicTitle" /> + </xsl:template> + + <xsl:template name="topicTitlePlain"> + <xsl:call-template name="topicTitle" /> + </xsl:template> + + <xsl:template name="topicTitle"> + <xsl:choose> + <xsl:when test="normalize-space(/document/metadata/title)"> + <xsl:value-of select="normalize-space(/document/metadata/title)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- main window --> + + <xsl:template name="main"> + <div id="mainSection"> + + <div id="mainBody"> + <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"> + <include item="header" /> + </div> + <!--<xsl:call-template name="head" />--> + <xsl:call-template name="body" /> + </div> + <xsl:call-template name="foot" /> + </div> + + </xsl:template> + + <!--<xsl:template name="head"> + <include item="header" /> + </xsl:template>--> + + <xsl:template name="body"> + <xsl:apply-templates select="topic" /> + </xsl:template> + + <!-- sections that behave differently in conceptual and reference --> + + <xsl:template match="ddue:title"> + <!-- don't print title --> + </xsl:template> + + <xsl:template match="ddue:introduction"> + <xsl:apply-templates select="@address" /> + <div class="introduction"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="ddue:parameters"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'parameters'"/> + <xsl:with-param name="title"><include item="parametersTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:returnValue"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'returnValue'"/> + <xsl:with-param name="title"><include item="returnValueTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:exceptions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:relatedSections"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'relatedSections'"/> + <xsl:with-param name="title"><include item="relatedSectionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:relatedTopics"> + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'"/> + <xsl:with-param name="title"><include item="relatedTopicsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + + <!-- Concepts sub-section --> + <xsl:if test="normalize-space(ddue:link) or normalize-space(ddue:dynamicLink[@type='inline'])"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoConcepts"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Reference sub-section --> + <xsl:if test="normalize-space(ddue:codeEntityReference)"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoReference"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Other Resources sub-section --> + <xsl:if test="ddue:externalLink"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoOtherResources"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="*"> + <xsl:if test="name() = 'externalLink'"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <!-- create Example section for the first codeExample node --> + <xsl:if test="not(preceding-sibling::ddue:codeExample) and ../ddue:codeExample[normalize-space(.)!='']"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'"/> + <xsl:with-param name="title"> + <include item="Example" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + <!-- if there are additional codeExample nodes, put them inside this section --> + <xsl:for-each select="following-sibling::ddue:codeExample"> + <xsl:apply-templates /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeReference"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template name="runningHeader"> + <xsl:variable name="runningHeaderText"> + <xsl:value-of select="/document/metadata/runningHeaderText/@uscid"/> + </xsl:variable> + <include item="{$runningHeaderText}" /> + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <div id="footer"> + <div class="footerLine"> + <img width="100%" height="3px"> + <includeAttribute name="src" item="iconPath"> + <parameter>footer.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="footerImage" /> + </img> + </div> + + <include item="footer"> + <parameter> + <xsl:value-of select="$key"/> + </parameter> + <parameter> + <xsl:call-template name="topicTitlePlain"/> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" /> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" /> + </parameter> + </include> + </div> + </xsl:template> + + <!-- autoOutline + Inserts a bullet list of links to the topic's top-level sections or a section's subsections. + Authors can insert <token>autoOutline</token> in a topic's introduction to get a bullet list of the top-level sections; + or in a ddue:section/ddue:content to get a bullet list of the section's subsections. + The shared content component replaces <token>autoOutline</token> with an <autoOutline/> node. + --> + <xsl:template match="autoOutline"> + <xsl:choose> + <!--if <autoOutline/> is in introduction, it outlines the topic's toplevel sections--> + <xsl:when test="ancestor::ddue:introduction"> + <xsl:for-each select="ancestor::ddue:introduction/parent::*"> + <xsl:call-template name="insertAutoOutline"> + <xsl:with-param name="outlineType">toplevel</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + <!--if <autoOutline/> is in section/content, it outlines the section's subsections--> + <xsl:when test="ancestor::ddue:content[parent::ddue:section]"> + <xsl:for-each select="ancestor::ddue:content/parent::ddue:section/ddue:sections"> + <xsl:call-template name="insertAutoOutline"> + <xsl:with-param name="outlineType">subsection</xsl:with-param> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="insertAutoOutline"> + <xsl:param name="outlineType"/> + <!--insert an outline if there are sections with title and address--> + <xsl:if test="ddue:section[ddue:title[normalize-space(.)!='']]"> + <!--insert a boilerplate intro--> + <xsl:choose> + <xsl:when test="$outlineType='toplevel'"> + <include item="autoOutlineTopLevelIntro"/> + </xsl:when> + <xsl:when test="$outlineType='subsection'"> + <include item="autoOutlineSubsectionIntro"/> + </xsl:when> + </xsl:choose> + <ul> + <xsl:for-each select="ddue:section[ddue:title[normalize-space(.)!='']]"> + <xsl:call-template name="outlineSectionEntry" /> + </xsl:for-each> + <!--for toplevel outlines include a link to See Also--> + <xsl:if test="starts-with($outlineType,'toplevel') and //ddue:relatedTopics[normalize-space(.)!='']"> + <li> + <A> + <xsl:attribute name="HREF">#seeAlsoSection</xsl:attribute> + <include item="RelatedTopicsLinkText"/> + </A> + </li> + </xsl:if> + </ul> + </xsl:if> + </xsl:template> + + <!--a list item in the outline's bullet list--> + <xsl:template name="outlineSectionEntry"> + <li> + <A> + <xsl:if test="@address"> + <xsl:attribute name="HREF"> + #<xsl:value-of select="@address"/> + </xsl:attribute> + </xsl:if> + <xsl:value-of select="ddue:title" /> + </A> + </li> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl index 63b9b2f..b2a3f63 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl @@ -1,539 +1,539 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <!-- stuff specific to comments authored in DDUEXML -->
-
- <xsl:include href="utilities_reference.xsl" />
- <xsl:include href="utilities_dduexml.xsl" />
- <xsl:include href="htmlBody.xsl"/>
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" />
-
- <xsl:variable name="abstractSummary">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:summary">
- <xsl:apply-templates select="." mode="abstract" />
- </xsl:for-each>
- </xsl:variable>
-
- <xsl:variable name="hasSeeAlsoSection"
- select="boolean(
- (count(/document/comments/ddue:dduexml/ddue:relatedTopics/*) > 0) or
- ($group='type' or $group='member' or $group='list')
- )"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)" />
- <xsl:template name="body">
-
- <!--internalOnly boilerplate -->
- <xsl:call-template name="internalOnly"/>
-
- <!-- obsolete boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:call-template name="obsoleteSection" />
- </xsl:if>
-
- <!-- summary -->
- <!-- useBase boilerplate -->
- <xsl:if test="/document/comments/ddue:dduexml/ddue:useBase and /document/reference/overrides/member">
- <include item="useBaseBoilerplate">
- <parameter>
- <xsl:apply-templates select="/document/reference/overrides/member" mode="link"/>
- </parameter>
- </include>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:summary[1]) != ''">
- <span data="authoredSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[1]" />
- </span>
- </xsl:when>
- <!-- if no authored summary, and not in primary framework (e.g. netfw), and overrides a base member: show link to base member -->
- <xsl:when test="/document/reference/overrides/member and not(/document/reference/versions/versions[1]//version)">
- <include item="useBaseSummary">
- <parameter>
- <xsl:apply-templates select="/document/reference/overrides/member" mode="link"/>
- </parameter>
- </include>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[2]" />
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- Flags attribute boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.FlagsAttribute']">
- <p>
- <include item="flagsSummary">
- <parameter><referenceLink target="{/document/reference/attributes/attribute/type/@api}" /></parameter>
- </include>
- </p>
- </xsl:if>
-
- <!-- Non Cls Compliant boilerplate -->
- <xsl:if test="/document/reference/attributes/attribute[type[@api='T:System.CLSCompliantAttribute']]/argument[value='False']">
- <p/>
- <include item="NotClsCompliant"/>
- <xsl:text> </xsl:text>
- <xsl:if test="/document/comments/ddue:dduexml/ddue:clsCompliantAlternative">
- <include item="AltClsCompliant">
- <parameter>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:clsCompliantAlternative/ddue:codeEntityReference"/>
- </parameter>
- </include>
- </xsl:if>
- </xsl:if>
-
- <xsl:if test="$group='namespace'">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" />
- </xsl:if>
-
- <!-- assembly information -->
- <xsl:if test="not($group='list' or $group='root' or $group='namespace')">
- <xsl:call-template name="requirementsInfo"/>
- </xsl:if>
-
- <!-- syntax -->
- <xsl:if test="not($group='list' or $group='namespace')">
- <xsl:apply-templates select="/document/syntax" />
- </xsl:if>
-
- <!-- show authored Dependency Property Information section for properties -->
- <xsl:if test="$subgroup='property'">
- <xsl:apply-templates select="//ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"/>
- </xsl:if>
-
- <!-- show authored Routed Event Information section for events -->
- <xsl:if test="$subgroup='event'">
- <xsl:apply-templates select="//ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"/>
- </xsl:if>
-
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$group='root'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- <xsl:when test="$subgroup='DerivedTypeList'">
- <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/reference/elements" mode="member" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- exceptions -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" />
- <!-- remarks -->
- <xsl:if test="not($group='namespace')">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:remarks[1])">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks[1]" />
- </xsl:when>
- <xsl:when test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:call-template name="hostProtectionSection" />
- </xsl:when>
- </xsl:choose>
- </xsl:if>
- <!-- example -->
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" />
- <!-- permissions -->
- <xsl:call-template name="permissionsSection"/>
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <!-- other comment sections -->
- <xsl:if test="$subgroup='class' or $subgroup='structure'">
- <xsl:call-template name="threadSafety" />
- </xsl:if>
- <xsl:if test="not($group='list' or $group='namespace' or $group='root')">
- <!--platforms-->
- <xsl:apply-templates select="/document/reference/platforms" />
- <!--versions-->
- <xsl:apply-templates select="/document/reference/versions" />
- </xsl:if>
- <!-- see also -->
- <xsl:call-template name="seeAlsoSection"/>
-
- </xsl:template>
-
- <xsl:template name="obsoleteSection">
- <p>
- <include item="ObsoleteBoilerPlate">
- <parameter>
- <xsl:value-of select="$subgroup"/>
- </parameter>
- </include>
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity">
- <xsl:text> </xsl:text>
- <include item="nonobsoleteAlternative">
- <parameter><xsl:apply-templates select="ddue:codeEntityReference" /></parameter>
- </include>
- </xsl:for-each>
- </p>
- </xsl:template>
-
- <xsl:template name="internalOnly">
- <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly or /document/reference/containers/ddue:internalOnly">
- <div id="internalonly" class="seeAlsoNoToggleSection">
- <p/>
- <include item="internalOnly" />
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:choose>
- <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter) != ''">
- <span data="authoredParameterSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
- </span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[2]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue[1]) != ''">
- <span data="authoredValueSummary">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue[1]" />
- </span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue[2]" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="returns">
- <div id="returns">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include>
- <!-- title is propertyValueTitle or methodValueTitle or fieldValueTitle -->
- <xsl:attribute name="item">
- <xsl:value-of select="$api-subgroup" />
- <xsl:text>ValueTitle</xsl:text>
- </xsl:attribute>
- </include>
- </xsl:with-param>
- <xsl:with-param name="content">
- <include item="typeLink">
- <parameter>
- <xsl:apply-templates select="*[1]" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
- </parameter>
- </include>
- <br />
- <xsl:call-template name="getReturnsDescription" />
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
- <xsl:template match="templates">
- <div id="genericParameters">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="template">
- <xsl:variable name="parameterName" select="@name" />
- <dl paramName="{$parameterName}">
- <dt>
- <span class="parameter"><xsl:value-of select="$parameterName"/></span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]/ddue:content" />
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <xsl:choose>
- <xsl:when test="normalize-space(ddue:summary[1]) != ''">
- <span data="memberAuthoredSummary">
- <xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" />
- </span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="ddue:summary[2]/ddue:para/node()" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
- <xsl:choose>
- <xsl:when test="ddue:internalOnly">
- <include item="infraStructure" />
- </xsl:when>
- <xsl:when test="count(element) > 0">
- <xsl:variable name="internal">
- <xsl:for-each select="element">
- <xsl:if test="not(ddue:internalOnly)">
- <xsl:text>no</xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="not(normalize-space($internal))">
- <include item="infraStructure" />
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="getOverloadSummary">
-
- </xsl:template>
-
- <xsl:template name="getOverloadSections">
-
- </xsl:template>
-
- <xsl:template match="syntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'syntax'" />
- <xsl:with-param name="title">
- <include item="syntaxTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <div id="syntaxCodeBlocks" class="code">
- <xsl:call-template name="syntaxBlocks" />
- </div>
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/templates" />
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/reference/returns" />
- <xsl:apply-templates select="/document/reference/implements" />
- <!-- usage note for extension methods -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Runtime.CompilerServices.ExtensionAttribute'] and boolean($api-subgroup='method')">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="extensionUsageTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <include item="extensionUsageText">
- <parameter>
- <xsl:apply-templates select="/document/reference/parameters/parameter[1]/type" mode="link" />
- </parameter>
- </include>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
-
- <!-- DDUEXML elements that behave differently in conceptual and reference -->
-
- <xsl:template match="ddue:exceptions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="ddue:exception">
- <div class="tableSection">
- <table width="100%" cellspacing="2" cellpadding="5" frame="lhs">
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="ddue:exception">
- <tr>
- <td>
- <xsl:apply-templates select="ddue:codeEntityReference" />
- </td>
- <td>
- <xsl:apply-templates select="ddue:content" />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="permissionsSection">
- <!-- the containers/library/noAptca is added to reflection data by the ApplyVsDocModel transform -->
- <xsl:variable name="showAptcaBoilerplate" select="boolean(/document/reference/containers/library/noAptca)"/>
- <xsl:if test="/document/comments/ddue:dduexml/ddue:permissions[normalize-space(.)] or $showAptcaBoilerplate">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'permissions'" />
- <xsl:with-param name="title">
- <include item="permissionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <ul>
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:permissions/ddue:permission">
- <li>
- <xsl:apply-templates select="ddue:codeEntityReference"/> <xsl:apply-templates select="ddue:content"/>
- </li>
- </xsl:for-each>
- <xsl:if test="$showAptcaBoilerplate">
- <li>
- <include item="aptca" />
- </li>
- </xsl:if>
- </ul>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExample">
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <include item="runningHeaderText" />
- </xsl:template>
-
- <xsl:template name="memberIntro">
- <xsl:if test="$subgroup='members'">
- <p>
- <xsl:apply-templates select="/document/reference/containers/ddue:summary"/>
- </p>
- </xsl:if>
- <xsl:call-template name="memberIntroBoilerplate"/>
- </xsl:template>
-
- <xsl:template name="mshelpCodelangAttributes">
-
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:snippets/ddue:snippet">
-
- <xsl:if test="not(@language=preceding::*/@language)">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'VBScript' or @language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" >
- <xsl:text>kbLangVB</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" >
- <xsl:text>kbLangCPP</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'">
- <xsl:text>kbJScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xml</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$codeLang='other'" />
- <xsl:otherwise>
- <xsl:call-template name="codeLang">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:codeEntityReference" mode="abstract">
- <xsl:call-template name="subString">
- <xsl:with-param name="name" select="." />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="hostProtectionSection">
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title">
- <include item="remarksTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="hostProtectionContent" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <div id="footer">
- <div class="footerLine">
- <img width="100%" height="3px">
- <includeAttribute name="src" item="iconPath">
- <parameter>footer.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="footerImage" />
- </img>
- </div>
-
- <include item="footer">
- <parameter>
- <xsl:value-of select="$key"/>
- </parameter>
- <parameter>
- <xsl:call-template name="topicTitlePlain"/>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" />
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" />
- </parameter>
- </include>
- </div>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <!-- stuff specific to comments authored in DDUEXML --> + + <xsl:include href="utilities_reference.xsl" /> + <xsl:include href="utilities_dduexml.xsl" /> + <xsl:include href="htmlBody.xsl"/> + + <xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" /> + + <xsl:variable name="abstractSummary"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:summary"> + <xsl:apply-templates select="." mode="abstract" /> + </xsl:for-each> + </xsl:variable> + + <xsl:variable name="hasSeeAlsoSection" + select="boolean( + (count(/document/comments/ddue:dduexml/ddue:relatedTopics/*) > 0) or + ($group='type' or $group='member' or $group='list') + )"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)" /> + <xsl:template name="body"> + + <!--internalOnly boilerplate --> + <xsl:call-template name="internalOnly"/> + + <!-- obsolete boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:call-template name="obsoleteSection" /> + </xsl:if> + + <!-- summary --> + <!-- useBase boilerplate --> + <xsl:if test="/document/comments/ddue:dduexml/ddue:useBase and /document/reference/overrides/member"> + <include item="useBaseBoilerplate"> + <parameter> + <xsl:apply-templates select="/document/reference/overrides/member" mode="link"/> + </parameter> + </include> + </xsl:if> + <xsl:choose> + <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:summary[1]) != ''"> + <span data="authoredSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[1]" /> + </span> + </xsl:when> + <!-- if no authored summary, and not in primary framework (e.g. netfw), and overrides a base member: show link to base member --> + <xsl:when test="/document/reference/overrides/member and not(/document/reference/versions/versions[1]//version)"> + <include item="useBaseSummary"> + <parameter> + <xsl:apply-templates select="/document/reference/overrides/member" mode="link"/> + </parameter> + </include> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[2]" /> + </xsl:otherwise> + </xsl:choose> + + <!-- Flags attribute boilerplate --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.FlagsAttribute']"> + <p> + <include item="flagsSummary"> + <parameter><referenceLink target="{/document/reference/attributes/attribute/type/@api}" /></parameter> + </include> + </p> + </xsl:if> + + <!-- Non Cls Compliant boilerplate --> + <xsl:if test="/document/reference/attributes/attribute[type[@api='T:System.CLSCompliantAttribute']]/argument[value='False']"> + <p/> + <include item="NotClsCompliant"/> + <xsl:text> </xsl:text> + <xsl:if test="/document/comments/ddue:dduexml/ddue:clsCompliantAlternative"> + <include item="AltClsCompliant"> + <parameter> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:clsCompliantAlternative/ddue:codeEntityReference"/> + </parameter> + </include> + </xsl:if> + </xsl:if> + + <xsl:if test="$group='namespace'"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" /> + </xsl:if> + + <!-- assembly information --> + <xsl:if test="not($group='list' or $group='root' or $group='namespace')"> + <xsl:call-template name="requirementsInfo"/> + </xsl:if> + + <!-- syntax --> + <xsl:if test="not($group='list' or $group='namespace')"> + <xsl:apply-templates select="/document/syntax" /> + </xsl:if> + + <!-- show authored Dependency Property Information section for properties --> + <xsl:if test="$subgroup='property'"> + <xsl:apply-templates select="//ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"/> + </xsl:if> + + <!-- show authored Routed Event Information section for events --> + <xsl:if test="$subgroup='event'"> + <xsl:apply-templates select="//ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"/> + </xsl:if> + + <!-- members --> + <xsl:choose> + <xsl:when test="$group='root'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='list'"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + <xsl:when test="$subgroup='DerivedTypeList'"> + <xsl:apply-templates select="/document/reference/elements" mode="derivedType" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/reference/elements" mode="member" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + <!-- exceptions --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" /> + <!-- remarks --> + <xsl:if test="not($group='namespace')"> + <xsl:choose> + <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:remarks[1])"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks[1]" /> + </xsl:when> + <xsl:when test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:call-template name="hostProtectionSection" /> + </xsl:when> + </xsl:choose> + </xsl:if> + <!-- example --> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" /> + <!-- permissions --> + <xsl:call-template name="permissionsSection"/> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <!-- other comment sections --> + <xsl:if test="$subgroup='class' or $subgroup='structure'"> + <xsl:call-template name="threadSafety" /> + </xsl:if> + <xsl:if test="not($group='list' or $group='namespace' or $group='root')"> + <!--platforms--> + <xsl:apply-templates select="/document/reference/platforms" /> + <!--versions--> + <xsl:apply-templates select="/document/reference/versions" /> + </xsl:if> + <!-- see also --> + <xsl:call-template name="seeAlsoSection"/> + + </xsl:template> + + <xsl:template name="obsoleteSection"> + <p> + <include item="ObsoleteBoilerPlate"> + <parameter> + <xsl:value-of select="$subgroup"/> + </parameter> + </include> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:obsoleteCodeEntity"> + <xsl:text> </xsl:text> + <include item="nonobsoleteAlternative"> + <parameter><xsl:apply-templates select="ddue:codeEntityReference" /></parameter> + </include> + </xsl:for-each> + </p> + </xsl:template> + + <xsl:template name="internalOnly"> + <xsl:if test="/document/comments/ddue:dduexml/ddue:internalOnly or /document/reference/containers/ddue:internalOnly"> + <div id="internalonly" class="seeAlsoNoToggleSection"> + <p/> + <include item="internalOnly" /> + </div> + </xsl:if> + </xsl:template> + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <xsl:choose> + <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter) != ''"> + <span data="authoredParameterSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" /> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[2]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <xsl:choose> + <xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue[1]) != ''"> + <span data="authoredValueSummary"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue[1]" /> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue[2]" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="returns"> + <div id="returns"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include> + <!-- title is propertyValueTitle or methodValueTitle or fieldValueTitle --> + <xsl:attribute name="item"> + <xsl:value-of select="$api-subgroup" /> + <xsl:text>ValueTitle</xsl:text> + </xsl:attribute> + </include> + </xsl:with-param> + <xsl:with-param name="content"> + <include item="typeLink"> + <parameter> + <xsl:apply-templates select="*[1]" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + </parameter> + </include> + <br /> + <xsl:call-template name="getReturnsDescription" /> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + <xsl:template match="templates"> + <div id="genericParameters"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"><include item="templatesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="template"> + <xsl:variable name="parameterName" select="@name" /> + <dl paramName="{$parameterName}"> + <dt> + <span class="parameter"><xsl:value-of select="$parameterName"/></span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:genericParameters/ddue:genericParameter[string(ddue:parameterReference)=$parameterName]/ddue:content" /> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template name="getElementDescription"> + <xsl:choose> + <xsl:when test="normalize-space(ddue:summary[1]) != ''"> + <span data="memberAuthoredSummary"> + <xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" /> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="ddue:summary[2]/ddue:para/node()" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + <xsl:choose> + <xsl:when test="ddue:internalOnly"> + <include item="infraStructure" /> + </xsl:when> + <xsl:when test="count(element) > 0"> + <xsl:variable name="internal"> + <xsl:for-each select="element"> + <xsl:if test="not(ddue:internalOnly)"> + <xsl:text>no</xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:if test="not(normalize-space($internal))"> + <include item="infraStructure" /> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="getOverloadSummary"> + + </xsl:template> + + <xsl:template name="getOverloadSections"> + + </xsl:template> + + <xsl:template match="syntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'syntax'" /> + <xsl:with-param name="title"> + <include item="syntaxTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <div id="syntaxCodeBlocks" class="code"> + <xsl:call-template name="syntaxBlocks" /> + </div> + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/templates" /> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/reference/returns" /> + <xsl:apply-templates select="/document/reference/implements" /> + <!-- usage note for extension methods --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Runtime.CompilerServices.ExtensionAttribute'] and boolean($api-subgroup='method')"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="extensionUsageTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <include item="extensionUsageText"> + <parameter> + <xsl:apply-templates select="/document/reference/parameters/parameter[1]/type" mode="link" /> + </parameter> + </include> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + + <!-- DDUEXML elements that behave differently in conceptual and reference --> + + <xsl:template match="ddue:exceptions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'ddueExceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="ddue:exception"> + <div class="tableSection"> + <table width="100%" cellspacing="2" cellpadding="5" frame="lhs"> + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="ddue:exception"> + <tr> + <td> + <xsl:apply-templates select="ddue:codeEntityReference" /> + </td> + <td> + <xsl:apply-templates select="ddue:content" /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="permissionsSection"> + <!-- the containers/library/noAptca is added to reflection data by the ApplyVsDocModel transform --> + <xsl:variable name="showAptcaBoilerplate" select="boolean(/document/reference/containers/library/noAptca)"/> + <xsl:if test="/document/comments/ddue:dduexml/ddue:permissions[normalize-space(.)] or $showAptcaBoilerplate"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'permissions'" /> + <xsl:with-param name="title"> + <include item="permissionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <ul> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:permissions/ddue:permission"> + <li> + <xsl:apply-templates select="ddue:codeEntityReference"/> <xsl:apply-templates select="ddue:content"/> + </li> + </xsl:for-each> + <xsl:if test="$showAptcaBoilerplate"> + <li> + <include item="aptca" /> + </li> + </xsl:if> + </ul> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExample"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template name="runningHeader"> + <include item="runningHeaderText" /> + </xsl:template> + + <xsl:template name="memberIntro"> + <xsl:if test="$subgroup='members'"> + <p> + <xsl:apply-templates select="/document/reference/containers/ddue:summary"/> + </p> + </xsl:if> + <xsl:call-template name="memberIntroBoilerplate"/> + </xsl:template> + + <xsl:template name="mshelpCodelangAttributes"> + + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:snippets/ddue:snippet"> + + <xsl:if test="not(@language=preceding::*/@language)"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'VBScript' or @language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" > + <xsl:text>kbLangVB</xsl:text> + </xsl:when> + <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" > + <xsl:text>kbLangCPP</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'"> + <xsl:text>kbJScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xml</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$codeLang='other'" /> + <xsl:otherwise> + <xsl:call-template name="codeLang"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:codeEntityReference" mode="abstract"> + <xsl:call-template name="subString"> + <xsl:with-param name="name" select="." /> + </xsl:call-template> + </xsl:template> + + <xsl:template name="hostProtectionSection"> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'remarks'"/> + <xsl:with-param name="title"> + <include item="remarksTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="hostProtectionContent" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <div id="footer"> + <div class="footerLine"> + <img width="100%" height="3px"> + <includeAttribute name="src" item="iconPath"> + <parameter>footer.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="footerImage" /> + </img> + </div> + + <include item="footer"> + <parameter> + <xsl:value-of select="$key"/> + </parameter> + <parameter> + <xsl:call-template name="topicTitlePlain"/> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" /> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" /> + </parameter> + </include> + </div> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl index 4366aaa..3b9b642 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl @@ -1,727 +1,727 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <!-- stuff specified to comments authored in DDUEXML -->
-
-
- <xsl:include href="htmlBody.xsl"/>
- <xsl:include href="utilities_reference.xsl" />
-
- <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
- <xsl:variable name="abstractSummary" select="/document/comments/summary" />
- <xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments/seealso | /document/comments/summary/seealso) > 0) or
- ($group='type' or $group='member' or $group='list'))"/>
- <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)"/>
- <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)" />
-
- <xsl:template name="body">
-
- <!-- auto-inserted info -->
- <!-- <xsl:apply-templates select="/document/reference/attributes" /> -->
- <xsl:apply-templates select="/document/comments/preliminary" />
- <xsl:apply-templates select="/document/comments/summary" />
- <xsl:if test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" />
- </xsl:if>
- <!-- assembly information -->
- <xsl:if test="not($group='list' or $group='root' or $group='namespace')">
- <xsl:call-template name="requirementsInfo"/>
- </xsl:if>
- <!-- syntax -->
- <xsl:if test="not($group='list' or $group='namespace')">
- <xsl:apply-templates select="/document/syntax" />
- </xsl:if>
- <!-- members -->
- <xsl:choose>
- <xsl:when test="$group='root'">
- <xsl:apply-templates select="/document/reference/elements" mode="root" />
- </xsl:when>
- <xsl:when test="$group='namespace'">
- <xsl:apply-templates select="/document/reference/elements" mode="namespace" />
- </xsl:when>
- <xsl:when test="$subgroup='enumeration'">
- <xsl:apply-templates select="/document/reference/elements" mode="enumeration" />
- </xsl:when>
- <xsl:when test="$group='type'">
- <xsl:apply-templates select="/document/reference/elements" mode="type" />
- </xsl:when>
- <xsl:when test="$group='list'">
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:apply-templates select="/document/reference/elements" mode="overload" />
- </xsl:when>
- <xsl:when test="$subgroup='DerivedTypeList'">
- <xsl:apply-templates select="/document/reference/elements" mode="derivedType" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/document/reference/elements" mode="member" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- <!-- remarks -->
- <xsl:apply-templates select="/document/comments/remarks" />
- <!-- example -->
- <xsl:apply-templates select="/document/comments/example" />
- <!-- other comment sections -->
- <!-- permissions -->
- <xsl:call-template name="permissions" />
- <!-- exceptions -->
- <xsl:call-template name="exceptions" />
- <!-- inheritance -->
- <xsl:apply-templates select="/document/reference/family" />
- <xsl:apply-templates select="/document/comments/threadsafety" />
- <!--versions-->
- <xsl:if test="not($group='list' or $group='namespace' or $group='root' )">
- <xsl:apply-templates select="/document/reference/versions" />
- </xsl:if>
- <!-- see also -->
- <xsl:call-template name="seealso" />
-
- </xsl:template>
-
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getReturnsDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </xsl:template>
-
- <xsl:template name="getElementDescription">
- <xsl:apply-templates select="summary[1]" />
- </xsl:template>
-
- <xsl:template name="getOverloadSummary">
- <xsl:apply-templates select="overloads" mode="summary"/>
- </xsl:template>
-
- <xsl:template name="getOverloadSections">
- <xsl:apply-templates select="overloads" mode="sections"/>
- </xsl:template>
-
- <xsl:template name="getInternalOnlyDescription">
-
- </xsl:template>
-
-
- <!-- block sections -->
-
- <xsl:template match="summary">
- <div class="summary">
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="overloads" mode="summary">
- <xsl:choose>
- <xsl:when test="count(summary) > 0">
- <xsl:apply-templates select="summary" />
- </xsl:when>
- <xsl:otherwise>
- <div class="summary">
- <xsl:apply-templates/>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="overloads" mode="sections">
- <xsl:apply-templates select="remarks" />
- <xsl:apply-templates select="example"/>
- </xsl:template>
-
- <xsl:template match="value">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="fieldValueTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="returns">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="methodValueTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="templates">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'templates'" />
- <xsl:with-param name="title">
- <include item="templatesTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <dl>
- <xsl:for-each select="template">
- <xsl:variable name="templateName" select="@name" />
- <dt>
- <span class="parameter">
- <xsl:value-of select="$templateName"/>
- </span>
- </dt>
- <dd>
- <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" />
- </dd>
- </xsl:for-each>
- </dl>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="remarks">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="example">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
- <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="para">
- <p><xsl:apply-templates /></p>
- </xsl:template>
-
- <xsl:template match="code">
-
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" >
- <xsl:text>VisualBasic</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" >
- <xsl:text>ManagedCPlusPlus</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'j#' or @language = 'jsharp'">
- <xsl:text>JSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xmlLang</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xaml' or @language = 'XAML'">
- <xsl:text>XAML</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:call-template name="codeSection">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
-
- </xsl:template>
-
- <xsl:template name="exceptions">
- <xsl:if test="count(/document/comments/exception) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'exceptions'"/>
- <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <div class="tableSection">
- <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
- <tr>
- <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th>
- <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th>
- </tr>
- <xsl:for-each select="/document/comments/exception">
- <tr>
- <td><referenceLink target="{@cref}" qualified="true" /></td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="permissions">
- <xsl:if test="count(/document/comments/permission) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'permissions'" />
- <xsl:with-param name="title">
- <include item="permissionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <div class="tableSection">
- <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
- <tr>
- <th class="permissionNameColumn">
- <include item="permissionNameHeader" />
- </th>
- <th class="permissionDescriptionColumn">
- <include item="permissionDescriptionHeader" />
- </th>
- </tr>
- <xsl:for-each select="/document/comments/permission">
- <tr>
- <td>
- <referenceLink target="{@cref}" qualified="true" />
- </td>
- <td>
- <xsl:apply-templates select="." />
- </td>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="seealso">
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'" />
- <xsl:with-param name="title">
- <include item="relatedTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="." />
- </div>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="list[@type='bullet']">
- <ul>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ul>
- </xsl:template>
-
- <xsl:template match="list[@type='number']">
- <ol>
- <xsl:for-each select="item">
- <li><xsl:apply-templates /></li>
- </xsl:for-each>
- </ol>
- </xsl:template>
-
- <xsl:template match="list[@type='table']">
- <div class="tableSection">
- <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" >
- <xsl:for-each select="listheader">
- <tr>
- <xsl:for-each select="*">
- <th><xsl:apply-templates /></th>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- <xsl:for-each select="item">
- <tr>
- <xsl:for-each select="*">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:for-each>
- </tr>
- </xsl:for-each>
- </table>
- </div>
- </xsl:template>
-
- <!-- inline tags -->
-
- <xsl:template match="see[@cref]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="seealso[@href]">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="." />
- </a>
- </xsl:when>
- <xsl:otherwise>
- <a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
- <xsl:value-of select="@href" />
- </a>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="see[@langword]">
- <span class="keyword">
- <xsl:choose>
- <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="languageSpecificText">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </span>
- </xsl:when>
- <xsl:when test="@langword='static' or @langword='Shared'">
- <span class="languageSpecificText">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </span>
- </xsl:when>
- <xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="languageSpecificText">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </span>
- </xsl:when>
- <xsl:when test="@langword='true' or @langword='True'">
- <span class="languageSpecificText">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </span>
- </xsl:when>
- <xsl:when test="@langword='false' or @langword='False'">
- <span class="languageSpecificText">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </span>
- </xsl:when>
- <xsl:when test="@langword='abstract'">
- <span class="languageSpecificText">
- <span class="cs">abstract</span>
- <span class="vb">MustInherit</span>
- <span class="cpp">abstract</span>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@langword" />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- <xsl:choose>
- <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="nu"><include item="nullKeyword"/></span>
- </xsl:when>
- <xsl:when test="@langword='static' or @langword='Shared'">
- <span class="nu"><include item="staticKeyword"/></span>
- </xsl:when>
- <xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="nu"><include item="virtualKeyword"/></span>
- </xsl:when>
- <xsl:when test="@langword='true' or @langword='True'">
- <span class="nu"><include item="trueKeyword"/></span>
- </xsl:when>
- <xsl:when test="@langword='false' or @langword='False'">
- <span class="nu"><include item="falseKeyword"/></span>
- </xsl:when>
- <xsl:when test="@langword='abstract'">
- <span class="nu"><include item="abstractKeyword"/></span>
- </xsl:when>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template match="seealso">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <referenceLink target="{@cref}" qualified="true">
- <xsl:value-of select="." />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@cref}" qualified="true" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="c">
- <span class="code">
- <xsl:value-of select="." />
- </span>
- </xsl:template>
-
- <xsl:template match="paramref">
- <span class="parameter">
- <xsl:value-of select="@name" />
- </span>
- </xsl:template>
-
- <xsl:template match="typeparamref">
- <span class="typeparameter">
- <xsl:value-of select="@name" />
- </span>
- </xsl:template>
-
- <xsl:template match="syntax">
- <xsl:if test="count(*) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'syntax'" />
- <xsl:with-param name="title">
- <include item="syntaxTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <div id="syntaxCodeBlocks" class="code">
- <xsl:call-template name="syntaxBlocks" />
- </div>
- <!-- parameters & return value -->
- <xsl:apply-templates select="/document/reference/parameters" />
- <xsl:apply-templates select="/document/reference/templates" />
- <xsl:apply-templates select="/document/comments/value" />
- <xsl:apply-templates select="/document/comments/returns" />
- <xsl:apply-templates select="/document/reference/implements" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="runningHeader">
- <include item="runningHeaderText" />
- </xsl:template>
-
- <!-- pass through html tags -->
-
- <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font">
- <xsl:copy>
- <xsl:copy-of select="@*" />
- <xsl:apply-templates />
- </xsl:copy>
- </xsl:template>
-
- <!-- extra tag support -->
-
- <xsl:template match="threadsafety">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'threadSafety'" />
- <xsl:with-param name="title">
- <include item="threadSafetyTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="normalize-space(.)">
- <xsl:apply-templates />
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="@static='true'">
- <include item="staticThreadSafe" />
- </xsl:if>
- <xsl:if test="@static='false'">
- <include item="staticNotThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='true'">
- <include item="instanceThreadSafe" />
- </xsl:if>
- <xsl:if test="@instance='false'">
- <include item="instanceNotThreadSafe" />
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="note">
- <div class="alert">
- <img>
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="noteAltText" />
- </img>
- <xsl:text> </xsl:text>
- <include item="noteTitle" />
- <xsl:apply-templates />
- </div>
- </xsl:template>
-
- <xsl:template match="preliminary">
- <div class="preliminary">
- <include item="preliminaryText" />
- </div>
- </xsl:template>
-
- <!-- move these off into a shared file -->
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
-
- <referenceLink target="{$id}" qualified="{$qualified}" />
-
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" />
- <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" />
-
- <h1 class="heading">
- <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
- <img id="{$toggleTitle}" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:copy-of select="$title" />
- </span>
- </h1>
-
- <div id="{$toggleSection}" class="section" name="collapseableSection" style="">
- <xsl:copy-of select="$content" />
- </div>
-
- </xsl:template>
-
- <xsl:template name="subSection">
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <h4 class="subHeading">
- <xsl:copy-of select="$title" />
- </h4>
- <xsl:copy-of select="$content" />
-
- </xsl:template>
-
- <xsl:template name="memberIntro">
- <xsl:if test="$subgroup='members'">
- <p>
- <xsl:apply-templates select="/document/reference/containers/summary"/>
- </p>
- </xsl:if>
- <xsl:call-template name="memberIntroBoilerplate"/>
- </xsl:template>
-
- <xsl:template name="mshelpCodelangAttributes">
- <xsl:for-each select="/document/comments/example/code">
-
- <xsl:if test="not(@language=preceding::*/@language)">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'VBScript' or @language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" >
- <xsl:text>kbLangVB</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" >
- <xsl:text>kbLangCPP</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'">
- <xsl:text>kbJScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xml</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$codeLang='other'" />
- <xsl:otherwise>
- <xsl:call-template name="codeLang">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
-
- </xsl:for-each>
- </xsl:template>
-
- <!-- Footer stuff -->
-
- <xsl:template name="foot">
- <div id="footer">
-
- <div class="footerLine">
- <img width="100%" height="3px">
- <includeAttribute name="src" item="iconPath">
- <parameter>footer.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="footerImage" />
- </img>
- </div>
-
- <include item="footer">
- <parameter>
- <xsl:value-of select="$key"/>
- </parameter>
- <parameter>
- <xsl:call-template name="topicTitlePlain"/>
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" />
- </parameter>
- <parameter>
- <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" />
- </parameter>
- </include>
- </div>
- </xsl:template>
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <!-- stuff specified to comments authored in DDUEXML --> + + + <xsl:include href="htmlBody.xsl"/> + <xsl:include href="utilities_reference.xsl" /> + + <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" /> + <xsl:variable name="abstractSummary" select="/document/comments/summary" /> + <xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments/seealso | /document/comments/summary/seealso) > 0) or + ($group='type' or $group='member' or $group='list'))"/> + <xsl:variable name="examplesSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)"/> + <xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/example[normalize-space(.)]) > 0)" /> + + <xsl:template name="body"> + + <!-- auto-inserted info --> + <!-- <xsl:apply-templates select="/document/reference/attributes" /> --> + <xsl:apply-templates select="/document/comments/preliminary" /> + <xsl:apply-templates select="/document/comments/summary" /> + <xsl:if test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" /> + </xsl:if> + <!-- assembly information --> + <xsl:if test="not($group='list' or $group='root' or $group='namespace')"> + <xsl:call-template name="requirementsInfo"/> + </xsl:if> + <!-- syntax --> + <xsl:if test="not($group='list' or $group='namespace')"> + <xsl:apply-templates select="/document/syntax" /> + </xsl:if> + <!-- members --> + <xsl:choose> + <xsl:when test="$group='root'"> + <xsl:apply-templates select="/document/reference/elements" mode="root" /> + </xsl:when> + <xsl:when test="$group='namespace'"> + <xsl:apply-templates select="/document/reference/elements" mode="namespace" /> + </xsl:when> + <xsl:when test="$subgroup='enumeration'"> + <xsl:apply-templates select="/document/reference/elements" mode="enumeration" /> + </xsl:when> + <xsl:when test="$group='type'"> + <xsl:apply-templates select="/document/reference/elements" mode="type" /> + </xsl:when> + <xsl:when test="$group='list'"> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:apply-templates select="/document/reference/elements" mode="overload" /> + </xsl:when> + <xsl:when test="$subgroup='DerivedTypeList'"> + <xsl:apply-templates select="/document/reference/elements" mode="derivedType" /> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/document/reference/elements" mode="member" /> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + </xsl:choose> + <!-- remarks --> + <xsl:apply-templates select="/document/comments/remarks" /> + <!-- example --> + <xsl:apply-templates select="/document/comments/example" /> + <!-- other comment sections --> + <!-- permissions --> + <xsl:call-template name="permissions" /> + <!-- exceptions --> + <xsl:call-template name="exceptions" /> + <!-- inheritance --> + <xsl:apply-templates select="/document/reference/family" /> + <xsl:apply-templates select="/document/comments/threadsafety" /> + <!--versions--> + <xsl:if test="not($group='list' or $group='namespace' or $group='root' )"> + <xsl:apply-templates select="/document/reference/versions" /> + </xsl:if> + <!-- see also --> + <xsl:call-template name="seealso" /> + + </xsl:template> + + <xsl:template name="getParameterDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getReturnsDescription"> + <xsl:param name="name" /> + <xsl:apply-templates select="/document/comments/param[@name=$name]" /> + </xsl:template> + + <xsl:template name="getElementDescription"> + <xsl:apply-templates select="summary[1]" /> + </xsl:template> + + <xsl:template name="getOverloadSummary"> + <xsl:apply-templates select="overloads" mode="summary"/> + </xsl:template> + + <xsl:template name="getOverloadSections"> + <xsl:apply-templates select="overloads" mode="sections"/> + </xsl:template> + + <xsl:template name="getInternalOnlyDescription"> + + </xsl:template> + + + <!-- block sections --> + + <xsl:template match="summary"> + <div class="summary"> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="overloads" mode="summary"> + <xsl:choose> + <xsl:when test="count(summary) > 0"> + <xsl:apply-templates select="summary" /> + </xsl:when> + <xsl:otherwise> + <div class="summary"> + <xsl:apply-templates/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="overloads" mode="sections"> + <xsl:apply-templates select="remarks" /> + <xsl:apply-templates select="example"/> + </xsl:template> + + <xsl:template match="value"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="fieldValueTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="returns"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="methodValueTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="templates"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'templates'" /> + <xsl:with-param name="title"> + <include item="templatesTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <dl> + <xsl:for-each select="template"> + <xsl:variable name="templateName" select="@name" /> + <dt> + <span class="parameter"> + <xsl:value-of select="$templateName"/> + </span> + </dt> + <dd> + <xsl:apply-templates select="/document/comments/typeparam[@name=$templateName]" /> + </dd> + </xsl:for-each> + </dl> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="remarks"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'remarks'"/> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="example"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'"/> + <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param> + <xsl:with-param name="content"><xsl:apply-templates /></xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="para"> + <p><xsl:apply-templates /></p> + </xsl:template> + + <xsl:template match="code"> + + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" > + <xsl:text>VisualBasic</xsl:text> + </xsl:when> + <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" > + <xsl:text>ManagedCPlusPlus</xsl:text> + </xsl:when> + <xsl:when test="@language = 'j#' or @language = 'jsharp'"> + <xsl:text>JSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xmlLang</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xaml' or @language = 'XAML'"> + <xsl:text>XAML</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:call-template name="codeSection"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + + </xsl:template> + + <xsl:template name="exceptions"> + <xsl:if test="count(/document/comments/exception) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'exceptions'"/> + <xsl:with-param name="title"><include item="exceptionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <div class="tableSection"> + <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" > + <tr> + <th class="exceptionNameColumn"><include item="exceptionNameHeader" /></th> + <th class="exceptionConditionColumn"><include item="exceptionConditionHeader" /></th> + </tr> + <xsl:for-each select="/document/comments/exception"> + <tr> + <td><referenceLink target="{@cref}" qualified="true" /></td> + <td> + <xsl:apply-templates select="." /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="permissions"> + <xsl:if test="count(/document/comments/permission) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'permissions'" /> + <xsl:with-param name="title"> + <include item="permissionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <div class="tableSection"> + <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" > + <tr> + <th class="permissionNameColumn"> + <include item="permissionNameHeader" /> + </th> + <th class="permissionDescriptionColumn"> + <include item="permissionDescriptionHeader" /> + </th> + </tr> + <xsl:for-each select="/document/comments/permission"> + <tr> + <td> + <referenceLink target="{@cref}" qualified="true" /> + </td> + <td> + <xsl:apply-templates select="." /> + </td> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="seealso"> + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'" /> + <xsl:with-param name="title"> + <include item="relatedTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="autogenSeeAlsoLinks"/> + <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="." /> + </div> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="list[@type='bullet']"> + <ul> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ul> + </xsl:template> + + <xsl:template match="list[@type='number']"> + <ol> + <xsl:for-each select="item"> + <li><xsl:apply-templates /></li> + </xsl:for-each> + </ol> + </xsl:template> + + <xsl:template match="list[@type='table']"> + <div class="tableSection"> + <table width="100%" cellspacing="2" cellpadding="5" frame="lhs" > + <xsl:for-each select="listheader"> + <tr> + <xsl:for-each select="*"> + <th><xsl:apply-templates /></th> + </xsl:for-each> + </tr> + </xsl:for-each> + <xsl:for-each select="item"> + <tr> + <xsl:for-each select="*"> + <td> + <xsl:apply-templates /> + </td> + </xsl:for-each> + </tr> + </xsl:for-each> + </table> + </div> + </xsl:template> + + <!-- inline tags --> + + <xsl:template match="see[@cref]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="seealso[@href]"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="." /> + </a> + </xsl:when> + <xsl:otherwise> + <a> + <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute> + <xsl:value-of select="@href" /> + </a> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="see[@langword]"> + <span class="keyword"> + <xsl:choose> + <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'"> + <span class="languageSpecificText"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </span> + </xsl:when> + <xsl:when test="@langword='static' or @langword='Shared'"> + <span class="languageSpecificText"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </span> + </xsl:when> + <xsl:when test="@langword='virtual' or @langword='Overridable'"> + <span class="languageSpecificText"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </span> + </xsl:when> + <xsl:when test="@langword='true' or @langword='True'"> + <span class="languageSpecificText"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </span> + </xsl:when> + <xsl:when test="@langword='false' or @langword='False'"> + <span class="languageSpecificText"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </span> + </xsl:when> + <xsl:when test="@langword='abstract'"> + <span class="languageSpecificText"> + <span class="cs">abstract</span> + <span class="vb">MustInherit</span> + <span class="cpp">abstract</span> + </span> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@langword" /> + </xsl:otherwise> + </xsl:choose> + </span> + <xsl:choose> + <xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'"> + <span class="nu"><include item="nullKeyword"/></span> + </xsl:when> + <xsl:when test="@langword='static' or @langword='Shared'"> + <span class="nu"><include item="staticKeyword"/></span> + </xsl:when> + <xsl:when test="@langword='virtual' or @langword='Overridable'"> + <span class="nu"><include item="virtualKeyword"/></span> + </xsl:when> + <xsl:when test="@langword='true' or @langword='True'"> + <span class="nu"><include item="trueKeyword"/></span> + </xsl:when> + <xsl:when test="@langword='false' or @langword='False'"> + <span class="nu"><include item="falseKeyword"/></span> + </xsl:when> + <xsl:when test="@langword='abstract'"> + <span class="nu"><include item="abstractKeyword"/></span> + </xsl:when> + </xsl:choose> + + </xsl:template> + + <xsl:template match="seealso"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <referenceLink target="{@cref}" qualified="true"> + <xsl:value-of select="." /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@cref}" qualified="true" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="c"> + <span class="code"> + <xsl:value-of select="." /> + </span> + </xsl:template> + + <xsl:template match="paramref"> + <span class="parameter"> + <xsl:value-of select="@name" /> + </span> + </xsl:template> + + <xsl:template match="typeparamref"> + <span class="typeparameter"> + <xsl:value-of select="@name" /> + </span> + </xsl:template> + + <xsl:template match="syntax"> + <xsl:if test="count(*) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'syntax'" /> + <xsl:with-param name="title"> + <include item="syntaxTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <div id="syntaxCodeBlocks" class="code"> + <xsl:call-template name="syntaxBlocks" /> + </div> + <!-- parameters & return value --> + <xsl:apply-templates select="/document/reference/parameters" /> + <xsl:apply-templates select="/document/reference/templates" /> + <xsl:apply-templates select="/document/comments/value" /> + <xsl:apply-templates select="/document/comments/returns" /> + <xsl:apply-templates select="/document/reference/implements" /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="runningHeader"> + <include item="runningHeaderText" /> + </xsl:template> + + <!-- pass through html tags --> + + <xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font"> + <xsl:copy> + <xsl:copy-of select="@*" /> + <xsl:apply-templates /> + </xsl:copy> + </xsl:template> + + <!-- extra tag support --> + + <xsl:template match="threadsafety"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'threadSafety'" /> + <xsl:with-param name="title"> + <include item="threadSafetyTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="normalize-space(.)"> + <xsl:apply-templates /> + </xsl:when> + <xsl:otherwise> + <xsl:if test="@static='true'"> + <include item="staticThreadSafe" /> + </xsl:if> + <xsl:if test="@static='false'"> + <include item="staticNotThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='true'"> + <include item="instanceThreadSafe" /> + </xsl:if> + <xsl:if test="@instance='false'"> + <include item="instanceNotThreadSafe" /> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="note"> + <div class="alert"> + <img> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="noteAltText" /> + </img> + <xsl:text> </xsl:text> + <include item="noteTitle" /> + <xsl:apply-templates /> + </div> + </xsl:template> + + <xsl:template match="preliminary"> + <div class="preliminary"> + <include item="preliminaryText" /> + </div> + </xsl:template> + + <!-- move these off into a shared file --> + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + + <referenceLink target="{$id}" qualified="{$qualified}" /> + + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="toggleSwitch" /> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" /> + <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" /> + + <h1 class="heading"> + <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0"> + <img id="{$toggleTitle}" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:copy-of select="$title" /> + </span> + </h1> + + <div id="{$toggleSection}" class="section" name="collapseableSection" style=""> + <xsl:copy-of select="$content" /> + </div> + + </xsl:template> + + <xsl:template name="subSection"> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <h4 class="subHeading"> + <xsl:copy-of select="$title" /> + </h4> + <xsl:copy-of select="$content" /> + + </xsl:template> + + <xsl:template name="memberIntro"> + <xsl:if test="$subgroup='members'"> + <p> + <xsl:apply-templates select="/document/reference/containers/summary"/> + </p> + </xsl:if> + <xsl:call-template name="memberIntroBoilerplate"/> + </xsl:template> + + <xsl:template name="mshelpCodelangAttributes"> + <xsl:for-each select="/document/comments/example/code"> + + <xsl:if test="not(@language=preceding::*/@language)"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'VBScript' or @language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'VisualBasic' or @language = 'vb' or @language = 'vb#' or @language = 'VB' or @language = 'kbLangVB'" > + <xsl:text>kbLangVB</xsl:text> + </xsl:when> + <xsl:when test="@language = 'CSharp' or @language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'ManagedCPlusPlus' or @language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++' or @language = 'kbLangCPP'" > + <xsl:text>kbLangCPP</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JSharp' or @language = 'j#' or @language = 'jsharp' or @language = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="@language = 'JScript' or @language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript' or @language = 'kbJScript'"> + <xsl:text>kbJScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xml</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="$codeLang='other'" /> + <xsl:otherwise> + <xsl:call-template name="codeLang"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + + </xsl:for-each> + </xsl:template> + + <!-- Footer stuff --> + + <xsl:template name="foot"> + <div id="footer"> + + <div class="footerLine"> + <img width="100%" height="3px"> + <includeAttribute name="src" item="iconPath"> + <parameter>footer.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="footerImage" /> + </img> + </div> + + <include item="footer"> + <parameter> + <xsl:value-of select="$key"/> + </parameter> + <parameter> + <xsl:call-template name="topicTitlePlain"/> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/item[@id='PBM_FileVersion']" /> + </parameter> + <parameter> + <xsl:value-of select="/document/metadata/attribute[@name='TopicVersion']" /> + </parameter> + </include> + </div> + </xsl:template> +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/skeleton.xml b/tools/Sandcastle/Presentation/vs2005/transforms/skeleton.xml index 66040f2..4395400 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/skeleton.xml +++ b/tools/Sandcastle/Presentation/vs2005/transforms/skeleton.xml @@ -1,6 +1,6 @@ -<document>
- <reference />
- <syntax />
- <comments />
- <metadata />
-</document>
+<document> + <reference /> + <syntax /> + <comments /> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/skeleton_conceptual.xml b/tools/Sandcastle/Presentation/vs2005/transforms/skeleton_conceptual.xml index d772566..6de97d4 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/skeleton_conceptual.xml +++ b/tools/Sandcastle/Presentation/vs2005/transforms/skeleton_conceptual.xml @@ -1,3 +1,3 @@ -<document>
- <metadata />
-</document>
+<document> + <metadata /> +</document> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl index a8dce44..24b78ca 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl @@ -1,1363 +1,1363 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" />
-
- <!-- sections -->
-
- <!-- the Remarks section includes content from these nodes, excluding the xaml sections are captured in the xaml syntax processing -->
- <xsl:template name="HasRemarksContent">
- <xsl:choose>
- <xsl:when test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">true</xsl:when>
- <xsl:when test="normalize-space(ddue:content)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForImplementers)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForCallers)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:notesForInheritors)">true</xsl:when>
- <xsl:when test="normalize-space(../ddue:platformNotes)">true</xsl:when>
- <xsl:when test="normalize-space(ddue:sections/ddue:section[not(
- starts-with(@address,'xamlValues') or
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage') or
- starts-with(@address,'dependencyPropertyInfo') or
- starts-with(@address,'routedEventInfo')
- )])">true</xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:remarks">
- <xsl:variable name="hasRemarks">
- <xsl:call-template name="HasRemarksContent"/>
- </xsl:variable>
- <xsl:if test="$hasRemarks='true'">
- <xsl:choose>
- <xsl:when test="not($group = 'namespace')">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'remarks'"/>
- <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <!-- HostProtectionAttribute -->
- <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">
- <xsl:call-template name="hostProtectionContent" />
- </xsl:if>
- <xsl:apply-templates />
- <xsl:apply-templates select="../ddue:notesForImplementers"/>
- <xsl:apply-templates select="../ddue:notesForCallers"/>
- <xsl:apply-templates select="../ddue:notesForInheritors"/>
- <xsl:apply-templates select="../ddue:platformNotes"/>
- <include item="mshelpKTable">
- <parameter>
- <xsl:text>tt_</xsl:text>
- <xsl:value-of select="$key"/>
- </parameter>
- </include>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:codeExamples">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'example'"/>
- <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- <xsl:call-template name="moreCodeSection"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!--
- **************************************************************
- CODE EXAMPLES section
- **************************************************************
- -->
- <!-- tasks/task nodes are inserted by TaskGrabberComponent which gets content from HowTo topics -->
- <!-- these nodes are handled below in the moreCodeSection -->
- <xsl:template match="ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/tasks"/>
-
- <xsl:template name="moreCodeSection">
- <xsl:variable name="gotCodeAlready" select="boolean(
- (ddue:codeExample/ddue:legacy/ddue:content[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) or
- (ddue:codeExample[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet])
- )"/>
-
- <xsl:variable name="gotMoreCode" select="(count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>1) or
- ($gotCodeAlready and count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>0)"/>
-
- <!-- if no preceding code in the code examples section, display the tasks[1]/task[1] -->
- <xsl:if test="not($gotCodeAlready)">
- <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks[1]/task[1]">
- <xsl:apply-templates select="ddue:introduction | ddue:codeExample"/>
- </xsl:for-each>
- </xsl:if>
-
- <xsl:if test="$gotMoreCode">
- <sections>
- <h4 class="subHeading">
- <include item="mrefTaskMoreCodeHeading" />
- </h4>
- <div class="subsection">
- <div class="tableSection">
- <table width="100%" cellspacing="2" cellpadding="5">
- <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks/task">
- <xsl:choose>
- <xsl:when test="not($gotCodeAlready) and position()=1"/>
- <xsl:otherwise>
- <tr valign="top">
- <td>
- <conceptualLink target="{@topicId}">
- <xsl:value-of select="ddue:title"/>
- </conceptualLink>
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="ddue:introduction/ddue:para[1][normalize-space(.)!='']">
- <xsl:apply-templates select="ddue:introduction/ddue:para[1]/node()"/>
- </xsl:when>
- <xsl:when test="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1][normalize-space(.)!='']">
- <xsl:apply-templates select="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1]/node()"/>
- </xsl:when>
- </xsl:choose>
- </td>
- </tr>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </table>
- </div>
- </div>
- </sections>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="threadSafety">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'threadSafety'"/>
- <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:choose>
- <xsl:when test="/document/comments/ddue:dduexml/ddue:threadSafety">
- <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSafety"/>
- </xsl:when>
- <xsl:otherwise>
- <include item="ThreadSafetyBP"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="ddue:notesForImplementers">
- <p/>
- <b>
- <include item="NotesForImplementers"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:notesForCallers">
- <p/>
- <b>
- <include item="NotesForCallers"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:notesForInheritors">
- <p/>
- <b>
- <include item="NotesForInheritors"/>
- </b>
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:platformNotes">
- <xsl:for-each select="ddue:platformNote[normalize-space(ddue:content)]">
- <p>
- <include item="PlatformNote">
- <parameter>
- <xsl:for-each select="ddue:platforms/ddue:platform">
- <xsl:variable name="platformName"><xsl:value-of select="."/></xsl:variable>
- <include item="{$platformName}"/>
- <xsl:if test="position() != last()">, </xsl:if>
- </xsl:for-each>
- </parameter>
- <parameter><xsl:apply-templates select="ddue:content"/></parameter>
- </include>
- </p>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:schemaHierarchy">
- <xsl:for-each select="ddue:link">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="position()"/>
- </xsl:call-template>
- <xsl:apply-templates select="."/>
- <br/>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template match="ddue:syntaxSection">
- <div id="syntaxSection" class="section">
- <div id="syntaxCodeBlocks" class="code">
- <xsl:for-each select="ddue:legacySyntax">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" >
- <xsl:text>VisualBasic</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" >
- <xsl:text>ManagedCPlusPlus</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'j#' or @language = 'jsharp'">
- <xsl:text>JSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xmlLang</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xaml' or @language = 'XAML'">
- <xsl:text>XAML</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <span codeLanguage="{$codeLang}">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th align="left">
- <include item="{$codeLang}"/>
- </th>
- </tr>
- <tr>
- <td>
- <pre>
- <xsl:apply-templates xml:space="preserve"/>
- </pre>
- </td>
- </tr>
- </table>
- </span>
-
- </xsl:for-each>
- </div>
- </div>
- </xsl:template>
-
- <xsl:template name="seeAlsoSection">
-
- <xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'seeAlso'"/>
- <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param>
- <xsl:with-param name="content">
-
- <!-- Concepts sub-section -->
- <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:link) or normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:dynamicLink[@type='inline'])">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoConcepts"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Reference sub-section (always one of these in an API topic) -->
- <xsl:if test="(normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:codeEntityReference) or normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:legacyLink)) or not(/document/reference/apidata/@group = 'namespace')">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoReference"/>
- </xsl:with-param>
-
- <xsl:with-param name="content">
- <xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf')
- or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:')
- or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- <!-- Other Resources sub-section -->
- <xsl:if test="/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:externalLink">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="SeeAlsoOtherResources"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*">
- <xsl:if test="name() = 'externalLink'">
- <div class="seeAlsoStyle">
- <xsl:apply-templates select="."/>
- </div>
- </xsl:if>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- just skip over these -->
- <xsl:template match="ddue:content | ddue:legacy">
- <xsl:apply-templates />
- </xsl:template>
-
- <!-- block elements -->
-
- <xsl:template match="ddue:table">
- <div class="caption">
- <xsl:value-of select="ddue:title"/>
- </div>
- <div class="tableSection">
- <table width="50%" cellspacing="2" cellpadding="5" frame="lhs">
- <xsl:apply-templates />
- </table>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader">
- <xsl:apply-templates />
- </xsl:template>
-
- <xsl:template match="ddue:row">
- <tr>
- <xsl:apply-templates />
- </tr>
- </xsl:template>
-
- <xsl:template match="ddue:entry">
- <td>
- <xsl:apply-templates />
- </td>
- </xsl:template>
-
- <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry">
- <th>
- <xsl:apply-templates />
- </th>
- </xsl:template>
-
- <xsl:template match="ddue:definitionTable">
- <dl class="authored">
- <xsl:apply-templates />
- </dl>
- </xsl:template>
-
- <xsl:template match="ddue:definedTerm">
- <dt><xsl:apply-templates /></dt>
- </xsl:template>
-
- <xsl:template match="ddue:definition">
- <dd>
- <xsl:apply-templates />
- </dd>
- </xsl:template>
-
- <xsl:template match="ddue:code">
- <xsl:variable name="codeLang">
- <xsl:choose>
- <xsl:when test="@language = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" >
- <xsl:text>VisualBasic</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" >
- <xsl:text>ManagedCPlusPlus</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'j#' or @language = 'jsharp'">
- <xsl:text>JSharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xml'">
- <xsl:text>xmlLang</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'html'">
- <xsl:text>html</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'vb-c#'">
- <xsl:text>visualbasicANDcsharp</xsl:text>
- </xsl:when>
- <xsl:when test="@language = 'xaml' or @language = 'XAML'">
- <xsl:text>XAML</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>other</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="titleName" select="../../ddue:title"/>
-
- <xsl:choose>
- <xsl:when test="(($titleName = 'Output') or ($titleName = 'Input') or ($titleName = 'SampleOutput'))">
- <div class="code">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th>
- <xsl:text> </xsl:text>
- </th>
-
- </tr>
- <tr>
- <td colspan="2">
- <pre>
- <xsl:apply-templates/>
- </pre>
- </td>
- </tr>
- </table>
- </div>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="codeSection">
- <xsl:with-param name="codeLang" select="$codeLang" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:template>
-
- <xsl:template match="ddue:sampleCode">
- <div><b><xsl:value-of select="@language"/></b></div>
- <div class="code"><pre><xsl:apply-templates /></pre></div>
- </xsl:template>
-
- <xsl:template name="composeCode">
- <xsl:copy-of select="." />
- <xsl:variable name="next" select="following-sibling::*[1]" />
- <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())">
- <xsl:for-each select="$next">
- <xsl:call-template name="composeCode" />
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:alert">
- <div class="alert">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th align="left">
- <xsl:choose>
- <xsl:when test="@class='tip'">
- <img class="note">
- <includeAttribute name="title" item="tipAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="tipTitle" />
- </xsl:when>
- <xsl:when test="@class='caution' or @class='warning'">
- <img class="note">
- <includeAttribute name="title" item="cautionAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <include item="cautionTitle" />
- </xsl:when>
- <xsl:when test="@class='security note'">
- <img class="note">
- <includeAttribute name="title" item="securityAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_security.gif</parameter>
- </includeAttribute>
- </img>
- <include item="securityTitle" />
- </xsl:when>
- <xsl:when test="@class='important'">
- <img class="note">
- <includeAttribute name="title" item="importantAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_caution.gif</parameter>
- </includeAttribute>
- </img>
- <include item="importantTitle" />
- </xsl:when>
- <xsl:when test="@class='visual basic note'">
- <img class="note">
- <includeAttribute name="title" item="visualBasicAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualBasicTitle" />
- </xsl:when>
- <xsl:when test="@class='visual c# note'">
- <img class="note">
- <includeAttribute name="title" item="visualC#AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualC#Title" />
- </xsl:when>
- <xsl:when test="@class='visual c++ note'">
- <img class="note">
- <includeAttribute name="title" item="visualC++AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualC++Title" />
- </xsl:when>
- <xsl:when test="@class='visual j# note'">
- <img class="note">
- <includeAttribute name="title" item="visualJ#AltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="visualJ#Title" />
- </xsl:when>
- <xsl:when test="@class='note'">
- <img class="note">
- <includeAttribute name="title" item="noteAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="noteTitle" />
- </xsl:when>
- <xsl:otherwise>
- <img class="note">
- <includeAttribute name="title" item="noteAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="{@class}" />
- </xsl:otherwise>
- </xsl:choose>
- </th>
- </tr>
- <tr>
- <td>
- <xsl:apply-templates/>
- </td>
- </tr>
- </table>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:sections">
- <xsl:apply-templates select="ddue:section" />
- </xsl:template>
-
- <xsl:template match="ddue:section">
- <xsl:if test="descendant::ddue:content[normalize-space(.)]">
-
- <xsl:apply-templates select="@address" />
- <!-- Count all the possible ancestor root nodes -->
- <xsl:variable name="a1" select="count(ancestor::ddue:attributesandElements)" />
- <xsl:variable name="a2" select="count(ancestor::ddue:codeExample)" />
- <xsl:variable name="a3" select="count(ancestor::ddue:dotNetFrameworkEquivalent)" />
- <xsl:variable name="a4" select="count(ancestor::ddue:elementInformation)" />
- <xsl:variable name="a5" select="count(ancestor::ddue:exceptions)" />
- <xsl:variable name="a6" select="count(ancestor::ddue:introduction)" />
- <xsl:variable name="a7" select="count(ancestor::ddue:languageReferenceRemarks)" />
- <xsl:variable name="a8" select="count(ancestor::ddue:nextSteps)" />
- <xsl:variable name="a9" select="count(ancestor::ddue:parameters)" />
- <xsl:variable name="a10" select="count(ancestor::ddue:prerequisites)" />
- <xsl:variable name="a11" select="count(ancestor::ddue:procedure)" />
- <xsl:variable name="a12" select="count(ancestor::ddue:relatedTopics)" />
- <xsl:variable name="a13" select="count(ancestor::ddue:remarks)" />
- <xsl:variable name="a14" select="count(ancestor::ddue:requirements)" />
- <xsl:variable name="a15" select="count(ancestor::ddue:schemaHierarchy)" />
- <xsl:variable name="a16" select="count(ancestor::ddue:syntaxSection)" />
- <xsl:variable name="a17" select="count(ancestor::ddue:textValue)" />
- <xsl:variable name="a18" select="count(ancestor::ddue:type)" />
- <xsl:variable name="a19" select="count(ancestor::ddue:section)" />
- <xsl:variable name="total" select="$a1+$a2+$a3+$a4+$a5+$a6+$a7+$a8+$a9+$a10+$a11+$a12+$a13+$a14+$a15+$a16+$a17+$a18+$a19" />
- <xsl:choose>
- <xsl:when test="$total = 0">
- <xsl:variable name="sectionCount">
- <xsl:value-of select="count(preceding-sibling::ddue:section)"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="ddue:title">
- <h1 class="heading">
- <span onclick="ExpandCollapse(sectionToggle{$sectionCount})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(sectionToggle{$sectionCount}, event)" tabindex="0">
- <img id="sectionToggle{$sectionCount}" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:value-of select="ddue:title" />
- </span>
- </h1>
- <div id="sectionSection{$sectionCount}" class="section" name="collapseableSection" style="">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:when>
- <xsl:otherwise>
- <div id="sectionSection{$sectionCount}" class="seeAlsoNoToggleSection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections"/>
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$total = 1">
- <h3 class="subHeading">
- <xsl:value-of select="ddue:title"/>
- </h3>
- <div class="subsection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:when>
- <xsl:otherwise>
- <h4 class="subHeading">
- <xsl:value-of select="ddue:title"/>
- </h4>
- <div class="subsection">
- <xsl:apply-templates select="ddue:content"/>
- <xsl:apply-templates select="ddue:sections" />
- </div>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-<!--
- <xsl:template match="@address">
- <a name="{string(.)}" />
- </xsl:template>
--->
- <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline">
- <span class="media">
- <xsl:if test="ddue:caption">
- <div class="caption">
- <xsl:apply-templates select="ddue:caption" />
- </div>
- <br />
- </xsl:if>
- <artLink target="{ddue:image/@xlink:href}" />
- </span>
- </xsl:template>
-
- <xsl:template match="ddue:procedure">
- <xsl:if test="normalize-space(ddue:title)">
- <h3 class="procedureSubHeading">
- <xsl:value-of select="ddue:title"/>
- </h3>
- </xsl:if>
- <div class="subSection">
- <xsl:apply-templates select="ddue:steps"/>
- <xsl:apply-templates select="ddue:conclusion"/>
- </div>
- </xsl:template>
-
- <xsl:template match="ddue:steps">
- <xsl:choose>
- <xsl:when test="@class = 'ordered'">
- <xsl:variable name="temp">
- <xsl:value-of select="count(ddue:step)"/>
- </xsl:variable>
- <xsl:if test="$temp = 1">
- <ul>
- <xsl:apply-templates select="ddue:step"/>
- </ul>
- </xsl:if>
- <xsl:if test="$temp > 1">
- <ol>
- <xsl:apply-templates select="ddue:step"/>
- </ol>
- </xsl:if>
- </xsl:when>
- <xsl:when test="@class='bullet'">
- <ul>
- <xsl:apply-templates select="ddue:step" />
- </ul>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="ddue:step">
- <li><xsl:apply-templates /></li>
- </xsl:template>
-
-
- <xsl:template match="ddue:inThisSection">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'inThisSection'"/>
- <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:buildInstructions">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'buildInstructions'"/>
- <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:nextSteps">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'nextSteps'"/>
- <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:requirements">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'requirementsTitle'"/>
- <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!-- inline elements -->
-
- <xsl:template match="ddue:languageKeyword">
- <xsl:variable name="word" select="." />
- <span data="langKeyword" value="{$word}">
- <xsl:choose>
- <!-- mref topics get special handling for keywords like null, etc. -->
- <xsl:when test="/document/reference/apidata">
- <span class="keyword">
- <xsl:choose>
- <xsl:when test="$word='null'">
- <span class="languageSpecificText">
- <span class="cs">null</span>
- <span class="vb">Nothing</span>
- <span class="cpp">nullptr</span>
- </span>
- </xsl:when>
- <!-- need to comment out special handling for static, virtual, true, and false
- until UE teams review authored content to make sure the auto-text works with the authored text.
- For example, auto-text with authored content like the following will result in bad customer experience.
- <languageKeyword>static</languageKeyword> (<languageKeyword>Shared</languageKeyword> in Visual Basic) -->
- <!--
- <xsl:when test="$word='static' or $word='Shared'">
- <span class="cs">static</span>
- <span class="vb">Shared</span>
- <span class="cpp">static</span>
- </xsl:when>
- <xsl:when test="$word='virtual' or $word='Overridable'">
- <span class="cs">virtual</span>
- <span class="vb">Overridable</span>
- <span class="cpp">virtual</span>
- </xsl:when>
- <xsl:when test="$word='true' or $word='True'">
- <span class="cs">true</span>
- <span class="vb">True</span>
- <span class="cpp">true</span>
- </xsl:when>
- <xsl:when test="$word='false' or $word='False'">
- <span class="cs">false</span>
- <span class="vb">False</span>
- <span class="cpp">false</span>
- </xsl:when>
- -->
- <xsl:otherwise>
- <xsl:value-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </span>
- <xsl:choose>
- <xsl:when test="$word='null'">
- <span class="languageSpecificText">
- <span class="nu"><include item="nullKeyword"/></span>
- </span>
- </xsl:when>
- <!-- need to comment out special handling for static, virtual, true, and false: see note above -->
- <!--
- <xsl:when test="$word='static' or $word='Shared'">
- <span class="nu"><include item="staticKeyword"/></span>
- </xsl:when>
- <xsl:when test="$word='virtual' or $word='Overridable'">
- <span class="nu"><include item="virtualKeyword"/></span>
- </xsl:when>
- <xsl:when test="$word='true' or $word='True'">
- <span class="nu"><include item="trueKeyword"/></span>
- </xsl:when>
- <xsl:when test="$word='false' or $word='False'">
- <span class="nu"><include item="falseKeyword"/></span>
- </xsl:when>
- -->
- </xsl:choose>
- </xsl:when>
- <!-- conceptual and other non-mref topics do not get special handling for keywords like null, etc. -->
- <xsl:otherwise>
- <span class="keyword">
- <xsl:value-of select="." />
- </span>
- </xsl:otherwise>
- </xsl:choose>
- </span>
- </xsl:template>
-
- <!-- links -->
-
- <!--
- <xsl:template match="ddue:codeEntityReference">
- <span class="linkTerm">
- <referenceLink target="{string(.)}">
- <xsl:if test="@qualifyHint">
- <xsl:attribute name="show-container">
- <xsl:value-of select="@qualifyHint" />
- </xsl:attribute>
- <xsl:attribute name="show-parameters">
- <xsl:value-of select="@qualifyHint" />
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="@autoUpgrade">
- <xsl:attribute name="prefer-overload">
- <xsl:value-of select="@autoUpgrade" />
- </xsl:attribute>
- </xsl:if>
- </referenceLink>
- </span>
- </xsl:template>
- -->
-
- <xsl:template match="ddue:dynamicLink[@type='inline']">
- <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" />
- <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" />
- <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" />
- </MSHelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='table']">
- <include item="mshelpKTable">
- <parameter>
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template match="ddue:dynamicLink[@type='bulleted']">
- <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'>
- <xsl:attribute name="keywords">
- <xsl:for-each select="ddue:keyword">
- <xsl:value-of select="."/>
- <xsl:if test="position() != last()">;</xsl:if>
- </xsl:for-each>
- </xsl:attribute>
- <xsl:attribute name="prefix"><ul><li></xsl:attribute>
- <xsl:attribute name="postfix"></li></ul></xsl:attribute>
- <xsl:attribute name="separator"></li><li></xsl:attribute>
- </MSHelp:ktable>
- </xsl:template>
-
- <xsl:template match="ddue:codeFeaturedElement">
- <xsl:if test="normalize-space(.)">
- <!--<xsl:if test="count(preceding::ddue:codeFeaturedElement) > 0"><br/></xsl:if>-->
- <b><xsl:apply-templates/></b>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:languageReferenceRemarks">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'languageReferenceRemarks'"/>
- <xsl:with-param name="title">
- <include item="remarksTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attributesandElements">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'attributesAndElements'"/>
- <xsl:with-param name="title">
- <include item="attributesAndElements" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attributes">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="attributes"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:attribute">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:attribute/ddue:title">
- <h4 class="subHeading">
- <xsl:apply-templates/>
- </h4>
- </xsl:template>
-
- <xsl:template match="ddue:childElement">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="childElement"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:parentElement">
- <xsl:if test="normalize-space(.)">
- <h4 class="subHeading">
- <include item="parentElement"/>
- </h4>
- <xsl:apply-templates/>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:textValue">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'textValue'"/>
- <xsl:with-param name="title">
- <include item="textValue" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:elementInformation">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'elementInformation'"/>
- <xsl:with-param name="title">
- <include item="elementInformation" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:dotNetFrameworkEquivalent">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'dotNetFrameworkEquivalent'"/>
- <xsl:with-param name="title">
- <include item="dotNetFrameworkEquivalent" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:prerequisites">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'prerequisites'"/>
- <xsl:with-param name="title">
- <include item="prerequisites" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:type">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:robustProgramming">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'robustProgramming'"/>
- <xsl:with-param name="title">
- <include item="robustProgramming" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:security">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'security'"/>
- <xsl:with-param name="title">
- <include item="securitySection" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:externalResources">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'externalResources'"/>
- <xsl:with-param name="title">
- <include item="externalResources" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:demonstrates">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'demonstrates'"/>
- <xsl:with-param name="title">
- <include item="demonstrates" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:appliesTo">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'appliesTo'"/>
- <xsl:with-param name="title">
- <include item="appliesTo" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:conclusion">
- <xsl:apply-templates/>
- </xsl:template>
-
- <xsl:template match="ddue:background">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'background'"/>
- <xsl:with-param name="title">
- <include item="background" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:whatsNew">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'whatsNew'"/>
- <xsl:with-param name="title">
- <include item="whatsNew" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:reference">
- <xsl:if test="normalize-space(.)">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'reference'"/>
- <xsl:with-param name="title">
- <include item="reference" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:developerErrorMessageDocument">
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="name() = 'secondaryErrorTitle'">
- <xsl:if test="not(../ddue:nonLocErrorTitle)">
- <xsl:apply-templates select=".">
- <xsl:with-param name="newSection">yes</xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
- </xsl:when>
-
- <xsl:otherwise><xsl:apply-templates select="." /></xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-
- </xsl:template>
-
- <xsl:template match="ddue:nonLocErrorTitle">
- <xsl:if test="string-length(../ddue:nonLocErrorTitle[normalize-space(.)]) > 0 or string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0">
- <div id="errorTitleSection" class="section">
- <xsl:if test="../ddue:secondaryErrorTitle">
- <h4 class="subHeading"><include item="errorMessage"/></h4>
- <xsl:apply-templates select="../ddue:secondaryErrorTitle">
- <xsl:with-param name="newSection">no</xsl:with-param>
- </xsl:apply-templates>
- </xsl:if>
- <xsl:apply-templates/><p/>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="ddue:secondaryErrorTitle">
- <xsl:param name="newSection"/>
- <xsl:if test="string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0">
- <xsl:choose>
- <xsl:when test="$newSection = 'yes'">
- <div id="errorTitleSection" class="section">
- <xsl:apply-templates/><p/>
- </div>
- </xsl:when>
- <xsl:otherwise><xsl:apply-templates/><br/></xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
-
- <!--
- <xsl:template match="ddue:legacyLink | ddue:link">
- <a>
- <xsl:attribute name="href">
- <xsl:value-of select="@xlink:href" />
- <xsl:text>.htm</xsl:text>
- </xsl:attribute>
- <xsl:apply-templates />
- </a>
- </xsl:template>
--->
-
- <xsl:template name="createReferenceLink">
- <xsl:param name="id" />
- <xsl:param name="qualified" select="false()" />
- <referenceLink target="{$id}" qualified="{$qualified}" />
- </xsl:template>
-
- <xsl:template match="ddue:snippets">
- <xsl:if test="ddue:snippet">
- <div name="snippetGroup">
- <xsl:for-each select="ddue:snippet">
- <xsl:call-template name="codeSection">
- <xsl:with-param name="codeLang" select="@language" />
- </xsl:call-template>
- </xsl:for-each>
- </div>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="section">
- <xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="nonToggletitle" />
- <xsl:param name="content" />
- <xsl:param name="toplink" select="false()" />
-
- <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" />
- <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" />
-
- <h1 class="heading">
- <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0">
- <img id="{$toggleTitle}" class="toggle" name="toggleSwitch">
- <includeAttribute name="src" item="iconPath">
- <parameter>collapse_all.gif</parameter>
- </includeAttribute>
- </img>
- <xsl:copy-of select="$title" />
- </span>
- <xsl:copy-of select="$nonToggletitle" />
- </h1>
-
- <div id="{$toggleSection}" class="section" name="collapseableSection" style="">
- <xsl:copy-of select="$content" />
- <xsl:if test="boolean($toplink)">
- <a href="#mainBody"><include item="top"/></a>
- </xsl:if>
- </div>
-
- </xsl:template>
-
- <xsl:template name="subSection">
- <xsl:param name="title" />
- <xsl:param name="content" />
-
- <h4 class="subHeading">
- <xsl:copy-of select="$title" />
- </h4>
- <xsl:copy-of select="$content" />
-
- </xsl:template>
-
- <xsl:template match="ddue:developerSampleDocument">
- <!-- show the topic intro -->
- <xsl:apply-templates select="ddue:introduction"/>
-
- <!-- the sample download list section from dsSample -->
- <xsl:if test="ddue:relatedTopics/ddue:sampleRef">
- <include item="{ddue:relatedTopics/ddue:sampleRef/@srcID}"/>
- </xsl:if>
-
- <!-- then the rest of the topic's content -->
- <xsl:for-each select="*">
- <xsl:choose>
- <!-- introduction was already captured above -->
- <xsl:when test="name() = 'introduction'"/>
-
- <xsl:otherwise>
- <xsl:apply-templates select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-
- </xsl:template>
-
- <xsl:template name="hostProtectionContent">
- <!-- HostProtectionAttribute boilerplate -->
- <div class="alert">
- <table width="100%" cellspacing="0" cellpadding="0">
- <tr>
- <th align="left">
- <img class="note">
- <includeAttribute name="title" item="noteAltText" />
- <includeAttribute item="iconPath" name="src">
- <parameter>alert_note.gif</parameter>
- </includeAttribute>
- </img>
- <include item="noteTitle" />
- </th>
- </tr>
- <tr>
- <td>
- <p>
- <include item="hostProtectionAttributeLong">
- <parameter>
- <xsl:value-of select="concat($subgroup, 'Lower')"/>
- </parameter>
- <parameter>
- <b>
- <xsl:for-each select="/document/reference/attributes/attribute[type[@api='T:System.Security.Permissions.HostProtectionAttribute']]/assignment">
- <xsl:value-of select="@name"/>
- <xsl:if test="position() != last()">
- <xsl:text> | </xsl:text>
- </xsl:if>
- </xsl:for-each>
- </b>
- </parameter>
- </include>
- </p>
- </td>
- </tr>
- </table>
- </div>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_dduexml.xsl" /> + + <!-- sections --> + + <!-- the Remarks section includes content from these nodes, excluding the xaml sections are captured in the xaml syntax processing --> + <xsl:template name="HasRemarksContent"> + <xsl:choose> + <xsl:when test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']">true</xsl:when> + <xsl:when test="normalize-space(ddue:content)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForImplementers)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForCallers)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:notesForInheritors)">true</xsl:when> + <xsl:when test="normalize-space(../ddue:platformNotes)">true</xsl:when> + <xsl:when test="normalize-space(ddue:sections/ddue:section[not( + starts-with(@address,'xamlValues') or + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage') or + starts-with(@address,'dependencyPropertyInfo') or + starts-with(@address,'routedEventInfo') + )])">true</xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:remarks"> + <xsl:variable name="hasRemarks"> + <xsl:call-template name="HasRemarksContent"/> + </xsl:variable> + <xsl:if test="$hasRemarks='true'"> + <xsl:choose> + <xsl:when test="not($group = 'namespace')"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'remarks'"/> + <xsl:with-param name="title"><include item="remarksTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <!-- HostProtectionAttribute --> + <xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.Security.Permissions.HostProtectionAttribute']"> + <xsl:call-template name="hostProtectionContent" /> + </xsl:if> + <xsl:apply-templates /> + <xsl:apply-templates select="../ddue:notesForImplementers"/> + <xsl:apply-templates select="../ddue:notesForCallers"/> + <xsl:apply-templates select="../ddue:notesForInheritors"/> + <xsl:apply-templates select="../ddue:platformNotes"/> + <include item="mshelpKTable"> + <parameter> + <xsl:text>tt_</xsl:text> + <xsl:value-of select="$key"/> + </parameter> + </include> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:codeExamples"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'example'"/> + <xsl:with-param name="title"><include item="examplesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + <xsl:call-template name="moreCodeSection"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- + ************************************************************** + CODE EXAMPLES section + ************************************************************** + --> + <!-- tasks/task nodes are inserted by TaskGrabberComponent which gets content from HowTo topics --> + <!-- these nodes are handled below in the moreCodeSection --> + <xsl:template match="ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/tasks"/> + + <xsl:template name="moreCodeSection"> + <xsl:variable name="gotCodeAlready" select="boolean( + (ddue:codeExample/ddue:legacy/ddue:content[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) or + (ddue:codeExample[ddue:codeReference[ddue:sampleCode] | ddue:code | ddue:snippets/ddue:snippet]) + )"/> + + <xsl:variable name="gotMoreCode" select="(count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>1) or + ($gotCodeAlready and count(ddue:codeExample/ddue:legacy/ddue:content/tasks/task)>0)"/> + + <!-- if no preceding code in the code examples section, display the tasks[1]/task[1] --> + <xsl:if test="not($gotCodeAlready)"> + <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks[1]/task[1]"> + <xsl:apply-templates select="ddue:introduction | ddue:codeExample"/> + </xsl:for-each> + </xsl:if> + + <xsl:if test="$gotMoreCode"> + <sections> + <h4 class="subHeading"> + <include item="mrefTaskMoreCodeHeading" /> + </h4> + <div class="subsection"> + <div class="tableSection"> + <table width="100%" cellspacing="2" cellpadding="5"> + <xsl:for-each select="ddue:codeExample/ddue:legacy/ddue:content/tasks/task"> + <xsl:choose> + <xsl:when test="not($gotCodeAlready) and position()=1"/> + <xsl:otherwise> + <tr valign="top"> + <td> + <conceptualLink target="{@topicId}"> + <xsl:value-of select="ddue:title"/> + </conceptualLink> + </td> + <td> + <xsl:choose> + <xsl:when test="ddue:introduction/ddue:para[1][normalize-space(.)!='']"> + <xsl:apply-templates select="ddue:introduction/ddue:para[1]/node()"/> + </xsl:when> + <xsl:when test="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1][normalize-space(.)!='']"> + <xsl:apply-templates select="ddue:codeExample/ddue:legacy/ddue:content/ddue:para[1]/node()"/> + </xsl:when> + </xsl:choose> + </td> + </tr> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </table> + </div> + </div> + </sections> + </xsl:if> + </xsl:template> + + <xsl:template name="threadSafety"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'threadSafety'"/> + <xsl:with-param name="title"><include item="threadSafetyTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:choose> + <xsl:when test="/document/comments/ddue:dduexml/ddue:threadSafety"> + <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:threadSafety"/> + </xsl:when> + <xsl:otherwise> + <include item="ThreadSafetyBP"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="ddue:notesForImplementers"> + <p/> + <b> + <include item="NotesForImplementers"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:notesForCallers"> + <p/> + <b> + <include item="NotesForCallers"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:notesForInheritors"> + <p/> + <b> + <include item="NotesForInheritors"/> + </b> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:platformNotes"> + <xsl:for-each select="ddue:platformNote[normalize-space(ddue:content)]"> + <p> + <include item="PlatformNote"> + <parameter> + <xsl:for-each select="ddue:platforms/ddue:platform"> + <xsl:variable name="platformName"><xsl:value-of select="."/></xsl:variable> + <include item="{$platformName}"/> + <xsl:if test="position() != last()">, </xsl:if> + </xsl:for-each> + </parameter> + <parameter><xsl:apply-templates select="ddue:content"/></parameter> + </include> + </p> + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:schemaHierarchy"> + <xsl:for-each select="ddue:link"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="position()"/> + </xsl:call-template> + <xsl:apply-templates select="."/> + <br/> + </xsl:for-each> + </xsl:template> + + <xsl:template match="ddue:syntaxSection"> + <div id="syntaxSection" class="section"> + <div id="syntaxCodeBlocks" class="code"> + <xsl:for-each select="ddue:legacySyntax"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" > + <xsl:text>VisualBasic</xsl:text> + </xsl:when> + <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" > + <xsl:text>ManagedCPlusPlus</xsl:text> + </xsl:when> + <xsl:when test="@language = 'j#' or @language = 'jsharp'"> + <xsl:text>JSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xmlLang</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xaml' or @language = 'XAML'"> + <xsl:text>XAML</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <span codeLanguage="{$codeLang}"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th align="left"> + <include item="{$codeLang}"/> + </th> + </tr> + <tr> + <td> + <pre> + <xsl:apply-templates xml:space="preserve"/> + </pre> + </td> + </tr> + </table> + </span> + + </xsl:for-each> + </div> + </div> + </xsl:template> + + <xsl:template name="seeAlsoSection"> + + <xsl:if test="$hasSeeAlsoSection"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'seeAlso'"/> + <xsl:with-param name="title"><include item="relatedTitle" /></xsl:with-param> + <xsl:with-param name="content"> + + <!-- Concepts sub-section --> + <xsl:if test="normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:link) or normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:dynamicLink[@type='inline'])"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoConcepts"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'link' or (name() = 'dynamicLink' and @type = 'inline') or (name() = 'legacyLink' and not(starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Reference sub-section (always one of these in an API topic) --> + <xsl:if test="(normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:codeEntityReference) or normalize-space(/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:legacyLink)) or not(/document/reference/apidata/@group = 'namespace')"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoReference"/> + </xsl:with-param> + + <xsl:with-param name="content"> + <xsl:call-template name="autogenSeeAlsoLinks"/> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'codeEntityReference' or (name() = 'legacyLink' and (starts-with(@xlink:href,'frlrf') + or starts-with(@xlink:href,'N:') or starts-with(@xlink:href,'T:') or starts-with(@xlink:href,'M:') or starts-with(@xlink:href,'P:') + or starts-with(@xlink:href,'F:') or starts-with(@xlink:href,'E:') or starts-with(@xlink:href,'Overload:')))"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + <!-- Other Resources sub-section --> + <xsl:if test="/document/comments/ddue:dduexml/ddue:relatedTopics/ddue:externalLink"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="SeeAlsoOtherResources"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="/document/comments/ddue:dduexml/ddue:relatedTopics/*"> + <xsl:if test="name() = 'externalLink'"> + <div class="seeAlsoStyle"> + <xsl:apply-templates select="."/> + </div> + </xsl:if> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- just skip over these --> + <xsl:template match="ddue:content | ddue:legacy"> + <xsl:apply-templates /> + </xsl:template> + + <!-- block elements --> + + <xsl:template match="ddue:table"> + <div class="caption"> + <xsl:value-of select="ddue:title"/> + </div> + <div class="tableSection"> + <table width="50%" cellspacing="2" cellpadding="5" frame="lhs"> + <xsl:apply-templates /> + </table> + </div> + </xsl:template> + + <xsl:template match="ddue:tableHeader"> + <xsl:apply-templates /> + </xsl:template> + + <xsl:template match="ddue:row"> + <tr> + <xsl:apply-templates /> + </tr> + </xsl:template> + + <xsl:template match="ddue:entry"> + <td> + <xsl:apply-templates /> + </td> + </xsl:template> + + <xsl:template match="ddue:tableHeader/ddue:row/ddue:entry"> + <th> + <xsl:apply-templates /> + </th> + </xsl:template> + + <xsl:template match="ddue:definitionTable"> + <dl class="authored"> + <xsl:apply-templates /> + </dl> + </xsl:template> + + <xsl:template match="ddue:definedTerm"> + <dt><xsl:apply-templates /></dt> + </xsl:template> + + <xsl:template match="ddue:definition"> + <dd> + <xsl:apply-templates /> + </dd> + </xsl:template> + + <xsl:template match="ddue:code"> + <xsl:variable name="codeLang"> + <xsl:choose> + <xsl:when test="@language = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb' or @language = 'vb#' or @language = 'VB'" > + <xsl:text>VisualBasic</xsl:text> + </xsl:when> + <xsl:when test="@language = 'c#' or @language = 'cs' or @language = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'cpp' or @language = 'cpp#' or @language = 'c' or @language = 'c++' or @language = 'C++'" > + <xsl:text>ManagedCPlusPlus</xsl:text> + </xsl:when> + <xsl:when test="@language = 'j#' or @language = 'jsharp'"> + <xsl:text>JSharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'js' or @language = 'jscript#' or @language = 'jscript' or @language = 'JScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xml'"> + <xsl:text>xmlLang</xsl:text> + </xsl:when> + <xsl:when test="@language = 'html'"> + <xsl:text>html</xsl:text> + </xsl:when> + <xsl:when test="@language = 'vb-c#'"> + <xsl:text>visualbasicANDcsharp</xsl:text> + </xsl:when> + <xsl:when test="@language = 'xaml' or @language = 'XAML'"> + <xsl:text>XAML</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>other</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="titleName" select="../../ddue:title"/> + + <xsl:choose> + <xsl:when test="(($titleName = 'Output') or ($titleName = 'Input') or ($titleName = 'SampleOutput'))"> + <div class="code"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th> + <xsl:text> </xsl:text> + </th> + + </tr> + <tr> + <td colspan="2"> + <pre> + <xsl:apply-templates/> + </pre> + </td> + </tr> + </table> + </div> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="codeSection"> + <xsl:with-param name="codeLang" select="$codeLang" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + + </xsl:template> + + <xsl:template match="ddue:sampleCode"> + <div><b><xsl:value-of select="@language"/></b></div> + <div class="code"><pre><xsl:apply-templates /></pre></div> + </xsl:template> + + <xsl:template name="composeCode"> + <xsl:copy-of select="." /> + <xsl:variable name="next" select="following-sibling::*[1]" /> + <xsl:if test="boolean($next/@language) and boolean(local-name($next)=local-name())"> + <xsl:for-each select="$next"> + <xsl:call-template name="composeCode" /> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:alert"> + <div class="alert"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th align="left"> + <xsl:choose> + <xsl:when test="@class='tip'"> + <img class="note"> + <includeAttribute name="title" item="tipAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="tipTitle" /> + </xsl:when> + <xsl:when test="@class='caution' or @class='warning'"> + <img class="note"> + <includeAttribute name="title" item="cautionAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <include item="cautionTitle" /> + </xsl:when> + <xsl:when test="@class='security note'"> + <img class="note"> + <includeAttribute name="title" item="securityAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_security.gif</parameter> + </includeAttribute> + </img> + <include item="securityTitle" /> + </xsl:when> + <xsl:when test="@class='important'"> + <img class="note"> + <includeAttribute name="title" item="importantAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_caution.gif</parameter> + </includeAttribute> + </img> + <include item="importantTitle" /> + </xsl:when> + <xsl:when test="@class='visual basic note'"> + <img class="note"> + <includeAttribute name="title" item="visualBasicAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualBasicTitle" /> + </xsl:when> + <xsl:when test="@class='visual c# note'"> + <img class="note"> + <includeAttribute name="title" item="visualC#AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualC#Title" /> + </xsl:when> + <xsl:when test="@class='visual c++ note'"> + <img class="note"> + <includeAttribute name="title" item="visualC++AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualC++Title" /> + </xsl:when> + <xsl:when test="@class='visual j# note'"> + <img class="note"> + <includeAttribute name="title" item="visualJ#AltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="visualJ#Title" /> + </xsl:when> + <xsl:when test="@class='note'"> + <img class="note"> + <includeAttribute name="title" item="noteAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="noteTitle" /> + </xsl:when> + <xsl:otherwise> + <img class="note"> + <includeAttribute name="title" item="noteAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="{@class}" /> + </xsl:otherwise> + </xsl:choose> + </th> + </tr> + <tr> + <td> + <xsl:apply-templates/> + </td> + </tr> + </table> + </div> + </xsl:template> + + <xsl:template match="ddue:sections"> + <xsl:apply-templates select="ddue:section" /> + </xsl:template> + + <xsl:template match="ddue:section"> + <xsl:if test="descendant::ddue:content[normalize-space(.)]"> + + <xsl:apply-templates select="@address" /> + <!-- Count all the possible ancestor root nodes --> + <xsl:variable name="a1" select="count(ancestor::ddue:attributesandElements)" /> + <xsl:variable name="a2" select="count(ancestor::ddue:codeExample)" /> + <xsl:variable name="a3" select="count(ancestor::ddue:dotNetFrameworkEquivalent)" /> + <xsl:variable name="a4" select="count(ancestor::ddue:elementInformation)" /> + <xsl:variable name="a5" select="count(ancestor::ddue:exceptions)" /> + <xsl:variable name="a6" select="count(ancestor::ddue:introduction)" /> + <xsl:variable name="a7" select="count(ancestor::ddue:languageReferenceRemarks)" /> + <xsl:variable name="a8" select="count(ancestor::ddue:nextSteps)" /> + <xsl:variable name="a9" select="count(ancestor::ddue:parameters)" /> + <xsl:variable name="a10" select="count(ancestor::ddue:prerequisites)" /> + <xsl:variable name="a11" select="count(ancestor::ddue:procedure)" /> + <xsl:variable name="a12" select="count(ancestor::ddue:relatedTopics)" /> + <xsl:variable name="a13" select="count(ancestor::ddue:remarks)" /> + <xsl:variable name="a14" select="count(ancestor::ddue:requirements)" /> + <xsl:variable name="a15" select="count(ancestor::ddue:schemaHierarchy)" /> + <xsl:variable name="a16" select="count(ancestor::ddue:syntaxSection)" /> + <xsl:variable name="a17" select="count(ancestor::ddue:textValue)" /> + <xsl:variable name="a18" select="count(ancestor::ddue:type)" /> + <xsl:variable name="a19" select="count(ancestor::ddue:section)" /> + <xsl:variable name="total" select="$a1+$a2+$a3+$a4+$a5+$a6+$a7+$a8+$a9+$a10+$a11+$a12+$a13+$a14+$a15+$a16+$a17+$a18+$a19" /> + <xsl:choose> + <xsl:when test="$total = 0"> + <xsl:variable name="sectionCount"> + <xsl:value-of select="count(preceding-sibling::ddue:section)"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="ddue:title"> + <h1 class="heading"> + <span onclick="ExpandCollapse(sectionToggle{$sectionCount})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey(sectionToggle{$sectionCount}, event)" tabindex="0"> + <img id="sectionToggle{$sectionCount}" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:value-of select="ddue:title" /> + </span> + </h1> + <div id="sectionSection{$sectionCount}" class="section" name="collapseableSection" style=""> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:when> + <xsl:otherwise> + <div id="sectionSection{$sectionCount}" class="seeAlsoNoToggleSection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections"/> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="$total = 1"> + <h3 class="subHeading"> + <xsl:value-of select="ddue:title"/> + </h3> + <div class="subsection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:when> + <xsl:otherwise> + <h4 class="subHeading"> + <xsl:value-of select="ddue:title"/> + </h4> + <div class="subsection"> + <xsl:apply-templates select="ddue:content"/> + <xsl:apply-templates select="ddue:sections" /> + </div> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> +<!-- + <xsl:template match="@address"> + <a name="{string(.)}" /> + </xsl:template> +--> + <xsl:template match="ddue:mediaLink|ddue:mediaLinkInline"> + <span class="media"> + <xsl:if test="ddue:caption"> + <div class="caption"> + <xsl:apply-templates select="ddue:caption" /> + </div> + <br /> + </xsl:if> + <artLink target="{ddue:image/@xlink:href}" /> + </span> + </xsl:template> + + <xsl:template match="ddue:procedure"> + <xsl:if test="normalize-space(ddue:title)"> + <h3 class="procedureSubHeading"> + <xsl:value-of select="ddue:title"/> + </h3> + </xsl:if> + <div class="subSection"> + <xsl:apply-templates select="ddue:steps"/> + <xsl:apply-templates select="ddue:conclusion"/> + </div> + </xsl:template> + + <xsl:template match="ddue:steps"> + <xsl:choose> + <xsl:when test="@class = 'ordered'"> + <xsl:variable name="temp"> + <xsl:value-of select="count(ddue:step)"/> + </xsl:variable> + <xsl:if test="$temp = 1"> + <ul> + <xsl:apply-templates select="ddue:step"/> + </ul> + </xsl:if> + <xsl:if test="$temp > 1"> + <ol> + <xsl:apply-templates select="ddue:step"/> + </ol> + </xsl:if> + </xsl:when> + <xsl:when test="@class='bullet'"> + <ul> + <xsl:apply-templates select="ddue:step" /> + </ul> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template match="ddue:step"> + <li><xsl:apply-templates /></li> + </xsl:template> + + + <xsl:template match="ddue:inThisSection"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'inThisSection'"/> + <xsl:with-param name="title"><include item="inThisSectionTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:buildInstructions"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'buildInstructions'"/> + <xsl:with-param name="title"><include item="buildInstructionsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:nextSteps"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'nextSteps'"/> + <xsl:with-param name="title"><include item="nextStepsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:requirements"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'requirementsTitle'"/> + <xsl:with-param name="title"><include item="requirementsTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!-- inline elements --> + + <xsl:template match="ddue:languageKeyword"> + <xsl:variable name="word" select="." /> + <span data="langKeyword" value="{$word}"> + <xsl:choose> + <!-- mref topics get special handling for keywords like null, etc. --> + <xsl:when test="/document/reference/apidata"> + <span class="keyword"> + <xsl:choose> + <xsl:when test="$word='null'"> + <span class="languageSpecificText"> + <span class="cs">null</span> + <span class="vb">Nothing</span> + <span class="cpp">nullptr</span> + </span> + </xsl:when> + <!-- need to comment out special handling for static, virtual, true, and false + until UE teams review authored content to make sure the auto-text works with the authored text. + For example, auto-text with authored content like the following will result in bad customer experience. + <languageKeyword>static</languageKeyword> (<languageKeyword>Shared</languageKeyword> in Visual Basic) --> + <!-- + <xsl:when test="$word='static' or $word='Shared'"> + <span class="cs">static</span> + <span class="vb">Shared</span> + <span class="cpp">static</span> + </xsl:when> + <xsl:when test="$word='virtual' or $word='Overridable'"> + <span class="cs">virtual</span> + <span class="vb">Overridable</span> + <span class="cpp">virtual</span> + </xsl:when> + <xsl:when test="$word='true' or $word='True'"> + <span class="cs">true</span> + <span class="vb">True</span> + <span class="cpp">true</span> + </xsl:when> + <xsl:when test="$word='false' or $word='False'"> + <span class="cs">false</span> + <span class="vb">False</span> + <span class="cpp">false</span> + </xsl:when> + --> + <xsl:otherwise> + <xsl:value-of select="." /> + </xsl:otherwise> + </xsl:choose> + </span> + <xsl:choose> + <xsl:when test="$word='null'"> + <span class="languageSpecificText"> + <span class="nu"><include item="nullKeyword"/></span> + </span> + </xsl:when> + <!-- need to comment out special handling for static, virtual, true, and false: see note above --> + <!-- + <xsl:when test="$word='static' or $word='Shared'"> + <span class="nu"><include item="staticKeyword"/></span> + </xsl:when> + <xsl:when test="$word='virtual' or $word='Overridable'"> + <span class="nu"><include item="virtualKeyword"/></span> + </xsl:when> + <xsl:when test="$word='true' or $word='True'"> + <span class="nu"><include item="trueKeyword"/></span> + </xsl:when> + <xsl:when test="$word='false' or $word='False'"> + <span class="nu"><include item="falseKeyword"/></span> + </xsl:when> + --> + </xsl:choose> + </xsl:when> + <!-- conceptual and other non-mref topics do not get special handling for keywords like null, etc. --> + <xsl:otherwise> + <span class="keyword"> + <xsl:value-of select="." /> + </span> + </xsl:otherwise> + </xsl:choose> + </span> + </xsl:template> + + <!-- links --> + + <!-- + <xsl:template match="ddue:codeEntityReference"> + <span class="linkTerm"> + <referenceLink target="{string(.)}"> + <xsl:if test="@qualifyHint"> + <xsl:attribute name="show-container"> + <xsl:value-of select="@qualifyHint" /> + </xsl:attribute> + <xsl:attribute name="show-parameters"> + <xsl:value-of select="@qualifyHint" /> + </xsl:attribute> + </xsl:if> + <xsl:if test="@autoUpgrade"> + <xsl:attribute name="prefer-overload"> + <xsl:value-of select="@autoUpgrade" /> + </xsl:attribute> + </xsl:if> + </referenceLink> + </span> + </xsl:template> + --> + + <xsl:template match="ddue:dynamicLink[@type='inline']"> + <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <includeAttribute name="prefix" item="dynamicLinkInlinePreFixText" /> + <includeAttribute name="postfix" item="dynamicLinkInlinePostFixText" /> + <includeAttribute name="separator" item="dynamicLinkInlineSeperatorText" /> + </MSHelp:ktable> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='table']"> + <include item="mshelpKTable"> + <parameter> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </parameter> + </include> + </xsl:template> + + <xsl:template match="ddue:dynamicLink[@type='bulleted']"> + <MSHelp:ktable disambiguator='span' indexMoniker='!DefaultDynamicLinkIndex'> + <xsl:attribute name="keywords"> + <xsl:for-each select="ddue:keyword"> + <xsl:value-of select="."/> + <xsl:if test="position() != last()">;</xsl:if> + </xsl:for-each> + </xsl:attribute> + <xsl:attribute name="prefix"><ul><li></xsl:attribute> + <xsl:attribute name="postfix"></li></ul></xsl:attribute> + <xsl:attribute name="separator"></li><li></xsl:attribute> + </MSHelp:ktable> + </xsl:template> + + <xsl:template match="ddue:codeFeaturedElement"> + <xsl:if test="normalize-space(.)"> + <!--<xsl:if test="count(preceding::ddue:codeFeaturedElement) > 0"><br/></xsl:if>--> + <b><xsl:apply-templates/></b> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:languageReferenceRemarks"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'languageReferenceRemarks'"/> + <xsl:with-param name="title"> + <include item="remarksTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attributesandElements"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'attributesAndElements'"/> + <xsl:with-param name="title"> + <include item="attributesAndElements" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attributes"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="attributes"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:attribute"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:attribute/ddue:title"> + <h4 class="subHeading"> + <xsl:apply-templates/> + </h4> + </xsl:template> + + <xsl:template match="ddue:childElement"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="childElement"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:parentElement"> + <xsl:if test="normalize-space(.)"> + <h4 class="subHeading"> + <include item="parentElement"/> + </h4> + <xsl:apply-templates/> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:textValue"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'textValue'"/> + <xsl:with-param name="title"> + <include item="textValue" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:elementInformation"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'elementInformation'"/> + <xsl:with-param name="title"> + <include item="elementInformation" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:dotNetFrameworkEquivalent"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'dotNetFrameworkEquivalent'"/> + <xsl:with-param name="title"> + <include item="dotNetFrameworkEquivalent" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:prerequisites"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'prerequisites'"/> + <xsl:with-param name="title"> + <include item="prerequisites" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:type"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:robustProgramming"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'robustProgramming'"/> + <xsl:with-param name="title"> + <include item="robustProgramming" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:security"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'security'"/> + <xsl:with-param name="title"> + <include item="securitySection" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:externalResources"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'externalResources'"/> + <xsl:with-param name="title"> + <include item="externalResources" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:demonstrates"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'demonstrates'"/> + <xsl:with-param name="title"> + <include item="demonstrates" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:appliesTo"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'appliesTo'"/> + <xsl:with-param name="title"> + <include item="appliesTo" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:conclusion"> + <xsl:apply-templates/> + </xsl:template> + + <xsl:template match="ddue:background"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'background'"/> + <xsl:with-param name="title"> + <include item="background" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:whatsNew"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'whatsNew'"/> + <xsl:with-param name="title"> + <include item="whatsNew" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:reference"> + <xsl:if test="normalize-space(.)"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'reference'"/> + <xsl:with-param name="title"> + <include item="reference" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates /> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:developerErrorMessageDocument"> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="name() = 'secondaryErrorTitle'"> + <xsl:if test="not(../ddue:nonLocErrorTitle)"> + <xsl:apply-templates select="."> + <xsl:with-param name="newSection">yes</xsl:with-param> + </xsl:apply-templates> + </xsl:if> + </xsl:when> + + <xsl:otherwise><xsl:apply-templates select="." /></xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + </xsl:template> + + <xsl:template match="ddue:nonLocErrorTitle"> + <xsl:if test="string-length(../ddue:nonLocErrorTitle[normalize-space(.)]) > 0 or string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0"> + <div id="errorTitleSection" class="section"> + <xsl:if test="../ddue:secondaryErrorTitle"> + <h4 class="subHeading"><include item="errorMessage"/></h4> + <xsl:apply-templates select="../ddue:secondaryErrorTitle"> + <xsl:with-param name="newSection">no</xsl:with-param> + </xsl:apply-templates> + </xsl:if> + <xsl:apply-templates/><p/> + </div> + </xsl:if> + </xsl:template> + + <xsl:template match="ddue:secondaryErrorTitle"> + <xsl:param name="newSection"/> + <xsl:if test="string-length(../ddue:secondaryErrorTitle[normalize-space(.)]) > 0"> + <xsl:choose> + <xsl:when test="$newSection = 'yes'"> + <div id="errorTitleSection" class="section"> + <xsl:apply-templates/><p/> + </div> + </xsl:when> + <xsl:otherwise><xsl:apply-templates/><br/></xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + + <!-- + <xsl:template match="ddue:legacyLink | ddue:link"> + <a> + <xsl:attribute name="href"> + <xsl:value-of select="@xlink:href" /> + <xsl:text>.htm</xsl:text> + </xsl:attribute> + <xsl:apply-templates /> + </a> + </xsl:template> +--> + + <xsl:template name="createReferenceLink"> + <xsl:param name="id" /> + <xsl:param name="qualified" select="false()" /> + <referenceLink target="{$id}" qualified="{$qualified}" /> + </xsl:template> + + <xsl:template match="ddue:snippets"> + <xsl:if test="ddue:snippet"> + <div name="snippetGroup"> + <xsl:for-each select="ddue:snippet"> + <xsl:call-template name="codeSection"> + <xsl:with-param name="codeLang" select="@language" /> + </xsl:call-template> + </xsl:for-each> + </div> + </xsl:if> + </xsl:template> + + <xsl:template name="section"> + <xsl:param name="toggleSwitch" /> + <xsl:param name="title" /> + <xsl:param name="nonToggletitle" /> + <xsl:param name="content" /> + <xsl:param name="toplink" select="false()" /> + + <xsl:variable name="toggleTitle" select="concat($toggleSwitch,'Toggle')" /> + <xsl:variable name="toggleSection" select="concat($toggleSwitch,'Section')" /> + + <h1 class="heading"> + <span onclick="ExpandCollapse({$toggleTitle})" style="cursor:default;" onkeypress="ExpandCollapse_CheckKey({$toggleTitle}, event)" tabindex="0"> + <img id="{$toggleTitle}" class="toggle" name="toggleSwitch"> + <includeAttribute name="src" item="iconPath"> + <parameter>collapse_all.gif</parameter> + </includeAttribute> + </img> + <xsl:copy-of select="$title" /> + </span> + <xsl:copy-of select="$nonToggletitle" /> + </h1> + + <div id="{$toggleSection}" class="section" name="collapseableSection" style=""> + <xsl:copy-of select="$content" /> + <xsl:if test="boolean($toplink)"> + <a href="#mainBody"><include item="top"/></a> + </xsl:if> + </div> + + </xsl:template> + + <xsl:template name="subSection"> + <xsl:param name="title" /> + <xsl:param name="content" /> + + <h4 class="subHeading"> + <xsl:copy-of select="$title" /> + </h4> + <xsl:copy-of select="$content" /> + + </xsl:template> + + <xsl:template match="ddue:developerSampleDocument"> + <!-- show the topic intro --> + <xsl:apply-templates select="ddue:introduction"/> + + <!-- the sample download list section from dsSample --> + <xsl:if test="ddue:relatedTopics/ddue:sampleRef"> + <include item="{ddue:relatedTopics/ddue:sampleRef/@srcID}"/> + </xsl:if> + + <!-- then the rest of the topic's content --> + <xsl:for-each select="*"> + <xsl:choose> + <!-- introduction was already captured above --> + <xsl:when test="name() = 'introduction'"/> + + <xsl:otherwise> + <xsl:apply-templates select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + </xsl:template> + + <xsl:template name="hostProtectionContent"> + <!-- HostProtectionAttribute boilerplate --> + <div class="alert"> + <table width="100%" cellspacing="0" cellpadding="0"> + <tr> + <th align="left"> + <img class="note"> + <includeAttribute name="title" item="noteAltText" /> + <includeAttribute item="iconPath" name="src"> + <parameter>alert_note.gif</parameter> + </includeAttribute> + </img> + <include item="noteTitle" /> + </th> + </tr> + <tr> + <td> + <p> + <include item="hostProtectionAttributeLong"> + <parameter> + <xsl:value-of select="concat($subgroup, 'Lower')"/> + </parameter> + <parameter> + <b> + <xsl:for-each select="/document/reference/attributes/attribute[type[@api='T:System.Security.Permissions.HostProtectionAttribute']]/assignment"> + <xsl:value-of select="@name"/> + <xsl:if test="position() != last()"> + <xsl:text> | </xsl:text> + </xsl:if> + </xsl:for-each> + </b> + </parameter> + </include> + </p> + </td> + </tr> + </table> + </div> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl index b2bf1ca..8869703 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl @@ -1,926 +1,926 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_metadata.xsl" />
-
- <xsl:template name="insertMetadata">
- <xsl:if test="$metadata='true'">
- <xml>
- <MSHelp:Attr Name="AssetID" Value="{$key}" />
- <!-- toc title, rl title, etc. -->
- <xsl:call-template name="mshelpTitles" />
- <!-- keywords for the A (link target) index -->
- <xsl:call-template name="linkMetadata" />
- <!-- keywords for the K (index) index -->
- <xsl:call-template name="indexMetadata" />
- <!-- keywords for the F (F1 help) index -->
- <xsl:call-template name="helpMetadata" />
- <!-- help priority settings -->
- <xsl:call-template name="helpPriorityMetadata" />
- <!-- attributes for api identification -->
- <xsl:call-template name="apiTaggingMetadata" />
- <!-- atributes for filtering -->
- <xsl:call-template name="mshelpDevlangAttributes" />
- <MSHelp:Attr Name="Locale">
- <includeAttribute name="Value" item="locale" />
- </MSHelp:Attr>
- <!-- attribute to allow F1 help integration -->
- <MSHelp:Attr Name="TopicType" Value="kbSyntax" />
- <MSHelp:Attr Name="TopicType" Value="apiref" />
-
- <!-- Abstract -->
- <xsl:choose>
- <xsl:when test="string-length($abstractSummary) > 254">
- <MSHelp:Attr Name="Abstract" Value="{normalize-space(concat(substring($abstractSummary,1,250), ' ...'))}" />
- </xsl:when>
- <xsl:when test="string-length($abstractSummary) > 0">
- <MSHelp:Attr Name="Abstract" Value="{normalize-space($abstractSummary)}" />
- </xsl:when>
- </xsl:choose>
-
- <xsl:call-template name="mshelpCodelangAttributes" />
- <xsl:call-template name="versionMetadata" />
- <xsl:call-template name="authoredMetadata" />
- </xml>
- </xsl:if>
- </xsl:template>
-
- <!-- add DocSet and Technology attributes depending on the versions that support this api -->
- <xsl:template name="versionMetadata">
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:variable name="supportedOnXNA">
- <xsl:call-template name="IsMemberSupportedOnXna" />
- </xsl:variable>
- <xsl:if test="count(/document/reference/versions/versions[@name='netfw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='netfw']//version) > 0 ">
- <MSHelp:Attr Name="Technology">
- <includeAttribute name="Value" item="desktopTechnologyAttribute" />
- </MSHelp:Attr>
- </xsl:if>
- <!-- insert CF values for Technology and DocSet attributes for:
- api topics that have netcfw version nodes
- memberlist topics where topicdata/versions has netcfw version nodes
- overload list topics where any of the elements has netcfw version nodes
- -->
- <xsl:if test="count(/document/reference/versions/versions[@name='netcfw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='netcfw']//version) > 0 or count(/document/reference[topicdata[@subgroup='overload']]/elements//element/versions/versions[@name='netcfw']//version) > 0 or normalize-space($supportedOnCf)!=''">
- <MSHelp:Attr Name="Technology">
- <includeAttribute name="Value" item="netcfTechnologyAttribute" />
- </MSHelp:Attr>
- <MSHelp:Attr Name="DocSet">
- <includeAttribute name="Value" item="netcfDocSetAttribute" />
- </MSHelp:Attr>
- </xsl:if>
- <!-- insert XNA values for Technology and DocSet attributes for:
- api topics that have xnafw version nodes
- memberlist topics where topicdata/versions has xnafw version nodes
- overload list topics where any of the elements has xnafw version nodes
- -->
- <xsl:if test="count(/document/reference/versions/versions[@name='xnafw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='xnafw']//version) > 0 or count(/document/reference[topicdata[@subgroup='overload']]/elements//element/versions/versions[@name='xnafw']//version) > 0 or normalize-space($supportedOnXNA)!=''">
- <MSHelp:Attr Name="Technology">
- <includeAttribute name="Value" item="xnaTechnologyAttribute" />
- </MSHelp:Attr>
- <MSHelp:Attr Name="DocSet">
- <includeAttribute name="Value" item="xnaDocSetAttribute" />
- </MSHelp:Attr>
- </xsl:if>
- </xsl:template>
-
- <!-- attributes and keywords added to topics by authors -->
-
- <xsl:template name="authoredMetadata">
-
- <!-- authored attributes -->
- <xsl:for-each select="/document/metadata/attribute">
- <MSHelp:Attr Name="{@name}" Value="{text()}" />
- </xsl:for-each>
-
- <!-- authored K -->
- <xsl:for-each select="/document/metadata/keyword[@index='K']">
- <MSHelp:Keyword Index="K">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='K']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored S -->
- <xsl:for-each select="/document/metadata/keyword[@index='S']">
- <MSHelp:Keyword Index="S">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='S']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- <!-- S index keywords need to be converted to F index keywords -->
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='S']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored F -->
- <xsl:for-each select="/document/metadata/keyword[@index='F']">
- <MSHelp:Keyword Index="F">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='F']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- <!-- authored B -->
- <xsl:for-each select="/document/metadata/keyword[@index='B']">
- <MSHelp:Keyword Index="B">
- <xsl:attribute name="Term">
- <xsl:value-of select="text()" />
- <xsl:for-each select="keyword[@index='B']">
- <xsl:text>, </xsl:text>
- <xsl:value-of select="text()"/>
- </xsl:for-each>
- </xsl:attribute>
- </MSHelp:Keyword>
- </xsl:for-each>
-
- </xsl:template>
-
- <!-- toc title and rl title -->
-
- <xsl:template name="mshelpTitles">
-
- <!-- Toc List title-->
- <MSHelp:TOCTitle>
- <includeAttribute name="Title" item="tocTitle">
- <parameter>
- <xsl:call-template name="topicTitlePlain" />
- </parameter>
- </includeAttribute>
- </MSHelp:TOCTitle>
-
- <!-- The Results List title -->
- <MSHelp:RLTitle>
- <includeAttribute name="Title" item="rlTitle">
- <parameter>
- <xsl:call-template name="topicTitlePlain">
- <xsl:with-param name="qualifyMembers" select="true()" />
- </xsl:call-template>
- </parameter>
- <parameter>
- <xsl:value-of select="$namespaceName"/>
- </parameter>
- </includeAttribute>
- </MSHelp:RLTitle>
-
- </xsl:template>
-
- <xsl:template name="apiTaggingMetadata">
- <xsl:if test="$topic-group='api' and ($api-group='type' or $api-group='member')">
- <MSHelp:Attr Name="APIType" Value="Managed" />
- <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" />
- <xsl:choose>
- <xsl:when test="$api-group='type'">
- <xsl:variable name="apiTypeName">
- <xsl:choose>
- <xsl:when test="/document/reference/containers/namespace/apidata/@name != ''">
- <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/apidata/@name)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type -->
- <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" />
- <xsl:choose>
- <xsl:when test="boolean($api-subgroup='delegate')">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.ctor')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" />
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" />
- </xsl:when>
- <xsl:when test="$api-subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Attr Name="APIName" Value="{substring(@api,3)}" />
- </xsl:for-each>
- <!-- Namespace + Type + Member for each member -->
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$api-group='member'">
- <xsl:variable name="apiTypeName">
- <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" />
- <xsl:if test="count(/document/reference/templates/template) > 0">
- <xsl:value-of select="concat('`',count(/document/reference/templates/template))" />
- </xsl:if>
- </xsl:variable>
- <!-- Namespace + Type + Member -->
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" />
- <xsl:choose>
- <!-- for properties, add APIName attribute get/set accessor methods -->
- <xsl:when test="boolean($api-subgroup='property')">
- <xsl:if test="/document/reference/propertydata[@get='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.get_',/document/reference/apidata/@name)}" />
- </xsl:if>
- <xsl:if test="/document/reference/propertydata[@set='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.set_',/document/reference/apidata/@name)}" />
- </xsl:if>
- </xsl:when>
- <!-- for events, add APIName attribute add/remove accessor methods -->
- <xsl:when test="boolean($api-subgroup='event')">
- <xsl:if test="/document/reference/eventdata[@add='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.add_',/document/reference/apidata/@name)}" />
- </xsl:if>
- <xsl:if test="/document/reference/eventdata[@remove='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.remove_',/document/reference/apidata/@name)}" />
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
- </xsl:if>
- </xsl:template>
-
- <!-- link target (A index) keywords -->
-
- <xsl:template name="linkMetadata">
-
- <!-- code entity reference keyword -->
- <MSHelp:Keyword Index="A" Term="{$key}" />
-
- <xsl:if test="$topic-group='api' and $api-subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="A" Term="{@api}" />
- </xsl:for-each>
- </xsl:if>
-
- <!-- frlrf keywords -->
- <xsl:call-template name="FrlrfKeywords"/>
-
- </xsl:template>
-
- <xsl:template name="FrlrfKeywords">
- <xsl:variable name="frlrfTypeName">
- <!-- for members and nested types, start with the containing type name -->
- <xsl:for-each select="/document/reference/containers/type">
- <xsl:call-template name="FrlrfTypeName"/>
- </xsl:for-each>
- <!-- for types and member list topics, append the type name -->
- <xsl:if test="/document/reference/apidata[@group='type']">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="FrlrfTypeName"/>
- </xsl:for-each>
- </xsl:if>
- </xsl:variable>
- <xsl:variable name="memberName">
- <xsl:choose>
- <xsl:when test="/document/reference/apidata[@subgroup='constructor']">
- <xsl:value-of select="'ctor'"/>
- </xsl:when>
- <xsl:when test="/document/reference/apidata[@subsubgroup='operator']">
- <xsl:value-of select="concat('op_', /document/reference/apidata/@name)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <!-- namespace topic -->
- <xsl:when test="/document/reference/apidata/@group='namespace'">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$memberName),'.','')}"/>
- </xsl:when>
- <!-- Overload topic -->
- <xsl:when test="/document/reference/topicdata[@subgroup='overload']">
- <xsl:variable name="frlrfBaseId">
- <xsl:value-of select="translate(concat('frlrf', $namespaceName, $frlrfTypeName, 'Class', $memberName, 'Topic'),'.','')"/>
- </xsl:variable>
- <MSHelp:Keyword Index="A" Term="{$frlrfBaseId}"/>
- <!-- whidbey included frlrf keyword for each overload, but I don't think we need in Manifold, so commenting it out -->
- <!--
- <xsl:for-each select="elements/element">
- <MSHelp:Keyword Index="A" Term="{concat($frlrfBaseId, string(position()))}"/>
- </xsl:for-each>
- -->
- </xsl:when>
- <!-- Member list topic (other than overload list captured above) -->
- <xsl:when test="/document/reference/topicdata[@group='list']">
- <xsl:variable name="memberListSubgroup">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@subgroup='members'">Members</xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@subgroup"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf', $namespaceName, $frlrfTypeName, $memberListSubgroup, 'Topic'),'.','')}"/>
- </xsl:when>
- <!-- type topic -->
- <xsl:when test="/document/reference/apidata[@group='type']">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$namespaceName, $frlrfTypeName, 'ClassTopic'),'.','')}"/>
- </xsl:when>
- <!-- no frlrf ID for overload signature topics-->
- <xsl:when test="/document/reference/apidata[@group='member'] and /document/reference/memberdata/@overload"/>
- <!-- non-overload member topic -->
- <xsl:when test="/document/reference/apidata[@group='member']">
- <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$namespaceName, $frlrfTypeName, 'Class', $memberName, 'Topic'),'.','')}"/>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="FrlrfTypeName">
- <xsl:for-each select="type">
- <xsl:call-template name="FrlrfTypeName"/>
- </xsl:for-each>
- <xsl:choose>
- <xsl:when test="templates/template">
- <xsl:value-of select="concat(apidata/@name, count(templates/template))"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="helpMetadata">
- <!-- F keywords -->
- <xsl:choose>
- <!-- namespace pages get the namespace keyword, if it exists -->
- <xsl:when test="$group='namespace'">
- <xsl:variable name="namespace" select="/document/reference/apidata/@name" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{$namespace}" />
- </xsl:if>
- </xsl:when>
- <!-- type overview and member list pages get type and namespace.type keywords -->
- <xsl:when test="$group='type' or ($group='list' and $subgroup='members')">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNameWithTicks" />
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" />
- </xsl:if>
- <xsl:if test="$subgroup = 'enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" />
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- <xsl:call-template name="xamlMSHelpFKeywords"/>
- </xsl:when>
-
- <!-- overload list pages get member, type.member, and namepsace.type.member keywords -->
- <xsl:when test="$group='list' and $subgroup='overload'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameWithTicks" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="member">
- <xsl:choose>
- <!-- if the member is a constructor, use the member name for the type name -->
- <xsl:when test="/document/reference/apidata[@subgroup='constructor']">
- <xsl:value-of select="$type" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <MSHelp:Keyword Index="F" Term="{$member}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
- </xsl:when>
-
- <!-- no F1 help entries for overload signature topics -->
- <xsl:when test="$group='member' and /document/reference/memberdata/@overload"/>
-
- <!-- member pages get member, type.member, and namepsace.type.member keywords -->
- <xsl:when test="$group='member'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="type">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameWithTicks" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="member">
- <xsl:choose>
- <!-- if the member is a constructor, use the member name for the type name -->
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="$type" />
- </xsl:when>
- <!-- explicit interface implementation -->
- <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <xsl:for-each select="/document/reference/implements/member">
- <xsl:call-template name="typeNameWithTicks" />
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <!--
- <xsl:choose>
- -->
- <!--
- <xsl:when test="$subgroup='constructor'">
- <MSHelp:Keyword Index="F" Term="{$type}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $type)}" />
- <xsl:if test="boolean($namespace)">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $type)}" />
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- -->
- <MSHelp:Keyword Index="F" Term="{$member}" />
- <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" />
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" />
- </xsl:if>
- <!--
- </xsl:otherwise>
- </xsl:choose>
- -->
- </xsl:when>
- </xsl:choose>
-</xsl:template>
-
- <!-- set high help priority for namespace and member list pages, lower priority for type overview pages -->
-
- <xsl:template name="helpPriorityMetadata">
- <xsl:choose>
- <xsl:when test="($topic-group='api' and $api-group='namespace') or ($topic-group='list' and $topic-subgroup='members')">
- <MSHelp:Attr Name="HelpPriority" Value="1"/>
- </xsl:when>
- <xsl:when test="$topic-group='api' and $api-group='type'">
- <MSHelp:Attr Name="HelpPriority" Value="2"/>
- </xsl:when>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="apiName">
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="/document/reference/containers/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="codeLang">
- <xsl:param name="codeLang" />
- <MSHelp:Attr Name="codelang" Value="{$codeLang}" />
- </xsl:template>
-
- <!-- make a semicolon-separated list of the $languages-->
- <xsl:template name="languagesList">
- <xsl:for-each select="$languages/language">
- <xsl:variable name="devlang">
- <xsl:call-template name="GetDevLangAttrValue">
- <xsl:with-param name="devlang" select="@name"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="normalize-space($devlang)!=''">
- <xsl:value-of select="$devlang"/><xsl:text>;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="mshelpDevlangAttributes">
- <!-- first insert a DevLang attr for each language in the $languages arg passed to the transform -->
- <xsl:for-each select="$languages/language">
- <xsl:variable name="devlang">
- <xsl:call-template name="GetDevLangAttrValue">
- <xsl:with-param name="devlang" select="@name"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="normalize-space($devlang)=''"/>
- <xsl:otherwise>
- <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
-
- <!-- make a list of the languages that have already been included via $languages -->
- <xsl:variable name="languagesList">
- <xsl:call-template name="languagesList"/>
- </xsl:variable>
-
- <!-- add DevLang attr for any additional languages referred to in the topic's snippet and code nodes -->
- <xsl:for-each select="//*[@language]">
- <xsl:if test="not(@language=preceding::*/@language)">
- <xsl:variable name="devlang">
- <xsl:call-template name="GetDevLangAttrValue">
- <xsl:with-param name="devlang" select="@language"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="normalize-space($devlang)=''"/>
- <xsl:when test="contains($languagesList,concat($devlang,';'))"/>
- <xsl:otherwise>
- <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
-
- <!-- extend the list of languages that have already been included -->
- <xsl:variable name="languagesList2">
- <xsl:value-of select="$languagesList"/>
- <xsl:for-each select="//*[@language]">
- <xsl:variable name="devlang">
- <xsl:call-template name="GetDevLangAttrValue">
- <xsl:with-param name="devlang" select="@language"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="normalize-space($devlang)!=''">
- <xsl:value-of select="$devlang"/><xsl:text>;</xsl:text>
- </xsl:if>
- </xsl:for-each>
- </xsl:variable>
-
- <!-- add DevLang attr for any additional languages referred to in the topic's syntax blocks -->
- <xsl:for-each select="/document/syntax/div[@codeLanguage and not(div[@class='nonXamlAssemblyBoilerplate'])]">
- <xsl:if test="not(@codeLanguage=preceding::*/@codeLanguage)">
- <xsl:variable name="devlang">
- <xsl:call-template name="GetDevLangAttrValue">
- <xsl:with-param name="devlang" select="@codeLanguage"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="normalize-space($devlang)=''"/>
- <xsl:when test="contains($languagesList2,concat($devlang,';'))"/>
- <xsl:otherwise>
- <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="GetDevLangAttrValue">
- <xsl:param name="devlang"/>
- <xsl:choose>
- <xsl:when test="$devlang = 'CSharp' or $devlang = 'c#' or $devlang = 'cs' or $devlang = 'C#'" >
- <xsl:text>CSharp</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'ManagedCPlusPlus' or $devlang = 'cpp' or $devlang = 'cpp#' or $devlang = 'c' or $devlang = 'c++' or $devlang = 'C++' or $devlang = 'kbLangCPP'" >
- <xsl:text>C++</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'JScript' or $devlang = 'js' or $devlang = 'jscript#' or $devlang = 'jscript' or $devlang = 'JScript' or $devlang = 'kbJScript'">
- <xsl:text>JScript</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'VisualBasic' or $devlang = 'VisualBasicUsage' or $devlang = 'vb' or $devlang = 'vb#' or $devlang = 'VB' or $devlang = 'kbLangVB'" >
- <xsl:text>VB</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'VBScript' or $devlang = 'vbs'">
- <xsl:text>VBScript</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'JSharp' or $devlang = 'j#' or $devlang = 'jsharp' or $devlang = 'VJ#'">
- <xsl:text>VJ#</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'xaml' or $devlang = 'XAML'">
- <xsl:text>XAML</xsl:text>
- </xsl:when>
- <xsl:when test="$devlang = 'xml' or $devlang = 'XML'">
- <xsl:text>XML</xsl:text>
- </xsl:when>
- <xsl:otherwise/>
- </xsl:choose>
- </xsl:template>
-
- <!--
- Additional F1 keywords for class, struct, and enum topics in a set of WPF namespaces.
- This template inserts the MSHelp:Keyword nodes.
- The keyword prefixes and the WPF namespaces are hard-coded in variables.
- -->
- <xsl:variable name="var_wpf_f1index_prefix_1">http://schemas.microsoft.com/winfx/2006/xaml/presentation#</xsl:variable>
- <xsl:variable name="var_wpf_f1index_prefix_1_namespaces">N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N:</xsl:variable>
-
- <xsl:template name="xamlMSHelpFKeywords">
- <xsl:if test="$subgroup='class' or $subgroup='enumeration' or $subgroup='structure'">
- <xsl:if test="boolean(contains($var_wpf_f1index_prefix_1_namespaces, concat('#',/document/reference/containers/namespace/@api,'#'))
- or starts-with($var_wpf_f1index_prefix_1_namespaces, concat(/document/reference/containers/namespace/@api,'#')))">
- <MSHelp:Keyword Index="F" Term="{concat($var_wpf_f1index_prefix_1, /document/reference/apidata/@name)}"/>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <!-- Index Logic -->
-
- <xsl:template name="indexMetadata">
- <xsl:choose>
- <!-- namespace topics get one unqualified index entry -->
- <xsl:when test="$topic-group='api' and $api-group='namespace'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="namespaceIndexEntry">
- <parameter>
- <xsl:value-of select="msxsl:node-set($names)/name" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:when>
- <!-- type overview topics get qualified and unqualified index entries, and an about index entry -->
- <xsl:when test="$topic-group='api' and $api-group='type'">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <xsl:if test="boolean($namespace != '')">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="$namespace"/>
- <xsl:text>.</xsl:text>
- <xsl:copy-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- <!-- multi-topic types (not delegates and enumerations) get about entries, too-->
- <xsl:if test="$api-subgroup='class' or $api-subgroup='structure' or $api-subgroup='interface'">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="aboutTypeIndexEntry">
- <parameter>
- <include item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:if>
- </xsl:for-each>
- <!-- enumerations get the index entries for their members -->
- <xsl:if test="$api-subgroup='enumeration'">
- <xsl:for-each select="/document/reference/elements/element">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$api-subgroup}MemberIndexEntry">
- <parameter>
- <xsl:value-of select="apidata/@name" />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <!-- all member lists get unqualified entries, qualified entries, and unqualified sub-entries -->
- <xsl:when test="$topic-group='list' and $topic-subgroup='members'">
- <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" />
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="membersIndexEntry">
- <parameter>
- <include item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:if test="boolean($namespace != '')">
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <!-- other member list pages get unqualified sub-entries -->
- <xsl:when test="$topic-group='list' and not($topic-subgroup = 'overload')">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$subgroup}IndexEntry">
- <parameter>
- <include item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <!-- constructor (or constructor overload) topics get unqualified sub-entries using the type names -->
- <xsl:when test="($topic-group='api' and $api-subgroup='constructor' and not(/document/reference/memberdata/@overload)) or ($topic-subgroup='overload' and $api-subgroup = 'constructor')">
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference/containers/type">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="constructorIndexEntry">
- <parameter>
- <include item="{$api-subgroup}IndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </include>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="constructorTypeIndexEntry">
- <parameter>
- <xsl:value-of select="." />
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <!-- other member (or overload) topics get qualified and unqualified entries using the member names -->
- <xsl:when test="($topic-group='api' and $api-group='member' and not(/document/reference/memberdata/@overload)) or $topic-subgroup='overload'">
-
- <xsl:choose>
- <!-- explicit interface implementation -->
- <xsl:when test="/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private'">
- <xsl:variable name="entryType">
- <xsl:choose>
- <xsl:when test="string($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference/implements/member">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}ExplicitIndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}ExplicitIndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="entryType">
- <xsl:choose>
- <xsl:when test="string($subsubgroup)">
- <xsl:value-of select="$subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:choose>
- <xsl:when test="$subgroup='overload'">
- <xsl:value-of select="/document/reference/apidata/@subgroup"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="names">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="textNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($names)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- <xsl:variable name="qnames">
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="qualifiedTextNames" />
- </xsl:for-each>
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($qnames)/name">
- <MSHelp:Keyword Index="K">
- <includeAttribute name="Term" item="{$entryType}IndexEntry">
- <parameter>
- <xsl:copy-of select="."/>
- </parameter>
- </includeAttribute>
- </MSHelp:Keyword>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:when>
- <!-- derived type lists get unqualified sub-entries -->
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_metadata.xsl" /> + + <xsl:template name="insertMetadata"> + <xsl:if test="$metadata='true'"> + <xml> + <MSHelp:Attr Name="AssetID" Value="{$key}" /> + <!-- toc title, rl title, etc. --> + <xsl:call-template name="mshelpTitles" /> + <!-- keywords for the A (link target) index --> + <xsl:call-template name="linkMetadata" /> + <!-- keywords for the K (index) index --> + <xsl:call-template name="indexMetadata" /> + <!-- keywords for the F (F1 help) index --> + <xsl:call-template name="helpMetadata" /> + <!-- help priority settings --> + <xsl:call-template name="helpPriorityMetadata" /> + <!-- attributes for api identification --> + <xsl:call-template name="apiTaggingMetadata" /> + <!-- atributes for filtering --> + <xsl:call-template name="mshelpDevlangAttributes" /> + <MSHelp:Attr Name="Locale"> + <includeAttribute name="Value" item="locale" /> + </MSHelp:Attr> + <!-- attribute to allow F1 help integration --> + <MSHelp:Attr Name="TopicType" Value="kbSyntax" /> + <MSHelp:Attr Name="TopicType" Value="apiref" /> + + <!-- Abstract --> + <xsl:choose> + <xsl:when test="string-length($abstractSummary) > 254"> + <MSHelp:Attr Name="Abstract" Value="{normalize-space(concat(substring($abstractSummary,1,250), ' ...'))}" /> + </xsl:when> + <xsl:when test="string-length($abstractSummary) > 0"> + <MSHelp:Attr Name="Abstract" Value="{normalize-space($abstractSummary)}" /> + </xsl:when> + </xsl:choose> + + <xsl:call-template name="mshelpCodelangAttributes" /> + <xsl:call-template name="versionMetadata" /> + <xsl:call-template name="authoredMetadata" /> + </xml> + </xsl:if> + </xsl:template> + + <!-- add DocSet and Technology attributes depending on the versions that support this api --> + <xsl:template name="versionMetadata"> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:variable name="supportedOnXNA"> + <xsl:call-template name="IsMemberSupportedOnXna" /> + </xsl:variable> + <xsl:if test="count(/document/reference/versions/versions[@name='netfw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='netfw']//version) > 0 "> + <MSHelp:Attr Name="Technology"> + <includeAttribute name="Value" item="desktopTechnologyAttribute" /> + </MSHelp:Attr> + </xsl:if> + <!-- insert CF values for Technology and DocSet attributes for: + api topics that have netcfw version nodes + memberlist topics where topicdata/versions has netcfw version nodes + overload list topics where any of the elements has netcfw version nodes + --> + <xsl:if test="count(/document/reference/versions/versions[@name='netcfw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='netcfw']//version) > 0 or count(/document/reference[topicdata[@subgroup='overload']]/elements//element/versions/versions[@name='netcfw']//version) > 0 or normalize-space($supportedOnCf)!=''"> + <MSHelp:Attr Name="Technology"> + <includeAttribute name="Value" item="netcfTechnologyAttribute" /> + </MSHelp:Attr> + <MSHelp:Attr Name="DocSet"> + <includeAttribute name="Value" item="netcfDocSetAttribute" /> + </MSHelp:Attr> + </xsl:if> + <!-- insert XNA values for Technology and DocSet attributes for: + api topics that have xnafw version nodes + memberlist topics where topicdata/versions has xnafw version nodes + overload list topics where any of the elements has xnafw version nodes + --> + <xsl:if test="count(/document/reference/versions/versions[@name='xnafw']//version) > 0 or count(/document/reference/topicdata/versions/versions[@name='xnafw']//version) > 0 or count(/document/reference[topicdata[@subgroup='overload']]/elements//element/versions/versions[@name='xnafw']//version) > 0 or normalize-space($supportedOnXNA)!=''"> + <MSHelp:Attr Name="Technology"> + <includeAttribute name="Value" item="xnaTechnologyAttribute" /> + </MSHelp:Attr> + <MSHelp:Attr Name="DocSet"> + <includeAttribute name="Value" item="xnaDocSetAttribute" /> + </MSHelp:Attr> + </xsl:if> + </xsl:template> + + <!-- attributes and keywords added to topics by authors --> + + <xsl:template name="authoredMetadata"> + + <!-- authored attributes --> + <xsl:for-each select="/document/metadata/attribute"> + <MSHelp:Attr Name="{@name}" Value="{text()}" /> + </xsl:for-each> + + <!-- authored K --> + <xsl:for-each select="/document/metadata/keyword[@index='K']"> + <MSHelp:Keyword Index="K"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='K']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored S --> + <xsl:for-each select="/document/metadata/keyword[@index='S']"> + <MSHelp:Keyword Index="S"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='S']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + <!-- S index keywords need to be converted to F index keywords --> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='S']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored F --> + <xsl:for-each select="/document/metadata/keyword[@index='F']"> + <MSHelp:Keyword Index="F"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='F']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + <!-- authored B --> + <xsl:for-each select="/document/metadata/keyword[@index='B']"> + <MSHelp:Keyword Index="B"> + <xsl:attribute name="Term"> + <xsl:value-of select="text()" /> + <xsl:for-each select="keyword[@index='B']"> + <xsl:text>, </xsl:text> + <xsl:value-of select="text()"/> + </xsl:for-each> + </xsl:attribute> + </MSHelp:Keyword> + </xsl:for-each> + + </xsl:template> + + <!-- toc title and rl title --> + + <xsl:template name="mshelpTitles"> + + <!-- Toc List title--> + <MSHelp:TOCTitle> + <includeAttribute name="Title" item="tocTitle"> + <parameter> + <xsl:call-template name="topicTitlePlain" /> + </parameter> + </includeAttribute> + </MSHelp:TOCTitle> + + <!-- The Results List title --> + <MSHelp:RLTitle> + <includeAttribute name="Title" item="rlTitle"> + <parameter> + <xsl:call-template name="topicTitlePlain"> + <xsl:with-param name="qualifyMembers" select="true()" /> + </xsl:call-template> + </parameter> + <parameter> + <xsl:value-of select="$namespaceName"/> + </parameter> + </includeAttribute> + </MSHelp:RLTitle> + + </xsl:template> + + <xsl:template name="apiTaggingMetadata"> + <xsl:if test="$topic-group='api' and ($api-group='type' or $api-group='member')"> + <MSHelp:Attr Name="APIType" Value="Managed" /> + <MSHelp:Attr Name="APILocation" Value="{/document/reference/containers/library/@assembly}.dll" /> + <xsl:choose> + <xsl:when test="$api-group='type'"> + <xsl:variable name="apiTypeName"> + <xsl:choose> + <xsl:when test="/document/reference/containers/namespace/apidata/@name != ''"> + <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/apidata/@name)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type --> + <MSHelp:Attr Name="APIName" Value="{$apiTypeName}" /> + <xsl:choose> + <xsl:when test="boolean($api-subgroup='delegate')"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.ctor')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','Invoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','BeginInvoke')}" /> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.','EndInvoke')}" /> + </xsl:when> + <xsl:when test="$api-subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Attr Name="APIName" Value="{substring(@api,3)}" /> + </xsl:for-each> + <!-- Namespace + Type + Member for each member --> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="$api-group='member'"> + <xsl:variable name="apiTypeName"> + <xsl:value-of select="concat(/document/reference/containers/namespace/apidata/@name,'.',/document/reference/containers/type/apidata/@name)" /> + <xsl:if test="count(/document/reference/templates/template) > 0"> + <xsl:value-of select="concat('`',count(/document/reference/templates/template))" /> + </xsl:if> + </xsl:variable> + <!-- Namespace + Type + Member --> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.',/document/reference/apidata/@name)}" /> + <xsl:choose> + <!-- for properties, add APIName attribute get/set accessor methods --> + <xsl:when test="boolean($api-subgroup='property')"> + <xsl:if test="/document/reference/propertydata[@get='true']"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.get_',/document/reference/apidata/@name)}" /> + </xsl:if> + <xsl:if test="/document/reference/propertydata[@set='true']"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.set_',/document/reference/apidata/@name)}" /> + </xsl:if> + </xsl:when> + <!-- for events, add APIName attribute add/remove accessor methods --> + <xsl:when test="boolean($api-subgroup='event')"> + <xsl:if test="/document/reference/eventdata[@add='true']"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.add_',/document/reference/apidata/@name)}" /> + </xsl:if> + <xsl:if test="/document/reference/eventdata[@remove='true']"> + <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.remove_',/document/reference/apidata/@name)}" /> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + </xsl:if> + </xsl:template> + + <!-- link target (A index) keywords --> + + <xsl:template name="linkMetadata"> + + <!-- code entity reference keyword --> + <MSHelp:Keyword Index="A" Term="{$key}" /> + + <xsl:if test="$topic-group='api' and $api-subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="A" Term="{@api}" /> + </xsl:for-each> + </xsl:if> + + <!-- frlrf keywords --> + <xsl:call-template name="FrlrfKeywords"/> + + </xsl:template> + + <xsl:template name="FrlrfKeywords"> + <xsl:variable name="frlrfTypeName"> + <!-- for members and nested types, start with the containing type name --> + <xsl:for-each select="/document/reference/containers/type"> + <xsl:call-template name="FrlrfTypeName"/> + </xsl:for-each> + <!-- for types and member list topics, append the type name --> + <xsl:if test="/document/reference/apidata[@group='type']"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="FrlrfTypeName"/> + </xsl:for-each> + </xsl:if> + </xsl:variable> + <xsl:variable name="memberName"> + <xsl:choose> + <xsl:when test="/document/reference/apidata[@subgroup='constructor']"> + <xsl:value-of select="'ctor'"/> + </xsl:when> + <xsl:when test="/document/reference/apidata[@subsubgroup='operator']"> + <xsl:value-of select="concat('op_', /document/reference/apidata/@name)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <!-- namespace topic --> + <xsl:when test="/document/reference/apidata/@group='namespace'"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$memberName),'.','')}"/> + </xsl:when> + <!-- Overload topic --> + <xsl:when test="/document/reference/topicdata[@subgroup='overload']"> + <xsl:variable name="frlrfBaseId"> + <xsl:value-of select="translate(concat('frlrf', $namespaceName, $frlrfTypeName, 'Class', $memberName, 'Topic'),'.','')"/> + </xsl:variable> + <MSHelp:Keyword Index="A" Term="{$frlrfBaseId}"/> + <!-- whidbey included frlrf keyword for each overload, but I don't think we need in Manifold, so commenting it out --> + <!-- + <xsl:for-each select="elements/element"> + <MSHelp:Keyword Index="A" Term="{concat($frlrfBaseId, string(position()))}"/> + </xsl:for-each> + --> + </xsl:when> + <!-- Member list topic (other than overload list captured above) --> + <xsl:when test="/document/reference/topicdata[@group='list']"> + <xsl:variable name="memberListSubgroup"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@subgroup='members'">Members</xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@subgroup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf', $namespaceName, $frlrfTypeName, $memberListSubgroup, 'Topic'),'.','')}"/> + </xsl:when> + <!-- type topic --> + <xsl:when test="/document/reference/apidata[@group='type']"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$namespaceName, $frlrfTypeName, 'ClassTopic'),'.','')}"/> + </xsl:when> + <!-- no frlrf ID for overload signature topics--> + <xsl:when test="/document/reference/apidata[@group='member'] and /document/reference/memberdata/@overload"/> + <!-- non-overload member topic --> + <xsl:when test="/document/reference/apidata[@group='member']"> + <MSHelp:Keyword Index="A" Term="{translate(concat('frlrf',$namespaceName, $frlrfTypeName, 'Class', $memberName, 'Topic'),'.','')}"/> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="FrlrfTypeName"> + <xsl:for-each select="type"> + <xsl:call-template name="FrlrfTypeName"/> + </xsl:for-each> + <xsl:choose> + <xsl:when test="templates/template"> + <xsl:value-of select="concat(apidata/@name, count(templates/template))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="helpMetadata"> + <!-- F keywords --> + <xsl:choose> + <!-- namespace pages get the namespace keyword, if it exists --> + <xsl:when test="$group='namespace'"> + <xsl:variable name="namespace" select="/document/reference/apidata/@name" /> + <xsl:if test="boolean($namespace != '')"> + <MSHelp:Keyword Index="F" Term="{$namespace}" /> + </xsl:if> + </xsl:when> + <!-- type overview and member list pages get type and namespace.type keywords --> + <xsl:when test="$group='type' or ($group='list' and $subgroup='members')"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNameWithTicks" /> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="F" Term="{$type}" /> + <xsl:if test="boolean($namespace != '')"> + <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type)}" /> + </xsl:if> + <xsl:if test="$subgroup = 'enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', apidata/@name)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace,'.',$type, '.', apidata/@name)}" /> + </xsl:if> + </xsl:for-each> + </xsl:if> + <xsl:call-template name="xamlMSHelpFKeywords"/> + </xsl:when> + + <!-- overload list pages get member, type.member, and namepsace.type.member keywords --> + <xsl:when test="$group='list' and $subgroup='overload'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameWithTicks" /> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="member"> + <xsl:choose> + <!-- if the member is a constructor, use the member name for the type name --> + <xsl:when test="/document/reference/apidata[@subgroup='constructor']"> + <xsl:value-of select="$type" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <MSHelp:Keyword Index="F" Term="{$member}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" /> + <xsl:if test="boolean($namespace != '')"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" /> + </xsl:if> + </xsl:when> + + <!-- no F1 help entries for overload signature topics --> + <xsl:when test="$group='member' and /document/reference/memberdata/@overload"/> + + <!-- member pages get member, type.member, and namepsace.type.member keywords --> + <xsl:when test="$group='member'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="type"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameWithTicks" /> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="member"> + <xsl:choose> + <!-- if the member is a constructor, use the member name for the type name --> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="$type" /> + </xsl:when> + <!-- explicit interface implementation --> + <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <xsl:for-each select="/document/reference/implements/member"> + <xsl:call-template name="typeNameWithTicks" /> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <!-- + <xsl:choose> + --> + <!-- + <xsl:when test="$subgroup='constructor'"> + <MSHelp:Keyword Index="F" Term="{$type}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $type)}" /> + <xsl:if test="boolean($namespace)"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $type)}" /> + </xsl:if> + </xsl:when> + <xsl:otherwise> + --> + <MSHelp:Keyword Index="F" Term="{$member}" /> + <MSHelp:Keyword Index="F" Term="{concat($type, '.', $member)}" /> + <xsl:if test="boolean($namespace != '')"> + <MSHelp:Keyword Index="F" Term="{concat($namespace, '.', $type, '.', $member)}" /> + </xsl:if> + <!-- + </xsl:otherwise> + </xsl:choose> + --> + </xsl:when> + </xsl:choose> +</xsl:template> + + <!-- set high help priority for namespace and member list pages, lower priority for type overview pages --> + + <xsl:template name="helpPriorityMetadata"> + <xsl:choose> + <xsl:when test="($topic-group='api' and $api-group='namespace') or ($topic-group='list' and $topic-subgroup='members')"> + <MSHelp:Attr Name="HelpPriority" Value="1"/> + </xsl:when> + <xsl:when test="$topic-group='api' and $api-group='type'"> + <MSHelp:Attr Name="HelpPriority" Value="2"/> + </xsl:when> + </xsl:choose> + </xsl:template> + + <xsl:template name="apiName"> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="/document/reference/containers/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="codeLang"> + <xsl:param name="codeLang" /> + <MSHelp:Attr Name="codelang" Value="{$codeLang}" /> + </xsl:template> + + <!-- make a semicolon-separated list of the $languages--> + <xsl:template name="languagesList"> + <xsl:for-each select="$languages/language"> + <xsl:variable name="devlang"> + <xsl:call-template name="GetDevLangAttrValue"> + <xsl:with-param name="devlang" select="@name"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="normalize-space($devlang)!=''"> + <xsl:value-of select="$devlang"/><xsl:text>;</xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="mshelpDevlangAttributes"> + <!-- first insert a DevLang attr for each language in the $languages arg passed to the transform --> + <xsl:for-each select="$languages/language"> + <xsl:variable name="devlang"> + <xsl:call-template name="GetDevLangAttrValue"> + <xsl:with-param name="devlang" select="@name"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="normalize-space($devlang)=''"/> + <xsl:otherwise> + <MSHelp:Attr Name="DevLang" Value="{$devlang}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + + <!-- make a list of the languages that have already been included via $languages --> + <xsl:variable name="languagesList"> + <xsl:call-template name="languagesList"/> + </xsl:variable> + + <!-- add DevLang attr for any additional languages referred to in the topic's snippet and code nodes --> + <xsl:for-each select="//*[@language]"> + <xsl:if test="not(@language=preceding::*/@language)"> + <xsl:variable name="devlang"> + <xsl:call-template name="GetDevLangAttrValue"> + <xsl:with-param name="devlang" select="@language"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="normalize-space($devlang)=''"/> + <xsl:when test="contains($languagesList,concat($devlang,';'))"/> + <xsl:otherwise> + <MSHelp:Attr Name="DevLang" Value="{$devlang}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + + <!-- extend the list of languages that have already been included --> + <xsl:variable name="languagesList2"> + <xsl:value-of select="$languagesList"/> + <xsl:for-each select="//*[@language]"> + <xsl:variable name="devlang"> + <xsl:call-template name="GetDevLangAttrValue"> + <xsl:with-param name="devlang" select="@language"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="normalize-space($devlang)!=''"> + <xsl:value-of select="$devlang"/><xsl:text>;</xsl:text> + </xsl:if> + </xsl:for-each> + </xsl:variable> + + <!-- add DevLang attr for any additional languages referred to in the topic's syntax blocks --> + <xsl:for-each select="/document/syntax/div[@codeLanguage and not(div[@class='nonXamlAssemblyBoilerplate'])]"> + <xsl:if test="not(@codeLanguage=preceding::*/@codeLanguage)"> + <xsl:variable name="devlang"> + <xsl:call-template name="GetDevLangAttrValue"> + <xsl:with-param name="devlang" select="@codeLanguage"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <xsl:when test="normalize-space($devlang)=''"/> + <xsl:when test="contains($languagesList2,concat($devlang,';'))"/> + <xsl:otherwise> + <MSHelp:Attr Name="DevLang" Value="{$devlang}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="GetDevLangAttrValue"> + <xsl:param name="devlang"/> + <xsl:choose> + <xsl:when test="$devlang = 'CSharp' or $devlang = 'c#' or $devlang = 'cs' or $devlang = 'C#'" > + <xsl:text>CSharp</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'ManagedCPlusPlus' or $devlang = 'cpp' or $devlang = 'cpp#' or $devlang = 'c' or $devlang = 'c++' or $devlang = 'C++' or $devlang = 'kbLangCPP'" > + <xsl:text>C++</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'JScript' or $devlang = 'js' or $devlang = 'jscript#' or $devlang = 'jscript' or $devlang = 'JScript' or $devlang = 'kbJScript'"> + <xsl:text>JScript</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'VisualBasic' or $devlang = 'VisualBasicUsage' or $devlang = 'vb' or $devlang = 'vb#' or $devlang = 'VB' or $devlang = 'kbLangVB'" > + <xsl:text>VB</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'VBScript' or $devlang = 'vbs'"> + <xsl:text>VBScript</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'JSharp' or $devlang = 'j#' or $devlang = 'jsharp' or $devlang = 'VJ#'"> + <xsl:text>VJ#</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'xaml' or $devlang = 'XAML'"> + <xsl:text>XAML</xsl:text> + </xsl:when> + <xsl:when test="$devlang = 'xml' or $devlang = 'XML'"> + <xsl:text>XML</xsl:text> + </xsl:when> + <xsl:otherwise/> + </xsl:choose> + </xsl:template> + + <!-- + Additional F1 keywords for class, struct, and enum topics in a set of WPF namespaces. + This template inserts the MSHelp:Keyword nodes. + The keyword prefixes and the WPF namespaces are hard-coded in variables. + --> + <xsl:variable name="var_wpf_f1index_prefix_1">http://schemas.microsoft.com/winfx/2006/xaml/presentation#</xsl:variable> + <xsl:variable name="var_wpf_f1index_prefix_1_namespaces">N:System.Windows.Controls#N:System.Windows.Documents#N:System.Windows.Shapes#N:System.Windows.Navigation#N:System.Windows.Data#N:System.Windows#N:System.Windows.Controls.Primitives#N:System.Windows.Media.Animation#N:System.Windows.Annotations#N:System.Windows.Annotations.Anchoring#N:System.Windows.Annotations.Storage#N:System.Windows.Media#N:System.Windows.Media.Animation#N:System.Windows.Media.Media3D#N:</xsl:variable> + + <xsl:template name="xamlMSHelpFKeywords"> + <xsl:if test="$subgroup='class' or $subgroup='enumeration' or $subgroup='structure'"> + <xsl:if test="boolean(contains($var_wpf_f1index_prefix_1_namespaces, concat('#',/document/reference/containers/namespace/@api,'#')) + or starts-with($var_wpf_f1index_prefix_1_namespaces, concat(/document/reference/containers/namespace/@api,'#')))"> + <MSHelp:Keyword Index="F" Term="{concat($var_wpf_f1index_prefix_1, /document/reference/apidata/@name)}"/> + </xsl:if> + </xsl:if> + </xsl:template> + + <!-- Index Logic --> + + <xsl:template name="indexMetadata"> + <xsl:choose> + <!-- namespace topics get one unqualified index entry --> + <xsl:when test="$topic-group='api' and $api-group='namespace'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="namespaceIndexEntry"> + <parameter> + <xsl:value-of select="msxsl:node-set($names)/name" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:when> + <!-- type overview topics get qualified and unqualified index entries, and an about index entry --> + <xsl:when test="$topic-group='api' and $api-group='type'"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <xsl:if test="boolean($namespace != '')"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="$namespace"/> + <xsl:text>.</xsl:text> + <xsl:copy-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + <!-- multi-topic types (not delegates and enumerations) get about entries, too--> + <xsl:if test="$api-subgroup='class' or $api-subgroup='structure' or $api-subgroup='interface'"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="aboutTypeIndexEntry"> + <parameter> + <include item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:if> + </xsl:for-each> + <!-- enumerations get the index entries for their members --> + <xsl:if test="$api-subgroup='enumeration'"> + <xsl:for-each select="/document/reference/elements/element"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$api-subgroup}MemberIndexEntry"> + <parameter> + <xsl:value-of select="apidata/@name" /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + <!-- all member lists get unqualified entries, qualified entries, and unqualified sub-entries --> + <xsl:when test="$topic-group='list' and $topic-subgroup='members'"> + <xsl:variable name="namespace" select="/document/reference/containers/namespace/apidata/@name" /> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="membersIndexEntry"> + <parameter> + <include item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:if test="boolean($namespace != '')"> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:if> + </xsl:when> + <!-- other member list pages get unqualified sub-entries --> + <xsl:when test="$topic-group='list' and not($topic-subgroup = 'overload')"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$subgroup}IndexEntry"> + <parameter> + <include item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <!-- constructor (or constructor overload) topics get unqualified sub-entries using the type names --> + <xsl:when test="($topic-group='api' and $api-subgroup='constructor' and not(/document/reference/memberdata/@overload)) or ($topic-subgroup='overload' and $api-subgroup = 'constructor')"> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference/containers/type"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="constructorIndexEntry"> + <parameter> + <include item="{$api-subgroup}IndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </include> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="constructorTypeIndexEntry"> + <parameter> + <xsl:value-of select="." /> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <!-- other member (or overload) topics get qualified and unqualified entries using the member names --> + <xsl:when test="($topic-group='api' and $api-group='member' and not(/document/reference/memberdata/@overload)) or $topic-subgroup='overload'"> + + <xsl:choose> + <!-- explicit interface implementation --> + <xsl:when test="/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private'"> + <xsl:variable name="entryType"> + <xsl:choose> + <xsl:when test="string($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference/implements/member"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}ExplicitIndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}ExplicitIndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="entryType"> + <xsl:choose> + <xsl:when test="string($subsubgroup)"> + <xsl:value-of select="$subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:choose> + <xsl:when test="$subgroup='overload'"> + <xsl:value-of select="/document/reference/apidata/@subgroup"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="names"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="textNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($names)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + <xsl:variable name="qnames"> + <xsl:for-each select="/document/reference"> + <xsl:call-template name="qualifiedTextNames" /> + </xsl:for-each> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($qnames)/name"> + <MSHelp:Keyword Index="K"> + <includeAttribute name="Term" item="{$entryType}IndexEntry"> + <parameter> + <xsl:copy-of select="."/> + </parameter> + </includeAttribute> + </MSHelp:Keyword> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + </xsl:when> + <!-- derived type lists get unqualified sub-entries --> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl index 8946e52..2137e5f 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl @@ -1,1862 +1,1862 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="../../shared/transforms/utilities_reference.xsl"/>
-
- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" />
- <!-- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" /> -->
-
- <!-- key parameter is the api identifier string -->
- <xsl:param name="key" />
- <xsl:param name="metadata" value="false" />
- <xsl:param name="languages">false</xsl:param>
-
- <xsl:include href="utilities_metadata.xsl" />
- <xsl:include href="xamlSyntax.xsl"/>
-
- <xsl:template match="/">
- <html>
- <head>
- <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>
- <META NAME="save" CONTENT="history"/>
- <title><xsl:call-template name="topicTitlePlain"/></title>
- <xsl:call-template name="insertStylesheets" />
- <xsl:call-template name="insertScripts" />
- <xsl:call-template name="insertFilename" />
- <xsl:call-template name="insertMetadata" />
- </head>
- <body>
-
- <xsl:call-template name="upperBodyStuff"/>
- <xsl:call-template name="main"/>
- </body>
- </html>
- </xsl:template>
-
- <!-- useful global variables -->
-
- <xsl:variable name="group">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@group" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@group" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="subgroup">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@subgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:variable name="subsubgroup">
- <xsl:choose>
- <xsl:when test="/document/reference/topicdata/@group = 'api'">
- <xsl:value-of select="/document/reference/apidata/@subsubgroup" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/topicdata/@subsubgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!--<xsl:variable name="pseudo" select="boolean(/document/reference/topicdata[@pseudo='true'])"/>-->
-
- <xsl:variable name="namespaceName" select="/document/reference/containers/namespace/apidata/@name" />
-
- <!-- document head -->
-
- <xsl:template name="insertStylesheets">
- <link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
- <!-- make mshelp links work -->
- <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" />
- <!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />-->
- </xsl:template>
-
- <xsl:template name="insertScripts">
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>Dropdown.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>script_manifold.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>script_feedBack.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>CheckboxMenu.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- <script type="text/javascript">
- <includeAttribute name="src" item="scriptPath"><parameter>CommonUtilities.js</parameter></includeAttribute>
- <xsl:text> </xsl:text>
- </script>
- </xsl:template>
-
- <xsl:template match="parameters">
- <div id="parameters">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="parametersTitle"/>
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="parameter">
- <xsl:variable name="paramName" select="@name"/>
- <dl paramName="{$paramName}">
- <dt>
- <span class="parameter">
- <xsl:value-of select="$paramName"/>
- </span>
- </dt>
- <dd>
- <include item="typeLink">
- <parameter>
- <xsl:apply-templates select="*[1]" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
- </parameter>
- </include>
- <br />
- <xsl:call-template name="getParameterDescription">
- <xsl:with-param name="name" select="@name" />
- </xsl:call-template>
- </dd>
- </dl>
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </div>
- </xsl:template>
-
- <xsl:template match="implements">
- <xsl:if test="member">
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="implementsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:for-each select="member">
- <referenceLink target="{@api}" qualified="true" />
- <br />
- </xsl:for-each>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="element" mode="root">
- <tr>
- <td>
- <xsl:choose>
- <xsl:when test="apidata/@name = ''">
- <referenceLink target="{@api}" qualified="false">
- <include item="defaultNamespace" />
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="namespace">
- <xsl:variable name="typeVisibility">
- <xsl:choose>
- <xsl:when test="typedata/@visibility='family' or typedata/@visibility='family or assembly' or typedata/@visibility='assembly'">prot</xsl:when>
- <xsl:when test="typedata/@visibility='private'">priv</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <tr>
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:text>; public</xsl:text>
- </xsl:attribute>
- <td>
- <xsl:call-template name="typeIcon">
- <xsl:with-param name="typeVisibility" select="$typeVisibility" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="createReferenceLink">
- <xsl:with-param name="id" select="@api" />
- </xsl:call-template>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="enumeration">
- <xsl:variable name="supportedOnXna">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:variable>
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <tr>
- <td>
- <!-- platform icons -->
- <xsl:if test="normalize-space($supportedOnCf)!=''">
- <img data="netcfw">
- <includeAttribute name="src" item="iconPath">
- <parameter>CFW.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="CompactFrameworkAltText" />
- </img>
- </xsl:if>
-
- <xsl:if test="normalize-space($supportedOnXna)!=''">
- <img data="xnafw">
- <includeAttribute name="src" item="iconPath">
- <parameter>xna.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="XNAFrameworkAltText" />
- </img>
- </xsl:if>
- </td>
- <xsl:variable name="id" select="@api" />
- <td target="{$id}">
- <span class="selflink"><xsl:value-of select="apidata/@name"/></span>
- </td>
- <td>
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="derivedType">
- <tr>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
-
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template match="element" mode="overload">
- <xsl:variable name="supportedOnXna">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:variable>
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:variable name="staticMember">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:variable>
- <xsl:variable name="inheritedMember">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:variable>
- <xsl:variable name="protectedMember">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:variable>
- <xsl:variable name="privateMember">
- <xsl:call-template name="IsMemberPrivate"/>
- </xsl:variable>
-
- <tr>
- <xsl:if test="normalize-space($inheritedMember)!=''">
- <xsl:attribute name="name">inheritedMember</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($protectedMember)!=''">
- <xsl:attribute name="protected">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnXna)=''">
- <xsl:attribute name="notSupportedOnXna">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnCf)=''">
- <xsl:attribute name="notSupportedOn">netcf</xsl:attribute>
- </xsl:if>
-
- <xsl:attribute name="data">
- <xsl:value-of select="apidata/@subgroup" />
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='public'">
- <xsl:text>; public</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <xsl:text>; protected</xsl:text>
- </xsl:when>
- <xsl:when test="memberdata/@visibility='private' and not(proceduredata[@virtual = 'true'])">
- <xsl:text>; private</xsl:text>
- </xsl:when>
- <!-- NOTE: EII members (private-virtual) fall through to this xsl:otherwise block -->
- <xsl:otherwise>
- <xsl:text>; public</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="memberdata/@static = 'true'">
- <xsl:text>; static</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; instance</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:choose>
- <xsl:when test="normalize-space($inheritedMember)=''">
- <xsl:text>; declared</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>; inherited</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
-
- <td>
- <!-- item icons -->
- <xsl:call-template name="memberIcons">
- <xsl:with-param name="memberVisibility">
- <xsl:choose>
- <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when>
- <xsl:when test="memberdata/@visibility='private'">priv</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="staticMember" select="normalize-space($staticMember)" />
- <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/>
- <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/>
- </xsl:call-template>
- </td>
- <td>
- <!-- item name -->
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <!-- item description -->
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="normalize-space($inheritedMember)!=''">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:apply-templates select="overrides/member" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
-
- </td>
- </tr>
- </xsl:template>
-
- <xsl:template name="insertFilename">
- <meta name="container">
- <xsl:attribute name="content">
- <xsl:choose>
- <xsl:when test="normalize-space(/document/reference/containers/library/@assembly)">
- <xsl:value-of select="normalize-space(/document/reference/containers/library/@assembly)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>Namespaces</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </meta>
- <meta name="file" content="{/document/reference/file/@name}" />
- <meta name="guid">
- <xsl:attribute name="content">
- <xsl:value-of select="/document/reference/file/@name" />
- </xsl:attribute>
- </meta>
- </xsl:template>
-
- <!-- writing templates -->
-
- <!--<xsl:template name="csTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text><</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>></xsl:text>
- </xsl:template>
-
- <xsl:template name="csTemplatesInIndex" >
- <xsl:text>%3C</xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:text>%2C </xsl:text>
- </xsl:if>
- </xsl:for-each>
- <xsl:text>%3E</xsl:text>
- </xsl:template>
-
- <xsl:template name="vbTemplates">
- <xsl:param name="seperator" select="string(',')" />
- <xsl:text>(Of </xsl:text>
- <xsl:for-each select="template">
- <xsl:value-of select="@name" />
- <xsl:if test="not(position()=last())">
- <xsl:value-of select="$seperator" />
- </xsl:if>
- </xsl:for-each>
- <xsl:text>)</xsl:text>
- </xsl:template>
-
- <xsl:template name="typeTitle">
- <xsl:if test="containers/container[@type]">
- <xsl:for-each select="containers/container[@type]">
- <xsl:call-template name="typeTitle" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:value-of select="apidata/@name" />
- <xsl:if test="count(templates/template) > 0">
- <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each>
- </xsl:if>
- </xsl:template>-->
-
- <!-- document body -->
-
- <!-- control window -->
-
- <!--
- <xsl:template name="control">
- <div id="control">
- <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/>
- </div>
- </xsl:template>
- -->
-
- <!-- the plain-text title -->
- <!-- used in TOC and on topic window bar -->
-
- <xsl:template name="topicTitlePlain">
- <xsl:param name="qualifyMembers" select="false()" />
- <include>
- <xsl:attribute name="item">
- <xsl:choose>
- <!-- api topic titles -->
- <xsl:when test="$topic-group='api'">
- <!-- use generic titles for generics -->
- <!-- we don't do this any longer, since we now show generic parameters in the neutral syntax -->
- <!--<xsl:if test="boolean(/document/reference/templates)">
- <xsl:text>generic_</xsl:text>
- </xsl:if>-->
- <!-- the subsubgroup, subgroup, or group determines the title -->
- <xsl:choose>
- <xsl:when test="string($api-subsubgroup)">
- <xsl:value-of select="$api-subsubgroup" />
- </xsl:when>
- <xsl:when test="string($api-subgroup)">
- <xsl:value-of select="$api-subgroup"/>
- </xsl:when>
- <xsl:when test="string($api-group)">
- <xsl:value-of select="$api-group"/>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <!-- overload topic titles -->
- <xsl:when test="$topic-subgroup='overload'">
- <!-- the api subgroup (e.g. "property") determines the title; do we want to use the subsubgoup name when it is available? -->
- <xsl:value-of select="$api-subgroup"/>
- </xsl:when>
- <!-- list topic titles -->
- <xsl:when test="$topic-group='list'">
- <!-- the topic subgroup (e.g. "methods") determines the title -->
- <xsl:value-of select="$topic-subgroup" />
- </xsl:when>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNamePlain">
- <xsl:with-param name="qualifyMembers" select="$qualifyMembers" />
- </xsl:call-template>
- </parameter>
- <parameter>
- <!-- show parameters only for overloaded members -->
- <xsl:if test="document/reference/memberdata/@overload" >
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="parameterTypesPlain" />
- </xsl:for-each>
- </xsl:if>
- </parameter>
- </include>
- </xsl:template>
-
- <!-- the language-variant, marked-up topic title -->
- <!-- used as the big title in the non-scrolling region -->
-
- <xsl:template name="topicTitleDecorated">
- <!--<xsl:param name="titleType" />-->
- <include>
- <xsl:attribute name="item">
- <!--<xsl:choose>
- --><!-- what is this for?! --><!--
- --><!--<xsl:when test="$titleType = 'tocTitle' and $group='namespace'">
- <xsl:text>tocTitle</xsl:text>
- </xsl:when>--><!--
- <xsl:otherwise>-->
- <!-- we don't call out generics will special titles anymore, because their type parameters are shown
- in the language neutral syntax -->
- <!--<xsl:if test="boolean(/document/reference/templates) and not($group='list')">
- <xsl:text>generic_</xsl:text>
- </xsl:if>-->
- <xsl:choose>
- <!-- api topic titles -->
- <xsl:when test="$topic-group='api'">
- <xsl:choose>
- <xsl:when test="string($api-subsubgroup)">
- <xsl:value-of select="$api-subsubgroup" />
- </xsl:when>
- <xsl:when test="string($api-subgroup)">
- <xsl:value-of select="$api-subgroup" />
- </xsl:when>
- <xsl:when test="string($api-group)">
- <xsl:value-of select="$api-group" />
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <!-- overload topic titles -->
- <xsl:when test="$topic-subgroup='overload'">
- <!-- the api subgroup (e.g. "property") determines the title; do we want to use the subsubgoup name when it is available? -->
- <xsl:value-of select="$api-subgroup"/>
- </xsl:when>
- <!-- list topic titles -->
- <xsl:when test="$topic-group='list'">
- <!-- the topic subgroup (e.g. "methods") determines the title -->
- <xsl:value-of select="$topic-subgroup" />
- </xsl:when>
- </xsl:choose>
- <xsl:text>TopicTitle</xsl:text>
- <!--</xsl:otherwise>
- </xsl:choose>-->
- </xsl:attribute>
- <parameter>
- <xsl:call-template name="shortNameDecorated" />
- </parameter>
- <parameter>
- <!-- show parameters only from overloaded members -->
- <xsl:if test="document/reference/memberdata/@overload" >
- <xsl:for-each select="/document/reference">
- <xsl:call-template name="parameterTypesDecorated" />
- </xsl:for-each>
- </xsl:if>
- </parameter>
- </include>
- </xsl:template>
-
-
- <!-- Title in TOC -->
-
- <!-- Index entry -->
-
- <!-- main window -->
-
- <xsl:template name="main">
- <div id="mainSection">
-
- <div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()">
- <include item="header" />
- </div>
-
- <!--<xsl:call-template name="head" />-->
- <xsl:call-template name="body" />
- </div>
- <xsl:call-template name="foot" />
- </div>
-
- </xsl:template>
-
- <!--<xsl:template name="head">
- <include item="header" />
- </xsl:template>-->
-
- <xsl:template name="syntaxBlocks">
-
- <xsl:for-each select="/document/syntax/div[@codeLanguage]">
- <xsl:choose>
- <xsl:when test="@codeLanguage='VisualBasic'">
- <xsl:call-template name="languageSyntaxBlock">
- <xsl:with-param name="language">VisualBasicDeclaration</xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- <xsl:when test="@codeLanguage='JSharp'">
- <xsl:if test="not(/document/reference/versions) or boolean(/document/reference/versions/versions[@name='netfw']//version[not(@name='netfw35')])">
- <xsl:call-template name="languageSyntaxBlock" />
- </xsl:if>
- </xsl:when>
- <xsl:when test="@codeLanguage='XAML'">
- <xsl:call-template name="XamlSyntaxBlock"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="languageSyntaxBlock" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="languageSyntaxBlock">
- <xsl:param name="language" select="@codeLanguage"/>
- <span codeLanguage="{$language}">
- <table>
- <tr>
- <th>
- <include item="{$language}" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:template>
-
- <xsl:template match="elements" mode="root">
- <xsl:if test="count(element) > 0">
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'namespaces'"/>
- <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList" frame="lhs" cellpadding="2">
- <tr>
- <th class="nameColumn"><include item="namespaceNameHeader"/></th>
- <th class="descriptionColumn"><include item="namespaceDescriptionHeader" /></th>
- </tr>
- <xsl:apply-templates select="element" mode="root">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="namespaceSection">
- <xsl:param name="listSubgroup" />
- <xsl:variable name="header" select="concat($listSubgroup, 'TypesFilterLabel')"/>
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="$listSubgroup"/>
- <xsl:with-param name="title">
- <include item="{$header}" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="namespaceList">
- <xsl:with-param name="listSubgroup" select="$listSubgroup" />
- </xsl:call-template>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="elements" mode="namespace">
-
- <xsl:if test="element/apidata/@subgroup = 'class'">
- <xsl:call-template name="namespaceSection">
- <xsl:with-param name="listSubgroup" select="'class'" />
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="element/apidata/@subgroup = 'structure'">
- <xsl:call-template name="namespaceSection">
- <xsl:with-param name="listSubgroup" select="'structure'" />
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="element/apidata/@subgroup = 'interface'">
- <xsl:call-template name="namespaceSection">
- <xsl:with-param name="listSubgroup" select="'interface'" />
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="element/apidata/@subgroup = 'delegate'">
- <xsl:call-template name="namespaceSection">
- <xsl:with-param name="listSubgroup" select="'delegate'" />
- </xsl:call-template>
- </xsl:if>
-
- <xsl:if test="element/apidata/@subgroup = 'enumeration'">
- <xsl:call-template name="namespaceSection">
- <xsl:with-param name="listSubgroup" select="'enumeration'" />
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="namespaceList">
- <xsl:param name="listSubgroup" />
-
- <table id="typeList" class="members" frame="lhs" cellpadding="2">
- <col width="10%"/>
- <tr>
- <th class="iconColumn">
-  
- </th>
- <th class="nameColumn">
- <include item="{$listSubgroup}NameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element[apidata/@subgroup=$listSubgroup]" mode="namespace">
- <xsl:sort select="@api" />
- </xsl:apply-templates>
- </table>
-
- </xsl:template>
-
- <xsl:template match="elements" mode="enumeration">
- <div id="enumerationSection">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'members'"/>
- <xsl:with-param name="title">
- <include item="enumMembersTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList" frame="lhs" cellpadding="2">
- <col width="10%"/>
- <tr>
- <th class="iconColumn"></th>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="enumeration"/>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </div>
- </xsl:template>
-
- <xsl:template match="element" mode="members">
- <xsl:param name="subgroup"/>
- <xsl:if test="memberdata[@visibility='public'] and apidata[@subgroup=$subgroup]">
- public;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly'] and apidata[@subgroup=$subgroup]">
- protected;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and apidata[@subgroup=$subgroup] and not(proceduredata[@virtual = 'true'])">
- private;
- </xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- explicit;
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="memberIntroBoilerplate">
- <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <!-- if there are exposed members, show a boilerplate intro p -->
- <xsl:variable name="introTextItemId">
- <xsl:choose>
- <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when>
- <xsl:otherwise>exposedMembersTableText</xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <p>
- <include item="{$introTextItemId}">
- <parameter>
- <referenceLink target="{$typeId}" />
- </parameter>
- <parameter>
- <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text>
- </parameter>
- </include>
- </p>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="member">
-
- <xsl:call-template name="memberIntro" />
-
- <xsl:if test="element/apidata[@subgroup='constructor']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup" select="'constructor'" />
- <xsl:with-param name="members" select="element[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- method table -->
- <xsl:if test="element/apidata[@subgroup='method' and not(@subsubgroup)]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">method</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- operator table -->
- <xsl:if test="element/apidata[@subsubgroup='operator']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">operator</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- extension method table -->
- <xsl:if test="element/apidata[@subsubgroup='extension']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">extensionMethod</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='extension']]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- field table -->
- <xsl:if test="element/apidata[@subgroup='field']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">field</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='field']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- property table -->
- <xsl:if test="element/apidata[@subgroup='property' and not(@subsubgroup)]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">property</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- attached property table -->
- <xsl:if test="element/apidata[@subsubgroup='attachedProperty']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">attachedProperty</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='attachedProperty']]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- event table -->
- <xsl:if test="element/apidata[@subgroup='event' and not(@subsubgroup)]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">event</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subgroup='event' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- attached event table -->
- <xsl:if test="element/apidata[@subsubgroup='attachedEvent']">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">attachedEvent</xsl:with-param>
- <xsl:with-param name="members" select="element[apidata[@subsubgroup='attachedEvent']]" />
- </xsl:call-template>
- </xsl:if>
-
- <!-- eii table -->
- <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup">ExplicitInterfaceImplementation</xsl:with-param>
- <xsl:with-param name="members" select="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]" />
- </xsl:call-template>
- </xsl:if>
-
- </xsl:template>
-
- <xsl:template name="memberlistSection">
- <xsl:param name="members"/>
- <xsl:param name="headerGroup" />
- <xsl:param name="showParameters" select="'false'" />
-
- <xsl:variable name="header">
- <xsl:value-of select="concat($headerGroup, 'Table')"/>
- </xsl:variable>
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="$header" />
- <xsl:with-param name="title">
- <include item="{$header}" />
- </xsl:with-param>
- <xsl:with-param name="toplink" select="true()"/>
- <xsl:with-param name="content">
- <table id="memberList" class="members" frame="lhs" cellpadding="2">
- <col width="10%"/>
- <tr>
- <th class="iconColumn">
-  
- </th>
- <th class="nameColumn">
- <include item="typeNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="typeDescriptionHeader" />
- </th>
- </tr>
-
- <!-- add a row for each member of the current subgroup-visibility -->
- <xsl:apply-templates select="$members" mode="memberlistRow">
- <xsl:with-param name="showParameters" select="$showParameters" />
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </xsl:with-param>
- </xsl:call-template>
-
- </xsl:template>
-
- <xsl:template match="elements" mode="type">
-
- </xsl:template>
-
- <xsl:template name="IsMemberUnsupportedOnNetfw">
- <xsl:if test="boolean(not(@netfw) and not(element/@netfw))">
- <xsl:text>unsupported</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <!-- for testing CF and XNA support, check the signature variations of @signatureset elements -->
- <!-- for testing inherited/protected/etc, do not check the @signatureset variations; just go with the primary .NET Framework value -->
- <xsl:template name="IsMemberSupportedOnXna">
- <xsl:choose>
- <xsl:when test="element">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="platformFilterExcludesXna" select="boolean(platforms and not(platforms/platform[.='Xbox360']))" />
- <xsl:if test="boolean(not($platformFilterExcludesXna) and (@xnafw or element/@xnafw))">
- <xsl:text>supported</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberSupportedOnCf">
- <xsl:choose>
- <xsl:when test="element">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="platformFilterExcludesCF" select="boolean( platforms and not(platforms[platform[.='PocketPC'] or platform[.='SmartPhone'] or platform[.='WindowsCE']]) )" />
- <xsl:if test="boolean(not($platformFilterExcludesCF) and (@netcfw or element/@netcfw))">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberStatic">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:when test="apidata[@subsubgroup='attachedProperty' or @subsubgroup='attachedEvent']"/>
- <xsl:otherwise>
- <xsl:if test="memberdata/@static='true'">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- returns a non-empty string if the element is inherited, or for overloads if any of the overloads is inherited -->
- <xsl:template name="IsMemberInherited">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="containers/type[@api!=$typeId]">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- returns a non-empty string if the element is declared, or for overloads if any of the overloads is declared -->
- <xsl:template name="IsMemberDeclared">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberDeclared"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="containers/type[@api=$typeId]">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberPublic">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberPublic"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="memberdata[@visibility='public']">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberProtected">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="IsMemberPrivate">
- <xsl:choose>
- <xsl:when test="element and not(@signatureset)">
- <xsl:for-each select="element">
- <xsl:call-template name="IsMemberPrivate"/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:if test="memberdata[@visibility='private'] and not(proceduredata[@virtual = 'true'])">
- <xsl:text>yes</xsl:text>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template match="element" mode="memberlistRow">
- <xsl:param name="showParameters" select="'false'" />
- <xsl:variable name="notsupportedOnNetfw">
- <xsl:call-template name="IsMemberUnsupportedOnNetfw"/>
- </xsl:variable>
- <xsl:variable name="supportedOnXna">
- <xsl:call-template name="IsMemberSupportedOnXna"/>
- </xsl:variable>
- <xsl:variable name="supportedOnCf">
- <xsl:call-template name="IsMemberSupportedOnCf"/>
- </xsl:variable>
- <xsl:variable name="staticMember">
- <xsl:call-template name="IsMemberStatic"/>
- </xsl:variable>
- <xsl:variable name="inheritedMember">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:variable>
- <xsl:variable name="declaredMember">
- <xsl:call-template name="IsMemberDeclared"/>
- </xsl:variable>
- <xsl:variable name="protectedMember">
- <xsl:call-template name="IsMemberProtected"/>
- </xsl:variable>
- <xsl:variable name="publicMember">
- <xsl:call-template name="IsMemberPublic"/>
- </xsl:variable>
- <xsl:variable name="privateMember">
- <xsl:call-template name="IsMemberPrivate"/>
- </xsl:variable>
- <!-- do not show non-static members of static types -->
- <xsl:if test=".//memberdata/@static='true' or not(/document/reference/typedata[@abstract='true' and @sealed='true'])">
- <tr>
- <xsl:attribute name="data">
- <!-- it's possible to include both public and protected for overload topics -->
- <xsl:if test="normalize-space($publicMember)!=''">
- <xsl:text>public;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($protectedMember)!=''">
- <xsl:text>protected;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($privateMember)!=''">
- <xsl:text>private;</xsl:text>
- </xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- <xsl:text>explicit;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($staticMember)!=''">
- <xsl:text>static;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($declaredMember)!=''">
- <xsl:text>declared;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($inheritedMember)!=''">
- <xsl:text>inherited;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnCf)!=''">
- <xsl:text>netcfw;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnXna)!=''">
- <xsl:text>xnafw;</xsl:text>
- </xsl:if>
- <xsl:if test="normalize-space($notsupportedOnNetfw)!=''">
- <xsl:text>notNetfw;</xsl:text>
- </xsl:if>
- </xsl:attribute>
-<!--
- <xsl:if test="normalize-space($declaredMember)=''">
- <xsl:attribute name="name">inheritedMember</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($protectedMember)!=''">
- <xsl:attribute name="protected">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($notsupportedOnNetfw)!=''">
- <xsl:attribute name="notsupportedOnNetfw">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnXna)=''">
- <xsl:attribute name="notSupportedOnXna">true</xsl:attribute>
- </xsl:if>
- <xsl:if test="normalize-space($supportedOnCf)=''">
- <xsl:attribute name="notSupportedOn">netcf</xsl:attribute>
- </xsl:if>
--->
- <td>
- <xsl:call-template name="memberIcons">
- <xsl:with-param name="memberVisibility">
- <xsl:choose>
- <xsl:when test="normalize-space($publicMember)!=''">pub</xsl:when>
- <xsl:when test="normalize-space($protectedMember)!=''">prot</xsl:when>
- <xsl:when test="memberdata/@visibility='private'">priv</xsl:when>
- <xsl:otherwise>pub</xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="staticMember" select="normalize-space($staticMember)" />
- <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/>
- <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/>
- </xsl:call-template>
- </td>
- <td>
- <xsl:choose>
- <xsl:when test="@display-api">
- <referenceLink target="{@api}" display-target="{@display-api}" show-parameters="{$showParameters}" />
- </xsl:when>
- <xsl:otherwise>
- <referenceLink target="{@api}" show-parameters="{$showParameters}" />
- </xsl:otherwise>
- </xsl:choose>
- </td>
- <td>
- <xsl:call-template name="getInternalOnlyDescription" />
- <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
- <xsl:text> </xsl:text>
- <include item="obsoleteRed" />
- </xsl:if>
- <xsl:if test="topicdata[@subgroup='overload']">
- <include item="Overloaded"/>
- <xsl:text> </xsl:text>
- </xsl:if>
- <xsl:apply-templates select="element" mode="overloadSummary" />
- <xsl:call-template name="getElementDescription" />
- <xsl:choose>
- <xsl:when test="not(topicdata[@subgroup='overload'])">
- <xsl:choose>
- <xsl:when test="@source='extension' and containers/type">
- <xsl:text> </xsl:text>
- <include item="definedBy">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="normalize-space($inheritedMember)!=''">
- <xsl:text> </xsl:text>
- <include item="inheritedFrom">
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- <xsl:when test="overrides/member">
- <xsl:text> </xsl:text>
- <include item="overridesMember">
- <parameter>
- <xsl:apply-templates select="overrides/member" mode="link" />
- </parameter>
- </include>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- </xsl:choose>
-
- <!-- add boilerplate for other members in the sig set -->
- <xsl:if test="@signatureset and element">
- <xsl:variable name="primaryMember">
- <xsl:copy-of select="."/>
- </xsl:variable>
- <xsl:variable name="primaryFramework" select="versions/versions[1]/@name"/>
- <xsl:for-each select="versions/versions[@name!=$primaryFramework]">
- <xsl:variable name="secondaryFramework" select="@name"/>
- <xsl:if test="(msxsl:node-set($primaryMember)/*[not(@*[local-name()=$secondaryFramework])]) and (msxsl:node-set($primaryMember)/*[element[@*[local-name()=$secondaryFramework]]])">
- <xsl:for-each select="msxsl:node-set($primaryMember)/*/element[@*[local-name()=$secondaryFramework]][1]">
- <xsl:variable name="inheritedSecondaryMember">
- <xsl:call-template name="IsMemberInherited"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="overrides">
- <span data="{$secondaryFramework}">
- <include item="secondaryFrameworkOverride">
- <parameter>
- <xsl:value-of select="$secondaryFramework"/>
- </parameter>
- <!--<parameter>
- <xsl:value-of select="@*[local-name()=$secondaryFramework]"/>
- </parameter>-->
- <parameter>
- <referenceLink target="{@api}"/>
- </parameter>
- </include>
- </span>
- </xsl:when>
- <xsl:when test="normalize-space($inheritedSecondaryMember)!=''">
- <span data="{$secondaryFramework}">
- <include item="secondaryFrameworkInherited">
- <parameter>
- <xsl:value-of select="$secondaryFramework"/>
- </parameter>
- <parameter>
- <xsl:value-of select="@*[local-name()=$secondaryFramework]"/>
- </parameter>
- <parameter>
- <xsl:apply-templates select="containers/type" mode="link" />
- </parameter>
- <parameter>
- <referenceLink target="{@api}"/>
- </parameter>
- </include>
- </span>
- </xsl:when>
- <xsl:otherwise>
- <span data="{$secondaryFramework}">
- <include item="secondaryFrameworkMember">
- <parameter>
- <xsl:value-of select="$secondaryFramework"/>
- </parameter>
- <parameter>
- <xsl:value-of select="@*[local-name()=$secondaryFramework]"/>
- </parameter>
- <parameter>
- <referenceLink target="{@api}"/>
- </parameter>
- </include>
- </span>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
-
- </td>
- </tr>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="derivedType">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'DerivedClasses'"/>
- <xsl:with-param name="title">
- <include item="derivedClasses" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <table class="members" id="memberList" frame="lhs" cellpadding="2">
- <tr>
- <th class="nameColumn">
- <include item="memberNameHeader"/>
- </th>
- <th class="descriptionColumn">
- <include item="memberDescriptionHeader" />
- </th>
- </tr>
- <xsl:apply-templates select="element" mode="derivedType">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </table>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="elements" mode="overload">
- <xsl:if test="count(element) > 0">
- <xsl:call-template name="memberlistSection">
- <xsl:with-param name="headerGroup" select="'overloadMembers'" />
- <xsl:with-param name="members" select="element" />
- <xsl:with-param name="showParameters" select="'true'" />
- </xsl:call-template>
- </xsl:if>
- <xsl:apply-templates select="element" mode="overloadSections">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="elements" mode="overloadSummary">
- <xsl:apply-templates select="element" mode="overloadSummary" >
- <xsl:sort select="apidata/@name"/>
- </xsl:apply-templates>
- </xsl:template>
-
- <xsl:template match="element" mode="overloadSummary">
- <xsl:call-template name="getOverloadSummary" />
- </xsl:template>
-
- <xsl:template match="element" mode="overloadSections">
- <xsl:call-template name="getOverloadSections" />
- </xsl:template>
-
- <xsl:template name="typeIcon">
- <xsl:param name="typeVisibility" />
-
- <xsl:variable name="typeSubgroup" select="apidata/@subgroup" />
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="concat($typeVisibility,$typeSubgroup,'.gif')" />
- </parameter>
- </includeAttribute>
- <includeAttribute name="title" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" />
- </img>
-
- </xsl:template>
-
- <xsl:template name="memberIcons">
- <xsl:param name="memberVisibility" />
- <xsl:param name="staticMember" />
- <xsl:param name="supportedOnXna"/>
- <xsl:param name="supportedOnCf"/>
-
- <xsl:variable name="memberSubgroup">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='constructor'">
- <xsl:text>method</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subgroup='method'">
- <xsl:choose>
- <xsl:when test="apidata/@subsubgroup='operator'">
- <xsl:text>operator</xsl:text>
- </xsl:when>
- <xsl:when test="apidata/@subsubgroup='extension'">
- <xsl:text>extension</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>method</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="apidata/@subgroup" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <!-- test for explicit interface implementations, which get the interface icon -->
- <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>pubinterface.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="ExplicitInterfaceAltText" />
- </img>
- </xsl:if>
-
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>
- <xsl:value-of select="concat($memberVisibility,$memberSubgroup,'.gif')" />
- </parameter>
- </includeAttribute>
- <xsl:choose>
- <xsl:when test="apidata/@subsubgroup">
- <includeAttribute name="title" item="{concat($memberVisibility,apidata/@subsubgroup,'AltText')}" />
- </xsl:when>
- <xsl:otherwise>
- <includeAttribute name="title" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" />
- </xsl:otherwise>
- </xsl:choose>
- </img>
-
- <xsl:if test="$staticMember!=''">
- <img>
- <includeAttribute name="src" item="iconPath">
- <parameter>static.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="staticAltText" />
- </img>
- </xsl:if>
-
- <xsl:if test="$supportedOnCf!=''">
- <img data="netcfw">
- <includeAttribute name="src" item="iconPath">
- <parameter>CFW.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="CompactFrameworkAltText" />
- </img>
- </xsl:if>
-
- <xsl:if test="$supportedOnXna!=''">
- <img data="xnafw">
- <includeAttribute name="src" item="iconPath">
- <parameter>xna.gif</parameter>
- </includeAttribute>
- <includeAttribute name="title" item="XNAFrameworkAltText" />
- </img>
- </xsl:if>
- </xsl:template>
-
- <!-- Assembly information -->
-
- <xsl:template name="requirementsInfo">
- <p/>
- <include item="requirementsNamespaceLayout" />
- <xsl:text> </xsl:text>
- <referenceLink target="{/document/reference/containers/namespace/@api}" />
- <br/>
- <xsl:call-template name="assembliesInfo"/>
-
- <!-- some apis display a XAML xmlns uri -->
- <xsl:call-template name="xamlXmlnsInfo"/>
- </xsl:template>
-
- <xsl:template name="assemblyNameAndModule">
- <xsl:param name="library" select="/document/reference/containers/library"/>
- <include item="assemblyNameAndModule">
- <parameter>
- <span data="assembly">
- <xsl:value-of select="$library/@assembly"/>
- </span>
- </parameter>
- <parameter>
- <xsl:value-of select="$library/@module"/>
- </parameter>
- <parameter>
- <xsl:choose>
- <xsl:when test="$library/@kind = 'DynamicallyLinkedLibrary'">
- <xsl:text>dll</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>exe</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </xsl:template>
-
- <xsl:template name="assembliesInfo">
- <xsl:choose>
- <xsl:when test="count(/document/reference/containers/library)>1">
- <include item="requirementsAssembliesLabel"/>
- <xsl:for-each select="/document/reference/containers/library">
- <xsl:text>  </xsl:text>
- <xsl:call-template name="assemblyNameAndModule">
- <xsl:with-param name="library" select="."/>
- </xsl:call-template>
- <br/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <include item="requirementsAssemblyLabel"/>
- <xsl:text> </xsl:text>
- <xsl:call-template name="assemblyNameAndModule"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Platform information -->
-
- <xsl:template match="platforms">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'platformsTitle'"/>
- <xsl:with-param name="title">
- <include item="platformsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <p>
- <xsl:for-each select="platform">
- <include item="{.}" /><xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if>
- </xsl:for-each>
- </p>
- <xsl:if test="/document/reference/versions/versions[@name='netfw' or @name='netcfw']//version">
- <p>
- <include item="SystemRequirementsLinkBoilerplate"/>
- </p>
- </xsl:if>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Version information -->
-
- <xsl:template match="versions">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'versionsTitle'"/>
- <xsl:with-param name="title">
- <include item="versionsTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:call-template name="processVersions" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="processVersions">
- <xsl:param name="frameworkGroup" select="true()"/>
- <xsl:choose>
- <xsl:when test="versions and $frameworkGroup">
- <xsl:for-each select="versions">
- <!-- $platformFilterExcluded is based on platform filtering information -->
- <xsl:variable name="platformFilterExcluded" select="boolean(/document/reference/platforms and ( (@name='netcfw' and not(/document/reference/platforms/platform[.='PocketPC']) and not(/document/reference/platforms/platform[.='SmartPhone']) and not(/document/reference/platforms/platform[.='WindowsCE']) ) or (@name='xnafw' and not(/document/reference/platforms/platform[.='Xbox360']) ) ) )" />
- <xsl:if test="not($platformFilterExcluded) and count(.//version) > 0">
- <h4 class ="subHeading">
- <include item="{@name}" />
- </h4>
- <xsl:call-template name="processVersions">
- <xsl:with-param name="frameworkGroup" select="false()"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- show the versions in which the api is supported, if any -->
- <xsl:variable name="supportedCount" select="count(version[not(@obsolete)] | versions[version[not(@obsolete)]])"/>
- <xsl:if test="$supportedCount > 0">
- <include item="supportedIn_{$supportedCount}">
- <xsl:for-each select="version[not(@obsolete)] | versions[version[not(@obsolete)]]">
- <xsl:variable name="versionName">
- <xsl:choose>
- <!-- A versions[version] node at this level is for releases that had subsequent service packs.
- For example, versions for .NET 3.0 has version nodes for 3.0 and 3.0 SP1.
- We show only the first node, which is the one in which the api was first released,
- that is, we show 3.0 SP1 only if the api was introduced in SP1. -->
- <xsl:when test="local-name()='versions'">
- <xsl:value-of select="version[not(@obsolete)][not(preceding-sibling::version[not(@obsolete)])]/@name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <parameter>
- <include item="{$versionName}" />
- </parameter>
- </xsl:for-each>
- </include>
- <br/>
- </xsl:if>
- <!-- show the versions in which the api is obsolete with a compiler warning, if any -->
- <xsl:for-each select=".//version[@obsolete='warning']">
- <include item="obsoleteWarning">
- <parameter>
- <include item="{@name}" />
- </parameter>
- </include>
- <br/>
- </xsl:for-each>
- <!-- show the versions in which the api is obsolete and does not compile, if any -->
- <xsl:for-each select=".//version[@obsolete='error']">
- <xsl:if test="position()=last()">
- <include item="obsoleteError">
- <parameter>
- <include item="{@name}" />
- </parameter>
- </include>
- <br/>
- </xsl:if>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Inheritance hierarchy -->
-
- <xsl:template match="family">
-
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'family'"/>
- <xsl:with-param name="title">
- <include item="familyTitle" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:variable name="ancestorCount" select="count(ancestors/*)" />
- <xsl:variable name="childCount" select="count(descendents/*)" />
-
- <xsl:for-each select="ancestors/type">
- <xsl:sort select="position()" data-type="number" order="descending" />
-
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="position()" />
- </xsl:call-template>
-
- <xsl:apply-templates select="self::type" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
-
- <br/>
- </xsl:for-each>
-
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 1" />
- </xsl:call-template>
-
- <referenceLink target="{$key}" qualified="true"/>
- <br/>
-
- <xsl:choose>
-
- <xsl:when test="descendents/@derivedTypes">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 2" />
- </xsl:call-template>
- <referenceLink target="{descendents/@derivedTypes}" qualified="true">
- <include item="derivedClasses"/>
- </referenceLink>
- </xsl:when>
- <xsl:otherwise>
-
- <xsl:for-each select="descendents/type">
- <xsl:call-template name="indent">
- <xsl:with-param name="count" select="$ancestorCount + 2" />
- </xsl:call-template>
-
- <xsl:apply-templates select="self::type" mode="link">
- <xsl:with-param name="qualified" select="true()" />
- </xsl:apply-templates>
-
- <br/>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
-
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="createTableEntries">
- <xsl:param name="count" />
- <xsl:if test="number($count) > 0">
- <td> </td>
- <xsl:call-template name="createTableEntries">
- <xsl:with-param name="count" select="number($count)-1" />
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
-
- <!--<xsl:template name="shortName">
- <xsl:choose>
- <xsl:when test="$api-subgroup='constructor'">
- <xsl:value-of select="/document/reference/containers/type/apidata/@name" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>-->
-
-
- <!-- decorated names -->
-
- <xsl:template name="shortNameDecorated">
- <xsl:choose>
- <!-- type overview pages and member list pages get the type name -->
- <xsl:when test="($topic-group='api' and $api-group='type') or ($topic-group='list' and not($topic-subgroup='overload'))">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- constructors and member list pages also use the type name -->
- <xsl:when test="($topic-group='api' and $api-subgroup='constructor') or ($topic-subgroup='overload' and $api-subgroup='constructor')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- eii members -->
- <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- <span class="languageSpecificText">
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <span class="nu">.</span>
- </span>
- <xsl:for-each select="/document/reference/implements/member">
- <xsl:for-each select="type">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- <span class="languageSpecificText">
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <span class="nu">.</span>
- </span>
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="decorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- normal member pages use the qualified member name -->
- <xsl:when test="($topic-group='api' and $api-group='member') or ($topic-subgroup='overload' and $api-group='member')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNameDecorated" />
- </xsl:for-each>
- <span class="languageSpecificText">
- <span class="cs">.</span>
- <span class="vb">.</span>
- <span class="cpp">::</span>
- <span class="nu">.</span>
- </span>
- <xsl:for-each select="/document/reference[1]">
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="decorated" />
- </xsl:for-each>
- </xsl:when>
- <!-- namespace (and any other) topics just use the name -->
- <xsl:when test="/document/reference/apidata/@name = ''">
- <include item="defaultNamespace" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- plain names -->
-
- <xsl:template name="shortNamePlain">
- <xsl:param name="qualifyMembers" select="false()" />
- <xsl:choose>
- <!-- type overview pages and member list pages get the type name -->
- <xsl:when test="($topic-group='api' and $api-group='type') or ($topic-group='list' and not($topic-subgroup='overload'))">
- <xsl:for-each select="/document/reference[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- </xsl:when>
- <!-- constructors and member list pages also use the type name -->
- <xsl:when test="($topic-group='api' and $api-subgroup='constructor') or ($topic-subgroup='overload' and $api-subgroup='constructor')">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- </xsl:when>
- <!-- member pages use the member name, qualified if the qualified flag is set -->
- <xsl:when test="($topic-group='api' and $api-group='member') or ($topic-subgroup='overload' and $api-group='member')">
- <!-- check for qualify flag and qualify if it is set -->
- <xsl:if test="$qualifyMembers">
- <xsl:for-each select="/document/reference/containers/type[1]">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- </xsl:if>
- <xsl:choose>
- <!-- EII names are interfaceName.interfaceMemberName, not memberName -->
- <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]">
- <xsl:for-each select="/document/reference/implements/member">
- <xsl:for-each select="type">
- <xsl:call-template name="typeNamePlain" />
- </xsl:for-each>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="plain" />
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <!-- but other members just use the name -->
- <xsl:for-each select="/document/reference[1]">
- <xsl:value-of select="apidata/@name" />
- <xsl:apply-templates select="templates" mode="plain" />
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <!-- namespace, member (and any other) topics just use the name -->
- <xsl:when test="/document/reference/apidata/@name = ''">
- <include item="defaultNamespace" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/document/reference/apidata/@name" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="../../shared/transforms/utilities_reference.xsl"/> + + <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" /> + <!-- <xsl:output method="xml" omit-xml-declaration="yes" encoding="utf-8" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" doctype-system="http://www.w3.org/TR/html4/loose.dtd" /> --> + + <!-- key parameter is the api identifier string --> + <xsl:param name="key" /> + <xsl:param name="metadata" value="false" /> + <xsl:param name="languages">false</xsl:param> + + <xsl:include href="utilities_metadata.xsl" /> + <xsl:include href="xamlSyntax.xsl"/> + + <xsl:template match="/"> + <html> + <head> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/> + <META NAME="save" CONTENT="history"/> + <title><xsl:call-template name="topicTitlePlain"/></title> + <xsl:call-template name="insertStylesheets" /> + <xsl:call-template name="insertScripts" /> + <xsl:call-template name="insertFilename" /> + <xsl:call-template name="insertMetadata" /> + </head> + <body> + + <xsl:call-template name="upperBodyStuff"/> + <xsl:call-template name="main"/> + </body> + </html> + </xsl:template> + + <!-- useful global variables --> + + <xsl:variable name="group"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@group" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@group" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="subgroup"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@subgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:variable name="subsubgroup"> + <xsl:choose> + <xsl:when test="/document/reference/topicdata/@group = 'api'"> + <xsl:value-of select="/document/reference/apidata/@subsubgroup" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/topicdata/@subsubgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!--<xsl:variable name="pseudo" select="boolean(/document/reference/topicdata[@pseudo='true'])"/>--> + + <xsl:variable name="namespaceName" select="/document/reference/containers/namespace/apidata/@name" /> + + <!-- document head --> + + <xsl:template name="insertStylesheets"> + <link rel="stylesheet" type="text/css" href="../styles/presentation.css" /> + <!-- make mshelp links work --> + <link rel="stylesheet" type="text/css" href="ms-help://Hx/HxRuntime/HxLink.css" /> + <!--<link rel="stylesheet" type="text/css" href="ms-help://Dx/DxRuntime/DxLink.css" />--> + </xsl:template> + + <xsl:template name="insertScripts"> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>EventUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>SplitScreen.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>Dropdown.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>script_manifold.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>script_feedBack.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>CheckboxMenu.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + <script type="text/javascript"> + <includeAttribute name="src" item="scriptPath"><parameter>CommonUtilities.js</parameter></includeAttribute> + <xsl:text> </xsl:text> + </script> + </xsl:template> + + <xsl:template match="parameters"> + <div id="parameters"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="parametersTitle"/> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="parameter"> + <xsl:variable name="paramName" select="@name"/> + <dl paramName="{$paramName}"> + <dt> + <span class="parameter"> + <xsl:value-of select="$paramName"/> + </span> + </dt> + <dd> + <include item="typeLink"> + <parameter> + <xsl:apply-templates select="*[1]" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + </parameter> + </include> + <br /> + <xsl:call-template name="getParameterDescription"> + <xsl:with-param name="name" select="@name" /> + </xsl:call-template> + </dd> + </dl> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </div> + </xsl:template> + + <xsl:template match="implements"> + <xsl:if test="member"> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="implementsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:for-each select="member"> + <referenceLink target="{@api}" qualified="true" /> + <br /> + </xsl:for-each> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="element" mode="root"> + <tr> + <td> + <xsl:choose> + <xsl:when test="apidata/@name = ''"> + <referenceLink target="{@api}" qualified="false"> + <include item="defaultNamespace" /> + </referenceLink> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="namespace"> + <xsl:variable name="typeVisibility"> + <xsl:choose> + <xsl:when test="typedata/@visibility='family' or typedata/@visibility='family or assembly' or typedata/@visibility='assembly'">prot</xsl:when> + <xsl:when test="typedata/@visibility='private'">priv</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <tr> + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:text>; public</xsl:text> + </xsl:attribute> + <td> + <xsl:call-template name="typeIcon"> + <xsl:with-param name="typeVisibility" select="$typeVisibility" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="createReferenceLink"> + <xsl:with-param name="id" select="@api" /> + </xsl:call-template> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="enumeration"> + <xsl:variable name="supportedOnXna"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:variable> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <tr> + <td> + <!-- platform icons --> + <xsl:if test="normalize-space($supportedOnCf)!=''"> + <img data="netcfw"> + <includeAttribute name="src" item="iconPath"> + <parameter>CFW.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="CompactFrameworkAltText" /> + </img> + </xsl:if> + + <xsl:if test="normalize-space($supportedOnXna)!=''"> + <img data="xnafw"> + <includeAttribute name="src" item="iconPath"> + <parameter>xna.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="XNAFrameworkAltText" /> + </img> + </xsl:if> + </td> + <xsl:variable name="id" select="@api" /> + <td target="{$id}"> + <span class="selflink"><xsl:value-of select="apidata/@name"/></span> + </td> + <td> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="derivedType"> + <tr> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + </td> + </tr> + </xsl:template> + + <xsl:template match="element" mode="overload"> + <xsl:variable name="supportedOnXna"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:variable> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:variable name="staticMember"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:variable> + <xsl:variable name="inheritedMember"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:variable> + <xsl:variable name="protectedMember"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:variable> + <xsl:variable name="privateMember"> + <xsl:call-template name="IsMemberPrivate"/> + </xsl:variable> + + <tr> + <xsl:if test="normalize-space($inheritedMember)!=''"> + <xsl:attribute name="name">inheritedMember</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($protectedMember)!=''"> + <xsl:attribute name="protected">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnXna)=''"> + <xsl:attribute name="notSupportedOnXna">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnCf)=''"> + <xsl:attribute name="notSupportedOn">netcf</xsl:attribute> + </xsl:if> + + <xsl:attribute name="data"> + <xsl:value-of select="apidata/@subgroup" /> + <xsl:choose> + <xsl:when test="memberdata/@visibility='public'"> + <xsl:text>; public</xsl:text> + </xsl:when> + <xsl:when test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <xsl:text>; protected</xsl:text> + </xsl:when> + <xsl:when test="memberdata/@visibility='private' and not(proceduredata[@virtual = 'true'])"> + <xsl:text>; private</xsl:text> + </xsl:when> + <!-- NOTE: EII members (private-virtual) fall through to this xsl:otherwise block --> + <xsl:otherwise> + <xsl:text>; public</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="memberdata/@static = 'true'"> + <xsl:text>; static</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; instance</xsl:text> + </xsl:otherwise> + </xsl:choose> + <xsl:choose> + <xsl:when test="normalize-space($inheritedMember)=''"> + <xsl:text>; declared</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>; inherited</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + + <td> + <!-- item icons --> + <xsl:call-template name="memberIcons"> + <xsl:with-param name="memberVisibility"> + <xsl:choose> + <xsl:when test="memberdata/@visibility='family' or memberdata/@visibility='family or assembly' or memberdata/@visibility='assembly'">prot</xsl:when> + <xsl:when test="memberdata/@visibility='private'">priv</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="staticMember" select="normalize-space($staticMember)" /> + <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/> + <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/> + </xsl:call-template> + </td> + <td> + <!-- item name --> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <!-- item description --> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="normalize-space($inheritedMember)!=''"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:apply-templates select="overrides/member" mode="link" /> + </parameter> + </include> + </xsl:when> + </xsl:choose> + + </td> + </tr> + </xsl:template> + + <xsl:template name="insertFilename"> + <meta name="container"> + <xsl:attribute name="content"> + <xsl:choose> + <xsl:when test="normalize-space(/document/reference/containers/library/@assembly)"> + <xsl:value-of select="normalize-space(/document/reference/containers/library/@assembly)"/> + </xsl:when> + <xsl:otherwise> + <xsl:text>Namespaces</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </meta> + <meta name="file" content="{/document/reference/file/@name}" /> + <meta name="guid"> + <xsl:attribute name="content"> + <xsl:value-of select="/document/reference/file/@name" /> + </xsl:attribute> + </meta> + </xsl:template> + + <!-- writing templates --> + + <!--<xsl:template name="csTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text><</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>></xsl:text> + </xsl:template> + + <xsl:template name="csTemplatesInIndex" > + <xsl:text>%3C</xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:text>%2C </xsl:text> + </xsl:if> + </xsl:for-each> + <xsl:text>%3E</xsl:text> + </xsl:template> + + <xsl:template name="vbTemplates"> + <xsl:param name="seperator" select="string(',')" /> + <xsl:text>(Of </xsl:text> + <xsl:for-each select="template"> + <xsl:value-of select="@name" /> + <xsl:if test="not(position()=last())"> + <xsl:value-of select="$seperator" /> + </xsl:if> + </xsl:for-each> + <xsl:text>)</xsl:text> + </xsl:template> + + <xsl:template name="typeTitle"> + <xsl:if test="containers/container[@type]"> + <xsl:for-each select="containers/container[@type]"> + <xsl:call-template name="typeTitle" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:value-of select="apidata/@name" /> + <xsl:if test="count(templates/template) > 0"> + <xsl:for-each select="templates"><xsl:call-template name="csTemplates" /></xsl:for-each> + </xsl:if> + </xsl:template>--> + + <!-- document body --> + + <!-- control window --> + + <!-- + <xsl:template name="control"> + <div id="control"> + <span class="topicTitle"><xsl:call-template name="topicTitleDecorated" /></span><br/> + </div> + </xsl:template> + --> + + <!-- the plain-text title --> + <!-- used in TOC and on topic window bar --> + + <xsl:template name="topicTitlePlain"> + <xsl:param name="qualifyMembers" select="false()" /> + <include> + <xsl:attribute name="item"> + <xsl:choose> + <!-- api topic titles --> + <xsl:when test="$topic-group='api'"> + <!-- use generic titles for generics --> + <!-- we don't do this any longer, since we now show generic parameters in the neutral syntax --> + <!--<xsl:if test="boolean(/document/reference/templates)"> + <xsl:text>generic_</xsl:text> + </xsl:if>--> + <!-- the subsubgroup, subgroup, or group determines the title --> + <xsl:choose> + <xsl:when test="string($api-subsubgroup)"> + <xsl:value-of select="$api-subsubgroup" /> + </xsl:when> + <xsl:when test="string($api-subgroup)"> + <xsl:value-of select="$api-subgroup"/> + </xsl:when> + <xsl:when test="string($api-group)"> + <xsl:value-of select="$api-group"/> + </xsl:when> + </xsl:choose> + </xsl:when> + <!-- overload topic titles --> + <xsl:when test="$topic-subgroup='overload'"> + <!-- the api subgroup (e.g. "property") determines the title; do we want to use the subsubgoup name when it is available? --> + <xsl:value-of select="$api-subgroup"/> + </xsl:when> + <!-- list topic titles --> + <xsl:when test="$topic-group='list'"> + <!-- the topic subgroup (e.g. "methods") determines the title --> + <xsl:value-of select="$topic-subgroup" /> + </xsl:when> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNamePlain"> + <xsl:with-param name="qualifyMembers" select="$qualifyMembers" /> + </xsl:call-template> + </parameter> + <parameter> + <!-- show parameters only for overloaded members --> + <xsl:if test="document/reference/memberdata/@overload" > + <xsl:for-each select="/document/reference"> + <xsl:call-template name="parameterTypesPlain" /> + </xsl:for-each> + </xsl:if> + </parameter> + </include> + </xsl:template> + + <!-- the language-variant, marked-up topic title --> + <!-- used as the big title in the non-scrolling region --> + + <xsl:template name="topicTitleDecorated"> + <!--<xsl:param name="titleType" />--> + <include> + <xsl:attribute name="item"> + <!--<xsl:choose> + --><!-- what is this for?! --><!-- + --><!--<xsl:when test="$titleType = 'tocTitle' and $group='namespace'"> + <xsl:text>tocTitle</xsl:text> + </xsl:when>--><!-- + <xsl:otherwise>--> + <!-- we don't call out generics will special titles anymore, because their type parameters are shown + in the language neutral syntax --> + <!--<xsl:if test="boolean(/document/reference/templates) and not($group='list')"> + <xsl:text>generic_</xsl:text> + </xsl:if>--> + <xsl:choose> + <!-- api topic titles --> + <xsl:when test="$topic-group='api'"> + <xsl:choose> + <xsl:when test="string($api-subsubgroup)"> + <xsl:value-of select="$api-subsubgroup" /> + </xsl:when> + <xsl:when test="string($api-subgroup)"> + <xsl:value-of select="$api-subgroup" /> + </xsl:when> + <xsl:when test="string($api-group)"> + <xsl:value-of select="$api-group" /> + </xsl:when> + </xsl:choose> + </xsl:when> + <!-- overload topic titles --> + <xsl:when test="$topic-subgroup='overload'"> + <!-- the api subgroup (e.g. "property") determines the title; do we want to use the subsubgoup name when it is available? --> + <xsl:value-of select="$api-subgroup"/> + </xsl:when> + <!-- list topic titles --> + <xsl:when test="$topic-group='list'"> + <!-- the topic subgroup (e.g. "methods") determines the title --> + <xsl:value-of select="$topic-subgroup" /> + </xsl:when> + </xsl:choose> + <xsl:text>TopicTitle</xsl:text> + <!--</xsl:otherwise> + </xsl:choose>--> + </xsl:attribute> + <parameter> + <xsl:call-template name="shortNameDecorated" /> + </parameter> + <parameter> + <!-- show parameters only from overloaded members --> + <xsl:if test="document/reference/memberdata/@overload" > + <xsl:for-each select="/document/reference"> + <xsl:call-template name="parameterTypesDecorated" /> + </xsl:for-each> + </xsl:if> + </parameter> + </include> + </xsl:template> + + + <!-- Title in TOC --> + + <!-- Index entry --> + + <!-- main window --> + + <xsl:template name="main"> + <div id="mainSection"> + + <div id="mainBody"> + <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"> + <include item="header" /> + </div> + + <!--<xsl:call-template name="head" />--> + <xsl:call-template name="body" /> + </div> + <xsl:call-template name="foot" /> + </div> + + </xsl:template> + + <!--<xsl:template name="head"> + <include item="header" /> + </xsl:template>--> + + <xsl:template name="syntaxBlocks"> + + <xsl:for-each select="/document/syntax/div[@codeLanguage]"> + <xsl:choose> + <xsl:when test="@codeLanguage='VisualBasic'"> + <xsl:call-template name="languageSyntaxBlock"> + <xsl:with-param name="language">VisualBasicDeclaration</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="@codeLanguage='JSharp'"> + <xsl:if test="not(/document/reference/versions) or boolean(/document/reference/versions/versions[@name='netfw']//version[not(@name='netfw35')])"> + <xsl:call-template name="languageSyntaxBlock" /> + </xsl:if> + </xsl:when> + <xsl:when test="@codeLanguage='XAML'"> + <xsl:call-template name="XamlSyntaxBlock"/> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="languageSyntaxBlock" /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <xsl:template name="languageSyntaxBlock"> + <xsl:param name="language" select="@codeLanguage"/> + <span codeLanguage="{$language}"> + <table> + <tr> + <th> + <include item="{$language}" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/><xsl:text/></pre> + </td> + </tr> + </table> + </span> + </xsl:template> + + <xsl:template match="elements" mode="root"> + <xsl:if test="count(element) > 0"> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'namespaces'"/> + <xsl:with-param name="title"><include item="namespacesTitle" /></xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList" frame="lhs" cellpadding="2"> + <tr> + <th class="nameColumn"><include item="namespaceNameHeader"/></th> + <th class="descriptionColumn"><include item="namespaceDescriptionHeader" /></th> + </tr> + <xsl:apply-templates select="element" mode="root"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template name="namespaceSection"> + <xsl:param name="listSubgroup" /> + <xsl:variable name="header" select="concat($listSubgroup, 'TypesFilterLabel')"/> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="$listSubgroup"/> + <xsl:with-param name="title"> + <include item="{$header}" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="namespaceList"> + <xsl:with-param name="listSubgroup" select="$listSubgroup" /> + </xsl:call-template> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template match="elements" mode="namespace"> + + <xsl:if test="element/apidata/@subgroup = 'class'"> + <xsl:call-template name="namespaceSection"> + <xsl:with-param name="listSubgroup" select="'class'" /> + </xsl:call-template> + </xsl:if> + + <xsl:if test="element/apidata/@subgroup = 'structure'"> + <xsl:call-template name="namespaceSection"> + <xsl:with-param name="listSubgroup" select="'structure'" /> + </xsl:call-template> + </xsl:if> + + <xsl:if test="element/apidata/@subgroup = 'interface'"> + <xsl:call-template name="namespaceSection"> + <xsl:with-param name="listSubgroup" select="'interface'" /> + </xsl:call-template> + </xsl:if> + + <xsl:if test="element/apidata/@subgroup = 'delegate'"> + <xsl:call-template name="namespaceSection"> + <xsl:with-param name="listSubgroup" select="'delegate'" /> + </xsl:call-template> + </xsl:if> + + <xsl:if test="element/apidata/@subgroup = 'enumeration'"> + <xsl:call-template name="namespaceSection"> + <xsl:with-param name="listSubgroup" select="'enumeration'" /> + </xsl:call-template> + </xsl:if> + + </xsl:template> + + <xsl:template name="namespaceList"> + <xsl:param name="listSubgroup" /> + + <table id="typeList" class="members" frame="lhs" cellpadding="2"> + <col width="10%"/> + <tr> + <th class="iconColumn"> +   + </th> + <th class="nameColumn"> + <include item="{$listSubgroup}NameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element[apidata/@subgroup=$listSubgroup]" mode="namespace"> + <xsl:sort select="@api" /> + </xsl:apply-templates> + </table> + + </xsl:template> + + <xsl:template match="elements" mode="enumeration"> + <div id="enumerationSection"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'members'"/> + <xsl:with-param name="title"> + <include item="enumMembersTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList" frame="lhs" cellpadding="2"> + <col width="10%"/> + <tr> + <th class="iconColumn"></th> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="enumeration"/> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </div> + </xsl:template> + + <xsl:template match="element" mode="members"> + <xsl:param name="subgroup"/> + <xsl:if test="memberdata[@visibility='public'] and apidata[@subgroup=$subgroup]"> + public; + </xsl:if> + <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly'] and apidata[@subgroup=$subgroup]"> + protected; + </xsl:if> + <xsl:if test="memberdata[@visibility='private'] and apidata[@subgroup=$subgroup] and not(proceduredata[@virtual = 'true'])"> + private; + </xsl:if> + <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + explicit; + </xsl:if> + </xsl:template> + + <xsl:template name="memberIntroBoilerplate"> + <xsl:if test="/document/reference/elements/element/memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <!-- if there are exposed members, show a boilerplate intro p --> + <xsl:variable name="introTextItemId"> + <xsl:choose> + <xsl:when test="/document/reference/containers/type/templates">genericExposedMembersTableText</xsl:when> + <xsl:otherwise>exposedMembersTableText</xsl:otherwise> + </xsl:choose> + </xsl:variable> + <p> + <include item="{$introTextItemId}"> + <parameter> + <referenceLink target="{$typeId}" /> + </parameter> + <parameter> + <xsl:value-of select="$subgroup"/><xsl:text>Subgroup</xsl:text> + </parameter> + </include> + </p> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="member"> + + <xsl:call-template name="memberIntro" /> + + <xsl:if test="element/apidata[@subgroup='constructor']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup" select="'constructor'" /> + <xsl:with-param name="members" select="element[apidata[@subgroup='constructor']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- method table --> + <xsl:if test="element/apidata[@subgroup='method' and not(@subsubgroup)]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">method</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subgroup='method' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- operator table --> + <xsl:if test="element/apidata[@subsubgroup='operator']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">operator</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subsubgroup='operator']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- extension method table --> + <xsl:if test="element/apidata[@subsubgroup='extension']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">extensionMethod</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subsubgroup='extension']]" /> + </xsl:call-template> + </xsl:if> + + <!-- field table --> + <xsl:if test="element/apidata[@subgroup='field']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">field</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subgroup='field']][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- property table --> + <xsl:if test="element/apidata[@subgroup='property' and not(@subsubgroup)]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">property</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subgroup='property' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- attached property table --> + <xsl:if test="element/apidata[@subsubgroup='attachedProperty']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">attachedProperty</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subsubgroup='attachedProperty']]" /> + </xsl:call-template> + </xsl:if> + + <!-- event table --> + <xsl:if test="element/apidata[@subgroup='event' and not(@subsubgroup)]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">event</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subgroup='event' and not(@subsubgroup)]][.//memberdata[@visibility='public' or @visibility='family' or @visibility='family or assembly' or @visibility='assembly'] or (.//memberdata[@visibility='private'] and not(.//proceduredata[@virtual = 'true']))]" /> + </xsl:call-template> + </xsl:if> + + <!-- attached event table --> + <xsl:if test="element/apidata[@subsubgroup='attachedEvent']"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">attachedEvent</xsl:with-param> + <xsl:with-param name="members" select="element[apidata[@subsubgroup='attachedEvent']]" /> + </xsl:call-template> + </xsl:if> + + <!-- eii table --> + <xsl:if test="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup">ExplicitInterfaceImplementation</xsl:with-param> + <xsl:with-param name="members" select="element[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]" /> + </xsl:call-template> + </xsl:if> + + </xsl:template> + + <xsl:template name="memberlistSection"> + <xsl:param name="members"/> + <xsl:param name="headerGroup" /> + <xsl:param name="showParameters" select="'false'" /> + + <xsl:variable name="header"> + <xsl:value-of select="concat($headerGroup, 'Table')"/> + </xsl:variable> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="$header" /> + <xsl:with-param name="title"> + <include item="{$header}" /> + </xsl:with-param> + <xsl:with-param name="toplink" select="true()"/> + <xsl:with-param name="content"> + <table id="memberList" class="members" frame="lhs" cellpadding="2"> + <col width="10%"/> + <tr> + <th class="iconColumn"> +   + </th> + <th class="nameColumn"> + <include item="typeNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="typeDescriptionHeader" /> + </th> + </tr> + + <!-- add a row for each member of the current subgroup-visibility --> + <xsl:apply-templates select="$members" mode="memberlistRow"> + <xsl:with-param name="showParameters" select="$showParameters" /> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </xsl:with-param> + </xsl:call-template> + + </xsl:template> + + <xsl:template match="elements" mode="type"> + + </xsl:template> + + <xsl:template name="IsMemberUnsupportedOnNetfw"> + <xsl:if test="boolean(not(@netfw) and not(element/@netfw))"> + <xsl:text>unsupported</xsl:text> + </xsl:if> + </xsl:template> + + <!-- for testing CF and XNA support, check the signature variations of @signatureset elements --> + <!-- for testing inherited/protected/etc, do not check the @signatureset variations; just go with the primary .NET Framework value --> + <xsl:template name="IsMemberSupportedOnXna"> + <xsl:choose> + <xsl:when test="element"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="platformFilterExcludesXna" select="boolean(platforms and not(platforms/platform[.='Xbox360']))" /> + <xsl:if test="boolean(not($platformFilterExcludesXna) and (@xnafw or element/@xnafw))"> + <xsl:text>supported</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberSupportedOnCf"> + <xsl:choose> + <xsl:when test="element"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="platformFilterExcludesCF" select="boolean( platforms and not(platforms[platform[.='PocketPC'] or platform[.='SmartPhone'] or platform[.='WindowsCE']]) )" /> + <xsl:if test="boolean(not($platformFilterExcludesCF) and (@netcfw or element/@netcfw))"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberStatic"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:for-each> + </xsl:when> + <xsl:when test="apidata[@subsubgroup='attachedProperty' or @subsubgroup='attachedEvent']"/> + <xsl:otherwise> + <xsl:if test="memberdata/@static='true'"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- returns a non-empty string if the element is inherited, or for overloads if any of the overloads is inherited --> + <xsl:template name="IsMemberInherited"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="containers/type[@api!=$typeId]"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- returns a non-empty string if the element is declared, or for overloads if any of the overloads is declared --> + <xsl:template name="IsMemberDeclared"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberDeclared"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="containers/type[@api=$typeId]"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberPublic"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberPublic"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="memberdata[@visibility='public']"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberProtected"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="memberdata[@visibility='family' or @visibility='family or assembly' or @visibility='assembly']"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="IsMemberPrivate"> + <xsl:choose> + <xsl:when test="element and not(@signatureset)"> + <xsl:for-each select="element"> + <xsl:call-template name="IsMemberPrivate"/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:if test="memberdata[@visibility='private'] and not(proceduredata[@virtual = 'true'])"> + <xsl:text>yes</xsl:text> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="element" mode="memberlistRow"> + <xsl:param name="showParameters" select="'false'" /> + <xsl:variable name="notsupportedOnNetfw"> + <xsl:call-template name="IsMemberUnsupportedOnNetfw"/> + </xsl:variable> + <xsl:variable name="supportedOnXna"> + <xsl:call-template name="IsMemberSupportedOnXna"/> + </xsl:variable> + <xsl:variable name="supportedOnCf"> + <xsl:call-template name="IsMemberSupportedOnCf"/> + </xsl:variable> + <xsl:variable name="staticMember"> + <xsl:call-template name="IsMemberStatic"/> + </xsl:variable> + <xsl:variable name="inheritedMember"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:variable> + <xsl:variable name="declaredMember"> + <xsl:call-template name="IsMemberDeclared"/> + </xsl:variable> + <xsl:variable name="protectedMember"> + <xsl:call-template name="IsMemberProtected"/> + </xsl:variable> + <xsl:variable name="publicMember"> + <xsl:call-template name="IsMemberPublic"/> + </xsl:variable> + <xsl:variable name="privateMember"> + <xsl:call-template name="IsMemberPrivate"/> + </xsl:variable> + <!-- do not show non-static members of static types --> + <xsl:if test=".//memberdata/@static='true' or not(/document/reference/typedata[@abstract='true' and @sealed='true'])"> + <tr> + <xsl:attribute name="data"> + <!-- it's possible to include both public and protected for overload topics --> + <xsl:if test="normalize-space($publicMember)!=''"> + <xsl:text>public;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($protectedMember)!=''"> + <xsl:text>protected;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($privateMember)!=''"> + <xsl:text>private;</xsl:text> + </xsl:if> + <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + <xsl:text>explicit;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($staticMember)!=''"> + <xsl:text>static;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($declaredMember)!=''"> + <xsl:text>declared;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($inheritedMember)!=''"> + <xsl:text>inherited;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($supportedOnCf)!=''"> + <xsl:text>netcfw;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($supportedOnXna)!=''"> + <xsl:text>xnafw;</xsl:text> + </xsl:if> + <xsl:if test="normalize-space($notsupportedOnNetfw)!=''"> + <xsl:text>notNetfw;</xsl:text> + </xsl:if> + </xsl:attribute> +<!-- + <xsl:if test="normalize-space($declaredMember)=''"> + <xsl:attribute name="name">inheritedMember</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($protectedMember)!=''"> + <xsl:attribute name="protected">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($notsupportedOnNetfw)!=''"> + <xsl:attribute name="notsupportedOnNetfw">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnXna)=''"> + <xsl:attribute name="notSupportedOnXna">true</xsl:attribute> + </xsl:if> + <xsl:if test="normalize-space($supportedOnCf)=''"> + <xsl:attribute name="notSupportedOn">netcf</xsl:attribute> + </xsl:if> +--> + <td> + <xsl:call-template name="memberIcons"> + <xsl:with-param name="memberVisibility"> + <xsl:choose> + <xsl:when test="normalize-space($publicMember)!=''">pub</xsl:when> + <xsl:when test="normalize-space($protectedMember)!=''">prot</xsl:when> + <xsl:when test="memberdata/@visibility='private'">priv</xsl:when> + <xsl:otherwise>pub</xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="staticMember" select="normalize-space($staticMember)" /> + <xsl:with-param name="supportedOnXna" select="normalize-space($supportedOnXna)"/> + <xsl:with-param name="supportedOnCf" select="normalize-space($supportedOnCf)"/> + </xsl:call-template> + </td> + <td> + <xsl:choose> + <xsl:when test="@display-api"> + <referenceLink target="{@api}" display-target="{@display-api}" show-parameters="{$showParameters}" /> + </xsl:when> + <xsl:otherwise> + <referenceLink target="{@api}" show-parameters="{$showParameters}" /> + </xsl:otherwise> + </xsl:choose> + </td> + <td> + <xsl:call-template name="getInternalOnlyDescription" /> + <xsl:if test="attributes/attribute/type[@api='T:System.ObsoleteAttribute']"> + <xsl:text> </xsl:text> + <include item="obsoleteRed" /> + </xsl:if> + <xsl:if test="topicdata[@subgroup='overload']"> + <include item="Overloaded"/> + <xsl:text> </xsl:text> + </xsl:if> + <xsl:apply-templates select="element" mode="overloadSummary" /> + <xsl:call-template name="getElementDescription" /> + <xsl:choose> + <xsl:when test="not(topicdata[@subgroup='overload'])"> + <xsl:choose> + <xsl:when test="@source='extension' and containers/type"> + <xsl:text> </xsl:text> + <include item="definedBy"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + </parameter> + </include> + </xsl:when> + <xsl:when test="normalize-space($inheritedMember)!=''"> + <xsl:text> </xsl:text> + <include item="inheritedFrom"> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + </parameter> + </include> + </xsl:when> + <xsl:when test="overrides/member"> + <xsl:text> </xsl:text> + <include item="overridesMember"> + <parameter> + <xsl:apply-templates select="overrides/member" mode="link" /> + </parameter> + </include> + </xsl:when> + </xsl:choose> + </xsl:when> + </xsl:choose> + + <!-- add boilerplate for other members in the sig set --> + <xsl:if test="@signatureset and element"> + <xsl:variable name="primaryMember"> + <xsl:copy-of select="."/> + </xsl:variable> + <xsl:variable name="primaryFramework" select="versions/versions[1]/@name"/> + <xsl:for-each select="versions/versions[@name!=$primaryFramework]"> + <xsl:variable name="secondaryFramework" select="@name"/> + <xsl:if test="(msxsl:node-set($primaryMember)/*[not(@*[local-name()=$secondaryFramework])]) and (msxsl:node-set($primaryMember)/*[element[@*[local-name()=$secondaryFramework]]])"> + <xsl:for-each select="msxsl:node-set($primaryMember)/*/element[@*[local-name()=$secondaryFramework]][1]"> + <xsl:variable name="inheritedSecondaryMember"> + <xsl:call-template name="IsMemberInherited"/> + </xsl:variable> + <xsl:choose> + <xsl:when test="overrides"> + <span data="{$secondaryFramework}"> + <include item="secondaryFrameworkOverride"> + <parameter> + <xsl:value-of select="$secondaryFramework"/> + </parameter> + <!--<parameter> + <xsl:value-of select="@*[local-name()=$secondaryFramework]"/> + </parameter>--> + <parameter> + <referenceLink target="{@api}"/> + </parameter> + </include> + </span> + </xsl:when> + <xsl:when test="normalize-space($inheritedSecondaryMember)!=''"> + <span data="{$secondaryFramework}"> + <include item="secondaryFrameworkInherited"> + <parameter> + <xsl:value-of select="$secondaryFramework"/> + </parameter> + <parameter> + <xsl:value-of select="@*[local-name()=$secondaryFramework]"/> + </parameter> + <parameter> + <xsl:apply-templates select="containers/type" mode="link" /> + </parameter> + <parameter> + <referenceLink target="{@api}"/> + </parameter> + </include> + </span> + </xsl:when> + <xsl:otherwise> + <span data="{$secondaryFramework}"> + <include item="secondaryFrameworkMember"> + <parameter> + <xsl:value-of select="$secondaryFramework"/> + </parameter> + <parameter> + <xsl:value-of select="@*[local-name()=$secondaryFramework]"/> + </parameter> + <parameter> + <referenceLink target="{@api}"/> + </parameter> + </include> + </span> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:if> + </xsl:for-each> + </xsl:if> + + </td> + </tr> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="derivedType"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'DerivedClasses'"/> + <xsl:with-param name="title"> + <include item="derivedClasses" /> + </xsl:with-param> + <xsl:with-param name="content"> + <table class="members" id="memberList" frame="lhs" cellpadding="2"> + <tr> + <th class="nameColumn"> + <include item="memberNameHeader"/> + </th> + <th class="descriptionColumn"> + <include item="memberDescriptionHeader" /> + </th> + </tr> + <xsl:apply-templates select="element" mode="derivedType"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </table> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <xsl:template match="elements" mode="overload"> + <xsl:if test="count(element) > 0"> + <xsl:call-template name="memberlistSection"> + <xsl:with-param name="headerGroup" select="'overloadMembers'" /> + <xsl:with-param name="members" select="element" /> + <xsl:with-param name="showParameters" select="'true'" /> + </xsl:call-template> + </xsl:if> + <xsl:apply-templates select="element" mode="overloadSections"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="elements" mode="overloadSummary"> + <xsl:apply-templates select="element" mode="overloadSummary" > + <xsl:sort select="apidata/@name"/> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="element" mode="overloadSummary"> + <xsl:call-template name="getOverloadSummary" /> + </xsl:template> + + <xsl:template match="element" mode="overloadSections"> + <xsl:call-template name="getOverloadSections" /> + </xsl:template> + + <xsl:template name="typeIcon"> + <xsl:param name="typeVisibility" /> + + <xsl:variable name="typeSubgroup" select="apidata/@subgroup" /> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="concat($typeVisibility,$typeSubgroup,'.gif')" /> + </parameter> + </includeAttribute> + <includeAttribute name="title" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" /> + </img> + + </xsl:template> + + <xsl:template name="memberIcons"> + <xsl:param name="memberVisibility" /> + <xsl:param name="staticMember" /> + <xsl:param name="supportedOnXna"/> + <xsl:param name="supportedOnCf"/> + + <xsl:variable name="memberSubgroup"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='constructor'"> + <xsl:text>method</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subgroup='method'"> + <xsl:choose> + <xsl:when test="apidata/@subsubgroup='operator'"> + <xsl:text>operator</xsl:text> + </xsl:when> + <xsl:when test="apidata/@subsubgroup='extension'"> + <xsl:text>extension</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>method</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="apidata/@subgroup" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <!-- test for explicit interface implementations, which get the interface icon --> + <xsl:if test="memberdata/@visibility='private' and proceduredata/@virtual='true'"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>pubinterface.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="ExplicitInterfaceAltText" /> + </img> + </xsl:if> + + <img> + <includeAttribute name="src" item="iconPath"> + <parameter> + <xsl:value-of select="concat($memberVisibility,$memberSubgroup,'.gif')" /> + </parameter> + </includeAttribute> + <xsl:choose> + <xsl:when test="apidata/@subsubgroup"> + <includeAttribute name="title" item="{concat($memberVisibility,apidata/@subsubgroup,'AltText')}" /> + </xsl:when> + <xsl:otherwise> + <includeAttribute name="title" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" /> + </xsl:otherwise> + </xsl:choose> + </img> + + <xsl:if test="$staticMember!=''"> + <img> + <includeAttribute name="src" item="iconPath"> + <parameter>static.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="staticAltText" /> + </img> + </xsl:if> + + <xsl:if test="$supportedOnCf!=''"> + <img data="netcfw"> + <includeAttribute name="src" item="iconPath"> + <parameter>CFW.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="CompactFrameworkAltText" /> + </img> + </xsl:if> + + <xsl:if test="$supportedOnXna!=''"> + <img data="xnafw"> + <includeAttribute name="src" item="iconPath"> + <parameter>xna.gif</parameter> + </includeAttribute> + <includeAttribute name="title" item="XNAFrameworkAltText" /> + </img> + </xsl:if> + </xsl:template> + + <!-- Assembly information --> + + <xsl:template name="requirementsInfo"> + <p/> + <include item="requirementsNamespaceLayout" /> + <xsl:text> </xsl:text> + <referenceLink target="{/document/reference/containers/namespace/@api}" /> + <br/> + <xsl:call-template name="assembliesInfo"/> + + <!-- some apis display a XAML xmlns uri --> + <xsl:call-template name="xamlXmlnsInfo"/> + </xsl:template> + + <xsl:template name="assemblyNameAndModule"> + <xsl:param name="library" select="/document/reference/containers/library"/> + <include item="assemblyNameAndModule"> + <parameter> + <span data="assembly"> + <xsl:value-of select="$library/@assembly"/> + </span> + </parameter> + <parameter> + <xsl:value-of select="$library/@module"/> + </parameter> + <parameter> + <xsl:choose> + <xsl:when test="$library/@kind = 'DynamicallyLinkedLibrary'"> + <xsl:text>dll</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>exe</xsl:text> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </xsl:template> + + <xsl:template name="assembliesInfo"> + <xsl:choose> + <xsl:when test="count(/document/reference/containers/library)>1"> + <include item="requirementsAssembliesLabel"/> + <xsl:for-each select="/document/reference/containers/library"> + <xsl:text>  </xsl:text> + <xsl:call-template name="assemblyNameAndModule"> + <xsl:with-param name="library" select="."/> + </xsl:call-template> + <br/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <include item="requirementsAssemblyLabel"/> + <xsl:text> </xsl:text> + <xsl:call-template name="assemblyNameAndModule"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Platform information --> + + <xsl:template match="platforms"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'platformsTitle'"/> + <xsl:with-param name="title"> + <include item="platformsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <p> + <xsl:for-each select="platform"> + <include item="{.}" /><xsl:if test="position()!=last()"><xsl:text>, </xsl:text></xsl:if> + </xsl:for-each> + </p> + <xsl:if test="/document/reference/versions/versions[@name='netfw' or @name='netcfw']//version"> + <p> + <include item="SystemRequirementsLinkBoilerplate"/> + </p> + </xsl:if> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- Version information --> + + <xsl:template match="versions"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'versionsTitle'"/> + <xsl:with-param name="title"> + <include item="versionsTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:call-template name="processVersions" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="processVersions"> + <xsl:param name="frameworkGroup" select="true()"/> + <xsl:choose> + <xsl:when test="versions and $frameworkGroup"> + <xsl:for-each select="versions"> + <!-- $platformFilterExcluded is based on platform filtering information --> + <xsl:variable name="platformFilterExcluded" select="boolean(/document/reference/platforms and ( (@name='netcfw' and not(/document/reference/platforms/platform[.='PocketPC']) and not(/document/reference/platforms/platform[.='SmartPhone']) and not(/document/reference/platforms/platform[.='WindowsCE']) ) or (@name='xnafw' and not(/document/reference/platforms/platform[.='Xbox360']) ) ) )" /> + <xsl:if test="not($platformFilterExcluded) and count(.//version) > 0"> + <h4 class ="subHeading"> + <include item="{@name}" /> + </h4> + <xsl:call-template name="processVersions"> + <xsl:with-param name="frameworkGroup" select="false()"/> + </xsl:call-template> + </xsl:if> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- show the versions in which the api is supported, if any --> + <xsl:variable name="supportedCount" select="count(version[not(@obsolete)] | versions[version[not(@obsolete)]])"/> + <xsl:if test="$supportedCount > 0"> + <include item="supportedIn_{$supportedCount}"> + <xsl:for-each select="version[not(@obsolete)] | versions[version[not(@obsolete)]]"> + <xsl:variable name="versionName"> + <xsl:choose> + <!-- A versions[version] node at this level is for releases that had subsequent service packs. + For example, versions for .NET 3.0 has version nodes for 3.0 and 3.0 SP1. + We show only the first node, which is the one in which the api was first released, + that is, we show 3.0 SP1 only if the api was introduced in SP1. --> + <xsl:when test="local-name()='versions'"> + <xsl:value-of select="version[not(@obsolete)][not(preceding-sibling::version[not(@obsolete)])]/@name"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <parameter> + <include item="{$versionName}" /> + </parameter> + </xsl:for-each> + </include> + <br/> + </xsl:if> + <!-- show the versions in which the api is obsolete with a compiler warning, if any --> + <xsl:for-each select=".//version[@obsolete='warning']"> + <include item="obsoleteWarning"> + <parameter> + <include item="{@name}" /> + </parameter> + </include> + <br/> + </xsl:for-each> + <!-- show the versions in which the api is obsolete and does not compile, if any --> + <xsl:for-each select=".//version[@obsolete='error']"> + <xsl:if test="position()=last()"> + <include item="obsoleteError"> + <parameter> + <include item="{@name}" /> + </parameter> + </include> + <br/> + </xsl:if> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Inheritance hierarchy --> + + <xsl:template match="family"> + + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'family'"/> + <xsl:with-param name="title"> + <include item="familyTitle" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:variable name="ancestorCount" select="count(ancestors/*)" /> + <xsl:variable name="childCount" select="count(descendents/*)" /> + + <xsl:for-each select="ancestors/type"> + <xsl:sort select="position()" data-type="number" order="descending" /> + + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="position()" /> + </xsl:call-template> + + <xsl:apply-templates select="self::type" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + + <br/> + </xsl:for-each> + + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 1" /> + </xsl:call-template> + + <referenceLink target="{$key}" qualified="true"/> + <br/> + + <xsl:choose> + + <xsl:when test="descendents/@derivedTypes"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 2" /> + </xsl:call-template> + <referenceLink target="{descendents/@derivedTypes}" qualified="true"> + <include item="derivedClasses"/> + </referenceLink> + </xsl:when> + <xsl:otherwise> + + <xsl:for-each select="descendents/type"> + <xsl:call-template name="indent"> + <xsl:with-param name="count" select="$ancestorCount + 2" /> + </xsl:call-template> + + <xsl:apply-templates select="self::type" mode="link"> + <xsl:with-param name="qualified" select="true()" /> + </xsl:apply-templates> + + <br/> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <xsl:template name="createTableEntries"> + <xsl:param name="count" /> + <xsl:if test="number($count) > 0"> + <td> </td> + <xsl:call-template name="createTableEntries"> + <xsl:with-param name="count" select="number($count)-1" /> + </xsl:call-template> + </xsl:if> + </xsl:template> + + <!--<xsl:template name="shortName"> + <xsl:choose> + <xsl:when test="$api-subgroup='constructor'"> + <xsl:value-of select="/document/reference/containers/type/apidata/@name" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template>--> + + + <!-- decorated names --> + + <xsl:template name="shortNameDecorated"> + <xsl:choose> + <!-- type overview pages and member list pages get the type name --> + <xsl:when test="($topic-group='api' and $api-group='type') or ($topic-group='list' and not($topic-subgroup='overload'))"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + </xsl:when> + <!-- constructors and member list pages also use the type name --> + <xsl:when test="($topic-group='api' and $api-subgroup='constructor') or ($topic-subgroup='overload' and $api-subgroup='constructor')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + </xsl:when> + <!-- eii members --> + <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + <span class="languageSpecificText"> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <span class="nu">.</span> + </span> + <xsl:for-each select="/document/reference/implements/member"> + <xsl:for-each select="type"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + <span class="languageSpecificText"> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <span class="nu">.</span> + </span> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="decorated" /> + </xsl:for-each> + </xsl:when> + <!-- normal member pages use the qualified member name --> + <xsl:when test="($topic-group='api' and $api-group='member') or ($topic-subgroup='overload' and $api-group='member')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNameDecorated" /> + </xsl:for-each> + <span class="languageSpecificText"> + <span class="cs">.</span> + <span class="vb">.</span> + <span class="cpp">::</span> + <span class="nu">.</span> + </span> + <xsl:for-each select="/document/reference[1]"> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="decorated" /> + </xsl:for-each> + </xsl:when> + <!-- namespace (and any other) topics just use the name --> + <xsl:when test="/document/reference/apidata/@name = ''"> + <include item="defaultNamespace" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- plain names --> + + <xsl:template name="shortNamePlain"> + <xsl:param name="qualifyMembers" select="false()" /> + <xsl:choose> + <!-- type overview pages and member list pages get the type name --> + <xsl:when test="($topic-group='api' and $api-group='type') or ($topic-group='list' and not($topic-subgroup='overload'))"> + <xsl:for-each select="/document/reference[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + </xsl:when> + <!-- constructors and member list pages also use the type name --> + <xsl:when test="($topic-group='api' and $api-subgroup='constructor') or ($topic-subgroup='overload' and $api-subgroup='constructor')"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + </xsl:when> + <!-- member pages use the member name, qualified if the qualified flag is set --> + <xsl:when test="($topic-group='api' and $api-group='member') or ($topic-subgroup='overload' and $api-group='member')"> + <!-- check for qualify flag and qualify if it is set --> + <xsl:if test="$qualifyMembers"> + <xsl:for-each select="/document/reference/containers/type[1]"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + </xsl:if> + <xsl:choose> + <!-- EII names are interfaceName.interfaceMemberName, not memberName --> + <xsl:when test="document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"> + <xsl:for-each select="/document/reference/implements/member"> + <xsl:for-each select="type"> + <xsl:call-template name="typeNamePlain" /> + </xsl:for-each> + <xsl:text>.</xsl:text> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="plain" /> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <!-- but other members just use the name --> + <xsl:for-each select="/document/reference[1]"> + <xsl:value-of select="apidata/@name" /> + <xsl:apply-templates select="templates" mode="plain" /> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <!-- namespace, member (and any other) topics just use the name --> + <xsl:when test="/document/reference/apidata/@name = ''"> + <include item="defaultNamespace" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/document/reference/apidata/@name" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/web_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/web_reference.xsl index e180260..30827b7 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/web_reference.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/web_reference.xsl @@ -1,49 +1,49 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:asp="http://temp.uri/asp.net"
- xmlns:xlink="http://www.w3.org/1999/xlink">
-
- <!-- WebDocs overrides some of the default Manifold transforms -->
- <xsl:import href="main_sandcastle.xsl"/>
-
- <xsl:output method="xml" indent="no" encoding="utf-8" omit-xml-declaration="yes"/>
- <xsl:namespace-alias stylesheet-prefix="xlink" result-prefix="#default"/>
-
- <xsl:template match="/">
- <root>
- <xsl:call-template name="insertFilename" />
- <metadata>
- <topic id="{$key}">
- <title><xsl:call-template name="topicTitlePlain"/></title>
- <pageUrl>api/<xsl:value-of select="/document/reference/file/@name"/>.aspx</pageUrl>
- </topic>
- </metadata>
- <content>
- <xsl:processing-instruction name="literal-text">
- <xsl:text><![CDATA[<%@Page Language="C#" MasterPageFile="~/site.master" %>]]>
</xsl:text>
- <xsl:text>
</xsl:text>
- </xsl:processing-instruction>
- <asp:Content ID="MainBodyContent" ContentPlaceHolderID="MainBody" Runat="Server">
- <h1><xsl:call-template name="topicTitleDecorated" /></h1>
- <!--<xsl:call-template name="upperBodyStuff"/> -->
- <xsl:call-template name="main"/>
- </asp:Content>
- </content>
- </root>
- </xsl:template>
-
- <xsl:template name="insertFilename">
- <xsl:attribute name="fileName">
- <xsl:value-of select="/document/reference/file/@name" />
- </xsl:attribute>
- </xsl:template>
-
- <!-- NO HEADER; WebDocs uses master pages for this purpose -->
- <!--
- <xsl:template name="head">
- </xsl:template>
--->
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:asp="http://temp.uri/asp.net" + xmlns:xlink="http://www.w3.org/1999/xlink"> + + <!-- WebDocs overrides some of the default Manifold transforms --> + <xsl:import href="main_sandcastle.xsl"/> + + <xsl:output method="xml" indent="no" encoding="utf-8" omit-xml-declaration="yes"/> + <xsl:namespace-alias stylesheet-prefix="xlink" result-prefix="#default"/> + + <xsl:template match="/"> + <root> + <xsl:call-template name="insertFilename" /> + <metadata> + <topic id="{$key}"> + <title><xsl:call-template name="topicTitlePlain"/></title> + <pageUrl>api/<xsl:value-of select="/document/reference/file/@name"/>.aspx</pageUrl> + </topic> + </metadata> + <content> + <xsl:processing-instruction name="literal-text"> + <xsl:text><![CDATA[<%@Page Language="C#" MasterPageFile="~/site.master" %>]]>
</xsl:text> + <xsl:text>
</xsl:text> + </xsl:processing-instruction> + <asp:Content ID="MainBodyContent" ContentPlaceHolderID="MainBody" Runat="Server"> + <h1><xsl:call-template name="topicTitleDecorated" /></h1> + <!--<xsl:call-template name="upperBodyStuff"/> --> + <xsl:call-template name="main"/> + </asp:Content> + </content> + </root> + </xsl:template> + + <xsl:template name="insertFilename"> + <xsl:attribute name="fileName"> + <xsl:value-of select="/document/reference/file/@name" /> + </xsl:attribute> + </xsl:template> + + <!-- NO HEADER; WebDocs uses master pages for this purpose --> + <!-- + <xsl:template name="head"> + </xsl:template> +--> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl index b49dc63..1fc6e45 100644 --- a/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl +++ b/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl @@ -1,490 +1,490 @@ -<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
- xmlns:MSHelp="http://msdn.microsoft.com/mshelp"
- xmlns:mshelp="http://msdn.microsoft.com/mshelp"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- >
-
- <xsl:import href="globalTemplates.xsl"/>
-
- <xsl:variable name="showNonXamlAssemblyBoilerplate" select="'false'" />
-
- <!-- XAML Syntax -->
-
- <xsl:template name="XamlSyntaxBlock">
- <!-- Branch based on pagetype -->
- <xsl:choose>
- <!-- Display boilerplate for pagetypes that cannot be used in XAML,
- unless there's an authored XAML text section, which is used in place of the boilerplate. -->
- <xsl:when test="$subgroup='method' or
- $subgroup='constructor' or
- $subgroup='interface' or
- $subgroup='delegate' or
- $subgroup='field'">
- <xsl:call-template name="nonXamlMembersXamlSyntax"/>
- </xsl:when>
-
- <!-- class and struct -->
- <xsl:when test="$subgroup='class' or
- $subgroup='structure'">
- <xsl:call-template name="classOrStructXamlSyntax"/>
- </xsl:when>
-
- <!-- enumeration -->
- <xsl:when test="$subgroup='enumeration'">
- <xsl:call-template name="enumerationXamlSyntax"/>
- </xsl:when>
-
- <!-- property -->
- <xsl:when test="$subgroup='property' or $subsubgroup='attachedProperty'">
- <xsl:call-template name="propertyXamlSyntax"/>
- </xsl:when>
-
- <!-- event -->
- <xsl:when test="$subgroup='event' or $subsubgroup='attachedEvent'">
- <xsl:call-template name="eventXamlSyntax"/>
- </xsl:when>
-
- </xsl:choose>
- </xsl:template>
-
- <!-- XAML syntax for CLASS and STRUCT topics. This is the logic:
- if authored OESyntax,
- display it
- else if autogen OESyntax (AND no authored XAML section),
- display it.
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored OESyntax OR authored AttrUsage OR authored XAML section),
- display autogen boilerplate
- display XAML Values section, if any
- -->
- <xsl:template name="classOrStructXamlSyntax">
- <!-- Object Element Usage
- //ddue:section[starts-with(@address,'xamlValues')]
- //ddue:section[starts-with(@address,'xamlTextUsage')]
- //ddue:section[starts-with(@address,'xamlAttributeUsage')]
- //ddue:section[starts-with(@address,'xamlPropertyElementUsage')]
- //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')]
- //ddue:section[starts-with(@address,'xamlObjectElementUsage')]
- //ddue:section[starts-with(@address,'dependencyPropertyInfo')]
- //ddue:section[starts-with(@address,'routedEventInfo')]
- -->
- <xsl:choose>
- <!-- Show the authored Object Element Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlObjectElementUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Object Element Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlObjectElementUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- Implicit Collection Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="."/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for ENUMERATION topics. This is the logic:
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored AttrUsage OR authored XAML section),
- display autogen AttrUsage or boilerplate.
- display XAML Values section, if any
- -->
- <xsl:template name="enumerationXamlSyntax">
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show enum syntax boilerplate, if no authored xaml sections to override it. -->
- <xsl:choose>
- <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/>
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="xamlAttributeUsageHeading" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><include item="enumerationOverviewXamlSyntax"/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:when>
- </xsl:choose>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for PROPERTY topics. This is the logic:
- if authored OESyntax,
- display it
- if authored PEUsage,
- display it
- else if autogen PEUsage (AND no authored XAML section),
- display it
- if authored AttrUsage,
- display it
- else if autogen AttrUsage (AND no authored XAML section),
- display it
- if authored XAML section,
- display it
- if no (authored OESyntax OR authored PEUsage OR authored AttrUsage OR authored XAML section),
- display autogen boilerplate
- -->
- <xsl:template name="propertyXamlSyntax">
- <!-- Object Element Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Property Element Usage -->
- <xsl:choose>
- <!-- Show the authored Property Element Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Property Element Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- Attribute Usage -->
- <xsl:choose>
- <!-- Show the authored Attribute Usage, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlAttributeUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Else if no authored xamlTextUsage section, show the autogenerated Attribute Usage, if any. -->
- <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:when>
- </xsl:choose>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="div/*"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for EVENT topics. This is the logic:
- if authored AttrUsage,
- display it
- if authored XAML section,
- display it
- if no (authored AttrUsage OR authored XAML section),
- display autogen AttrUsage or boilerplate.
- display XAML Values section, if any
- -->
- <xsl:template name="eventXamlSyntax">
- <!-- Attribute Usage - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- <!-- Autogen - show autogen syntax or boilerplate, if no authored xaml sections to override it. -->
- <xsl:if test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])">
- <!-- If XamlSyntax component generated an Attribute Usage block, this template will show it. -->
- <xsl:call-template name="ShowAutogeneratedXamlSyntax">
- <xsl:with-param name="autogenContent">
- <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
- </xsl:with-param>
- </xsl:call-template>
- <!-- If XamlSyntax component generated a boilerplate block, this template will show it. -->
- <xsl:call-template name="ShowXamlSyntaxBoilerplate">
- <xsl:with-param name="param0">
- <xsl:copy-of select="div/*"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- <!-- Show the authored XAML Values section, if any. -->
- <xsl:call-template name="showXamlValuesSection"/>
- </xsl:template>
-
- <!-- XAML syntax for members that cannot be used in XAML: interface, delegate, method, field, constructor.
- If there's an authored XAML section, show it. Otherwise, use the standard boilerplate. -->
- <xsl:template name="nonXamlMembersXamlSyntax">
- <xsl:choose>
- <!-- XAML Text section - show authored section, if any. -->
- <xsl:when test="//ddue:section[starts-with(@address,'xamlTextUsage')]">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]">
- <xsl:call-template name="ShowAuthoredXamlSyntax"/>
- </xsl:for-each>
- </xsl:when>
- <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. -->
- <xsl:otherwise>
- <xsl:call-template name="ShowXamlSyntaxBoilerplate"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- Displays one of the standard XAML boilerplate strings. -->
- <xsl:template name="ShowXamlSyntaxBoilerplate">
- <xsl:param name="param0"/>
- <xsl:variable name="boilerplateId">
- <xsl:choose>
- <!-- don't show boilerplate for apis that are not in xaml assemblies -->
- <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/>
- <xsl:otherwise>
- <xsl:value-of select="div/@class[not(.='xamlAttributeUsageHeading' or
- .='xamlObjectElementUsageHeading' or
- .='xamlContentElementUsageHeading' or
- .='xamlPropertyElementUsageHeading' or
- .='xamlXmlnsUri')]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:if test="$boilerplateId!=''">
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="xamlSyntaxBoilerplateHeading" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><span class="message"><xsl:text/><include item="{$boilerplateId}">
- <xsl:choose>
- <xsl:when test="$param0!='' or (count(msxsl:node-set($param0)/*) > 0)">
- <parameter><xsl:copy-of select="msxsl:node-set($param0)"/></parameter>
- </xsl:when>
- <!-- make sure we at least pass in an empty param because some boilerplates expect them -->
- <xsl:otherwise>
- <parameter/>
- </xsl:otherwise>
- </xsl:choose>
- </include></span></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:if>
- </xsl:template>
-
- <!-- Displays an authored XAML syntax section -->
- <xsl:template name="ShowAuthoredXamlSyntax">
- <xsl:if test="ddue:content[normalize-space(.)!='']">
- <xsl:variable name="headingID">
- <xsl:choose>
- <xsl:when test="starts-with(@address,'xamlObjectElementUsage')">xamlObjectElementUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlImplicitCollectionUsage')">xamlImplicitCollectionUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlPropertyElementUsage')">
- <xsl:choose>
- <xsl:when test="//div[@class='xamlContentElementUsageHeading']">xamlContentElementUsageHeading</xsl:when>
- <xsl:otherwise>xamlPropertyElementUsageHeading</xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="starts-with(@address,'xamlAttributeUsage')">xamlAttributeUsageHeading</xsl:when>
- <xsl:when test="starts-with(@address,'xamlTextUsage')">xamlSyntaxBoilerplateHeading</xsl:when>
- </xsl:choose>
- </xsl:variable>
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="{$headingID}" />
- </th>
- </tr>
- <xsl:choose>
- <xsl:when test="$headingID='xamlSyntaxBoilerplateHeading'">
- <tr>
- <td>
- <xsl:apply-templates select="ddue:content"/>
- </td>
- </tr>
- </xsl:when>
- <xsl:otherwise>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:choose>
- <xsl:when test="ddue:content/ddue:code"><xsl:apply-templates select="ddue:content/ddue:code[1]/node()" /></xsl:when>
- <xsl:when test="ddue:content/ddue:para"><xsl:apply-templates select="ddue:content/ddue:para"/></xsl:when>
- </xsl:choose></pre>
- </td>
- </tr>
- </xsl:otherwise>
- </xsl:choose>
- </table>
- </span>
- </xsl:if>
- </xsl:template>
-
- <!-- Displays the autogenerated XAML syntax for pagetypes other than enumerations -->
- <xsl:template name="ShowAutogeneratedXamlSyntax">
- <xsl:param name="autogenContent"/>
- <xsl:if test="count(msxsl:node-set($autogenContent))>0">
- <xsl:for-each select="msxsl:node-set($autogenContent)/div">
- <xsl:variable name="headingID">
- <xsl:value-of select="@class"/>
- </xsl:variable>
- <span codeLanguage="XAML">
- <table>
- <tr>
- <th>
- <include item="{$headingID}" />
- </th>
- </tr>
- <tr>
- <td>
- <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/></pre>
- </td>
- </tr>
- </table>
- </span>
- </xsl:for-each>
- </xsl:if>
- </xsl:template>
-
- <!-- Display the XAML Values section. -->
- <xsl:template name="showXamlValuesSection">
- <xsl:for-each select="//ddue:section[starts-with(@address,'xamlValues')]">
- <span codeLanguage="XAML">
- <p/>
- <xsl:call-template name="subSection">
- <xsl:with-param name="title">
- <include item="xamlValuesSectionHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content"/>
- </xsl:with-param>
- </xsl:call-template>
- </span>
- </xsl:for-each>
- </xsl:template>
-
- <!-- these xaml sections are captured in the xaml syntax processing, so this template prevents them from showing up twice -->
- <xsl:template match="//ddue:section[starts-with(@address,'xamlValues') or
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage') or
- starts-with(@address,'dependencyPropertyInfo') or
- starts-with(@address,'routedEventInfo')]"/>
-
- <!-- the authored dependency Property Information section -->
- <xsl:template match="ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'dependencyPropertyInfo'"/>
- <xsl:with-param name="title">
- <include item="dependencyPropertyInfoHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- the authored routed event Information section -->
- <xsl:template match="ddue:section[starts-with(@address,'routedEventInfo')]" mode="section">
- <xsl:call-template name="section">
- <xsl:with-param name="toggleSwitch" select="'routedEventInfo'"/>
- <xsl:with-param name="title">
- <include item="routedEventInfoHeading" />
- </xsl:with-param>
- <xsl:with-param name="content">
- <xsl:apply-templates select="ddue:content" />
- </xsl:with-param>
- </xsl:call-template>
- </xsl:template>
-
- <!-- Show XAML xmlns for apis that support XAML -->
- <xsl:template name="xamlXmlnsInfo">
- <xsl:variable name="hasAuthoredXamlSyntax" select="boolean(//ddue:sections/ddue:section[
- starts-with(@address,'xamlTextUsage') or
- starts-with(@address,'xamlAttributeUsage') or
- starts-with(@address,'xamlPropertyElementUsage') or
- starts-with(@address,'xamlImplicitCollectionUsage') or
- starts-with(@address,'xamlObjectElementUsage')])" />
- <xsl:variable name="hasAutogeneratedXamlSyntax" select="boolean(/document/syntax/div[@codeLanguage='XAML']/div[
- @class='xamlAttributeUsageHeading' or
- @class='xamlObjectElementUsageHeading' or
- @class='xamlContentElementUsageHeading' or
- @class='xamlPropertyElementUsageHeading'])" />
- <!-- All topics that have authored or autogen'd xaml syntax get an "XMLNS for XAML" line in the Requirements section.
- Topics with boilerplate xaml syntax, e.g. "Not applicable", do NOT get this line. -->
- <xsl:if test="$hasAuthoredXamlSyntax or $hasAutogeneratedXamlSyntax">
- <br/>
- <include item="xamlXmlnsRequirementsLayout">
- <parameter>
- <xsl:choose>
- <xsl:when test="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']">
- <xsl:for-each select="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']">
- <xsl:if test="position()!=1"><xsl:text>, </xsl:text></xsl:if>
- <xsl:value-of select="."/>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <include item="unmappedXamlXmlns"/>
- </xsl:otherwise>
- </xsl:choose>
- </parameter>
- </include>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" + xmlns:MSHelp="http://msdn.microsoft.com/mshelp" + xmlns:mshelp="http://msdn.microsoft.com/mshelp" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + > + + <xsl:import href="globalTemplates.xsl"/> + + <xsl:variable name="showNonXamlAssemblyBoilerplate" select="'false'" /> + + <!-- XAML Syntax --> + + <xsl:template name="XamlSyntaxBlock"> + <!-- Branch based on pagetype --> + <xsl:choose> + <!-- Display boilerplate for pagetypes that cannot be used in XAML, + unless there's an authored XAML text section, which is used in place of the boilerplate. --> + <xsl:when test="$subgroup='method' or + $subgroup='constructor' or + $subgroup='interface' or + $subgroup='delegate' or + $subgroup='field'"> + <xsl:call-template name="nonXamlMembersXamlSyntax"/> + </xsl:when> + + <!-- class and struct --> + <xsl:when test="$subgroup='class' or + $subgroup='structure'"> + <xsl:call-template name="classOrStructXamlSyntax"/> + </xsl:when> + + <!-- enumeration --> + <xsl:when test="$subgroup='enumeration'"> + <xsl:call-template name="enumerationXamlSyntax"/> + </xsl:when> + + <!-- property --> + <xsl:when test="$subgroup='property' or $subsubgroup='attachedProperty'"> + <xsl:call-template name="propertyXamlSyntax"/> + </xsl:when> + + <!-- event --> + <xsl:when test="$subgroup='event' or $subsubgroup='attachedEvent'"> + <xsl:call-template name="eventXamlSyntax"/> + </xsl:when> + + </xsl:choose> + </xsl:template> + + <!-- XAML syntax for CLASS and STRUCT topics. This is the logic: + if authored OESyntax, + display it + else if autogen OESyntax (AND no authored XAML section), + display it. + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored OESyntax OR authored AttrUsage OR authored XAML section), + display autogen boilerplate + display XAML Values section, if any + --> + <xsl:template name="classOrStructXamlSyntax"> + <!-- Object Element Usage + //ddue:section[starts-with(@address,'xamlValues')] + //ddue:section[starts-with(@address,'xamlTextUsage')] + //ddue:section[starts-with(@address,'xamlAttributeUsage')] + //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] + //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] + //ddue:section[starts-with(@address,'xamlObjectElementUsage')] + //ddue:section[starts-with(@address,'dependencyPropertyInfo')] + //ddue:section[starts-with(@address,'routedEventInfo')] + --> + <xsl:choose> + <!-- Show the authored Object Element Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlObjectElementUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Object Element Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlObjectElementUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- Implicit Collection Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlImplicitCollectionUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="."/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for ENUMERATION topics. This is the logic: + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored AttrUsage OR authored XAML section), + display autogen AttrUsage or boilerplate. + display XAML Values section, if any + --> + <xsl:template name="enumerationXamlSyntax"> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show enum syntax boilerplate, if no authored xaml sections to override it. --> + <xsl:choose> + <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="xamlAttributeUsageHeading" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><include item="enumerationOverviewXamlSyntax"/></pre> + </td> + </tr> + </table> + </span> + </xsl:when> + </xsl:choose> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for PROPERTY topics. This is the logic: + if authored OESyntax, + display it + if authored PEUsage, + display it + else if autogen PEUsage (AND no authored XAML section), + display it + if authored AttrUsage, + display it + else if autogen AttrUsage (AND no authored XAML section), + display it + if authored XAML section, + display it + if no (authored OESyntax OR authored PEUsage OR authored AttrUsage OR authored XAML section), + display autogen boilerplate + --> + <xsl:template name="propertyXamlSyntax"> + <!-- Object Element Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlObjectElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Property Element Usage --> + <xsl:choose> + <!-- Show the authored Property Element Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlPropertyElementUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Property Element Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- Attribute Usage --> + <xsl:choose> + <!-- Show the authored Attribute Usage, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlAttributeUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Else if no authored xamlTextUsage section, show the autogenerated Attribute Usage, if any. --> + <xsl:when test="not(//ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + </xsl:when> + </xsl:choose> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlObjectElementUsage')] or //ddue:section[starts-with(@address,'xamlPropertyElementUsage')] or //ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="div/*"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for EVENT topics. This is the logic: + if authored AttrUsage, + display it + if authored XAML section, + display it + if no (authored AttrUsage OR authored XAML section), + display autogen AttrUsage or boilerplate. + display XAML Values section, if any + --> + <xsl:template name="eventXamlSyntax"> + <!-- Attribute Usage - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlAttributeUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- XAML Text section - show authored section, if any. --> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + <!-- Autogen - show autogen syntax or boilerplate, if no authored xaml sections to override it. --> + <xsl:if test="not(//ddue:section[starts-with(@address,'xamlAttributeUsage')] or //ddue:section[starts-with(@address,'xamlTextUsage')])"> + <!-- If XamlSyntax component generated an Attribute Usage block, this template will show it. --> + <xsl:call-template name="ShowAutogeneratedXamlSyntax"> + <xsl:with-param name="autogenContent"> + <xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/> + </xsl:with-param> + </xsl:call-template> + <!-- If XamlSyntax component generated a boilerplate block, this template will show it. --> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"> + <xsl:with-param name="param0"> + <xsl:copy-of select="div/*"/> + </xsl:with-param> + </xsl:call-template> + </xsl:if> + <!-- Show the authored XAML Values section, if any. --> + <xsl:call-template name="showXamlValuesSection"/> + </xsl:template> + + <!-- XAML syntax for members that cannot be used in XAML: interface, delegate, method, field, constructor. + If there's an authored XAML section, show it. Otherwise, use the standard boilerplate. --> + <xsl:template name="nonXamlMembersXamlSyntax"> + <xsl:choose> + <!-- XAML Text section - show authored section, if any. --> + <xsl:when test="//ddue:section[starts-with(@address,'xamlTextUsage')]"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlTextUsage')][1]"> + <xsl:call-template name="ShowAuthoredXamlSyntax"/> + </xsl:for-each> + </xsl:when> + <!-- Autogen - show autogen boilerplate, if no authored xaml sections to override it. --> + <xsl:otherwise> + <xsl:call-template name="ShowXamlSyntaxBoilerplate"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Displays one of the standard XAML boilerplate strings. --> + <xsl:template name="ShowXamlSyntaxBoilerplate"> + <xsl:param name="param0"/> + <xsl:variable name="boilerplateId"> + <xsl:choose> + <!-- don't show boilerplate for apis that are not in xaml assemblies --> + <xsl:when test="$showNonXamlAssemblyBoilerplate='false' and div[@class='nonXamlAssemblyBoilerplate']"/> + <xsl:otherwise> + <xsl:value-of select="div/@class[not(.='xamlAttributeUsageHeading' or + .='xamlObjectElementUsageHeading' or + .='xamlContentElementUsageHeading' or + .='xamlPropertyElementUsageHeading' or + .='xamlXmlnsUri')]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:if test="$boilerplateId!=''"> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="xamlSyntaxBoilerplateHeading" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><span class="message"><xsl:text/><include item="{$boilerplateId}"> + <xsl:choose> + <xsl:when test="$param0!='' or (count(msxsl:node-set($param0)/*) > 0)"> + <parameter><xsl:copy-of select="msxsl:node-set($param0)"/></parameter> + </xsl:when> + <!-- make sure we at least pass in an empty param because some boilerplates expect them --> + <xsl:otherwise> + <parameter/> + </xsl:otherwise> + </xsl:choose> + </include></span></pre> + </td> + </tr> + </table> + </span> + </xsl:if> + </xsl:template> + + <!-- Displays an authored XAML syntax section --> + <xsl:template name="ShowAuthoredXamlSyntax"> + <xsl:if test="ddue:content[normalize-space(.)!='']"> + <xsl:variable name="headingID"> + <xsl:choose> + <xsl:when test="starts-with(@address,'xamlObjectElementUsage')">xamlObjectElementUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlImplicitCollectionUsage')">xamlImplicitCollectionUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlPropertyElementUsage')"> + <xsl:choose> + <xsl:when test="//div[@class='xamlContentElementUsageHeading']">xamlContentElementUsageHeading</xsl:when> + <xsl:otherwise>xamlPropertyElementUsageHeading</xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="starts-with(@address,'xamlAttributeUsage')">xamlAttributeUsageHeading</xsl:when> + <xsl:when test="starts-with(@address,'xamlTextUsage')">xamlSyntaxBoilerplateHeading</xsl:when> + </xsl:choose> + </xsl:variable> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="{$headingID}" /> + </th> + </tr> + <xsl:choose> + <xsl:when test="$headingID='xamlSyntaxBoilerplateHeading'"> + <tr> + <td> + <xsl:apply-templates select="ddue:content"/> + </td> + </tr> + </xsl:when> + <xsl:otherwise> + <tr> + <td> + <pre xml:space="preserve"><xsl:choose> + <xsl:when test="ddue:content/ddue:code"><xsl:apply-templates select="ddue:content/ddue:code[1]/node()" /></xsl:when> + <xsl:when test="ddue:content/ddue:para"><xsl:apply-templates select="ddue:content/ddue:para"/></xsl:when> + </xsl:choose></pre> + </td> + </tr> + </xsl:otherwise> + </xsl:choose> + </table> + </span> + </xsl:if> + </xsl:template> + + <!-- Displays the autogenerated XAML syntax for pagetypes other than enumerations --> + <xsl:template name="ShowAutogeneratedXamlSyntax"> + <xsl:param name="autogenContent"/> + <xsl:if test="count(msxsl:node-set($autogenContent))>0"> + <xsl:for-each select="msxsl:node-set($autogenContent)/div"> + <xsl:variable name="headingID"> + <xsl:value-of select="@class"/> + </xsl:variable> + <span codeLanguage="XAML"> + <table> + <tr> + <th> + <include item="{$headingID}" /> + </th> + </tr> + <tr> + <td> + <pre xml:space="preserve"><xsl:text/><xsl:copy-of select="node()"/></pre> + </td> + </tr> + </table> + </span> + </xsl:for-each> + </xsl:if> + </xsl:template> + + <!-- Display the XAML Values section. --> + <xsl:template name="showXamlValuesSection"> + <xsl:for-each select="//ddue:section[starts-with(@address,'xamlValues')]"> + <span codeLanguage="XAML"> + <p/> + <xsl:call-template name="subSection"> + <xsl:with-param name="title"> + <include item="xamlValuesSectionHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content"/> + </xsl:with-param> + </xsl:call-template> + </span> + </xsl:for-each> + </xsl:template> + + <!-- these xaml sections are captured in the xaml syntax processing, so this template prevents them from showing up twice --> + <xsl:template match="//ddue:section[starts-with(@address,'xamlValues') or + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage') or + starts-with(@address,'dependencyPropertyInfo') or + starts-with(@address,'routedEventInfo')]"/> + + <!-- the authored dependency Property Information section --> + <xsl:template match="ddue:section[starts-with(@address,'dependencyPropertyInfo')]" mode="section"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'dependencyPropertyInfo'"/> + <xsl:with-param name="title"> + <include item="dependencyPropertyInfoHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- the authored routed event Information section --> + <xsl:template match="ddue:section[starts-with(@address,'routedEventInfo')]" mode="section"> + <xsl:call-template name="section"> + <xsl:with-param name="toggleSwitch" select="'routedEventInfo'"/> + <xsl:with-param name="title"> + <include item="routedEventInfoHeading" /> + </xsl:with-param> + <xsl:with-param name="content"> + <xsl:apply-templates select="ddue:content" /> + </xsl:with-param> + </xsl:call-template> + </xsl:template> + + <!-- Show XAML xmlns for apis that support XAML --> + <xsl:template name="xamlXmlnsInfo"> + <xsl:variable name="hasAuthoredXamlSyntax" select="boolean(//ddue:sections/ddue:section[ + starts-with(@address,'xamlTextUsage') or + starts-with(@address,'xamlAttributeUsage') or + starts-with(@address,'xamlPropertyElementUsage') or + starts-with(@address,'xamlImplicitCollectionUsage') or + starts-with(@address,'xamlObjectElementUsage')])" /> + <xsl:variable name="hasAutogeneratedXamlSyntax" select="boolean(/document/syntax/div[@codeLanguage='XAML']/div[ + @class='xamlAttributeUsageHeading' or + @class='xamlObjectElementUsageHeading' or + @class='xamlContentElementUsageHeading' or + @class='xamlPropertyElementUsageHeading'])" /> + <!-- All topics that have authored or autogen'd xaml syntax get an "XMLNS for XAML" line in the Requirements section. + Topics with boilerplate xaml syntax, e.g. "Not applicable", do NOT get this line. --> + <xsl:if test="$hasAuthoredXamlSyntax or $hasAutogeneratedXamlSyntax"> + <br/> + <include item="xamlXmlnsRequirementsLayout"> + <parameter> + <xsl:choose> + <xsl:when test="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']"> + <xsl:for-each select="/document/syntax/div[@codeLanguage='XAML']/div[@class='xamlXmlnsUri']"> + <xsl:if test="position()!=1"><xsl:text>, </xsl:text></xsl:if> + <xsl:value-of select="."/> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <include item="unmappedXamlXmlns"/> + </xsl:otherwise> + </xsl:choose> + </parameter> + </include> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Presentation/vs2005/website/Default.aspx b/tools/Sandcastle/Presentation/vs2005/website/Default.aspx index 4df4f60..0297d0d 100644 --- a/tools/Sandcastle/Presentation/vs2005/website/Default.aspx +++ b/tools/Sandcastle/Presentation/vs2005/website/Default.aspx @@ -1,7 +1,7 @@ -<%@ Page Language="C#" MasterPageFile="~/site.master" Title="Main Website" %>
-
-<asp:Content ID="Content1" ContentPlaceHolderID="MainBody" Runat="Server">
-<h1>Sandcastle API Web Output Sample</h1>
-<p>This is a sample website for hosting content produced by Sandcastle.</p>
-</asp:Content>
-
+<%@ Page Language="C#" MasterPageFile="~/site.master" Title="Main Website" %> + +<asp:Content ID="Content1" ContentPlaceHolderID="MainBody" Runat="Server"> +<h1>Sandcastle API Web Output Sample</h1> +<p>This is a sample website for hosting content produced by Sandcastle.</p> +</asp:Content> + diff --git a/tools/Sandcastle/Presentation/vs2005/website/site.css b/tools/Sandcastle/Presentation/vs2005/website/site.css index f42efd6..0b3aefd 100644 --- a/tools/Sandcastle/Presentation/vs2005/website/site.css +++ b/tools/Sandcastle/Presentation/vs2005/website/site.css @@ -1,76 +1,76 @@ -
-body {
- margin: 0;
- padding: 0;
- font: .7em Verdana, Tahoma, Arial, Helvetica, sans-serif;
- min-width: 768px;
-}
-
-#Header {
- padding: 10px;
- font-size: 2.8em;
- font-weight: bold;
- border-bottom: solid 2px #888;
- margin-bottom: 10px;
-}
-
-#Logo {
- width: 48px;
- height: 48px;
- background: #ccc;
- border: solid 1px #888;
- float: left;
- margin-right: 20px;
-}
-
-.clearFloats {
- clear: both;
-}
-
-#Toc {
- float: left;
- width: 250px;
- overflow: hidden;
- background: #EFEFF7;
- padding: 10px 10px 1000px 10px;
-}
-
-#Main {
- margin-left: 300px;
- font-size: 140%;
-}
-
-
-h1, h2, h3, h4 {
- margin: 0;
- font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif;
- word-wrap: break-word;
-}
-
-h1 {
- padding-top: 10px;
- margin-bottom: 1.2em;
- font-size: 1.6em;
-}
-
-h2 {
- margin-top: 2.5em;
- margin-bottom: 0.6em;
- font-size: 1.25em;
-}
-
-h3 {
- margin-top: 1.2em;
- margin-bottom: 0.3em;
- font-size: 1.0em;
-}
-
-p {
- margin: 0 0 1.2em 0;
- line-height: 140%;
-}
-
-img.toggle {
- display: none;
-}
-
+ +body { + margin: 0; + padding: 0; + font: .7em Verdana, Tahoma, Arial, Helvetica, sans-serif; + min-width: 768px; +} + +#Header { + padding: 10px; + font-size: 2.8em; + font-weight: bold; + border-bottom: solid 2px #888; + margin-bottom: 10px; +} + +#Logo { + width: 48px; + height: 48px; + background: #ccc; + border: solid 1px #888; + float: left; + margin-right: 20px; +} + +.clearFloats { + clear: both; +} + +#Toc { + float: left; + width: 250px; + overflow: hidden; + background: #EFEFF7; + padding: 10px 10px 1000px 10px; +} + +#Main { + margin-left: 300px; + font-size: 140%; +} + + +h1, h2, h3, h4 { + margin: 0; + font-family: Tahoma, Verdana, Arial, Helvetica, sans-serif; + word-wrap: break-word; +} + +h1 { + padding-top: 10px; + margin-bottom: 1.2em; + font-size: 1.6em; +} + +h2 { + margin-top: 2.5em; + margin-bottom: 0.6em; + font-size: 1.25em; +} + +h3 { + margin-top: 1.2em; + margin-bottom: 0.3em; + font-size: 1.0em; +} + +p { + margin: 0 0 1.2em 0; + line-height: 140%; +} + +img.toggle { + display: none; +} + diff --git a/tools/Sandcastle/Presentation/vs2005/website/site.master b/tools/Sandcastle/Presentation/vs2005/website/site.master index a87aca9..e323e1b 100644 --- a/tools/Sandcastle/Presentation/vs2005/website/site.master +++ b/tools/Sandcastle/Presentation/vs2005/website/site.master @@ -1,36 +1,36 @@ -<%@ Master Language="C#" %>
-
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-<script runat="server">
-
-</script>
-
-<html xmlns="http://www.w3.org/1999/xhtml" >
-<head id="Head1" runat="server">
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- <title>API Documentation</title>
- <link href="styles/presentation.css" rel="stylesheet" type="text/css" />
- <link href="site.css" rel="Stylesheet" type="text/css" />
- <script type="text/javascript">
- function OnLoadImage(e) {}
- </script>
-</head>
-<body>
- <form id="SandcastleSampleSite" runat="server">
- <div id="Header"><div id="Logo"></div>Sandcastle Sample Site</div>
- <div class="clearFloats"></div>
-
- <div id="Toc">
- <asp:TreeView ID="TocTree" DataSourceID="SiteMapSource" EnableClientScript="false" runat="server"></asp:TreeView>
- <asp:SiteMapDataSource ID="SiteMapSource" ShowStartingNode="false" Runat="server" />
- </div>
-
- <div id="Main">
- <asp:contentplaceholder id="MainBody" runat="server">
- </asp:contentplaceholder>
- </div>
-
- </form>
-</body>
-</html>
+<%@ Master Language="C#" %> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + +<script runat="server"> + +</script> + +<html xmlns="http://www.w3.org/1999/xhtml" > +<head id="Head1" runat="server"> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> + <title>API Documentation</title> + <link href="styles/presentation.css" rel="stylesheet" type="text/css" /> + <link href="site.css" rel="Stylesheet" type="text/css" /> + <script type="text/javascript"> + function OnLoadImage(e) {} + </script> +</head> +<body> + <form id="SandcastleSampleSite" runat="server"> + <div id="Header"><div id="Logo"></div>Sandcastle Sample Site</div> + <div class="clearFloats"></div> + + <div id="Toc"> + <asp:TreeView ID="TocTree" DataSourceID="SiteMapSource" EnableClientScript="false" runat="server"></asp:TreeView> + <asp:SiteMapDataSource ID="SiteMapSource" ShowStartingNode="false" Runat="server" /> + </div> + + <div id="Main"> + <asp:contentplaceholder id="MainBody" runat="server"> + </asp:contentplaceholder> + </div> + + </form> +</body> +</html> diff --git a/tools/Sandcastle/Presentation/vs2005/website/web.config b/tools/Sandcastle/Presentation/vs2005/website/web.config index 65235d3..634639d 100644 --- a/tools/Sandcastle/Presentation/vs2005/website/web.config +++ b/tools/Sandcastle/Presentation/vs2005/website/web.config @@ -1,7 +1,7 @@ -<?xml version="1.0"?>
-<configuration>
- <system.web>
- <!-- Ensure that   gets properly encoded as a non-breaking space. -->
- <globalization fileEncoding="utf-8" />
- </system.web>
-</configuration>
+<?xml version="1.0"?> +<configuration> + <system.web> + <!-- Ensure that   gets properly encoded as a non-breaking space. --> + <globalization fileEncoding="utf-8" /> + </system.web> +</configuration> diff --git a/tools/Sandcastle/Presentation/vs2005/website/web.sitemap b/tools/Sandcastle/Presentation/vs2005/website/web.sitemap index bb1575e..f4a0e16 100644 --- a/tools/Sandcastle/Presentation/vs2005/website/web.sitemap +++ b/tools/Sandcastle/Presentation/vs2005/website/web.sitemap @@ -1,7 +1,7 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
- <siteMapNode>
- <siteMapNode url="default.aspx" title="Welcome to Sandcastle" description=""/>
- <siteMapNode siteMapFile="api/web.sitemap"/>
- </siteMapNode>
-</siteMap>
+<?xml version="1.0" encoding="utf-8" ?> +<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > + <siteMapNode> + <siteMapNode url="default.aspx" title="Welcome to Sandcastle" description=""/> + <siteMapNode siteMapFile="api/web.sitemap"/> + </siteMapNode> +</siteMap> diff --git a/tools/Sandcastle/ProductionTools/ChmBuilder.config b/tools/Sandcastle/ProductionTools/ChmBuilder.config index 652484e..4382125 100644 --- a/tools/Sandcastle/ProductionTools/ChmBuilder.config +++ b/tools/Sandcastle/ProductionTools/ChmBuilder.config @@ -1,32 +1,32 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <languages>
- <language id="1033" codepage="65001" name="0x409 English (United States)" />
- <language id="2052" codepage="936" name="0x804 Chinese (PRC)" />
- </languages>
-
- <!-- {0}:projectName, {1}:defaultTopic, {2}:Language -->
- <hhpTemplate>
- <line>[OPTIONS]</line>
- <!--
- <line>Binary Index=No</line>
- -->
- <line>Compatibility=1.1 or later</line>
- <line>Compiled file={0}.chm</line>
- <line>Contents file={0}.hhc</line>
- <line>Index file={0}.hhk</line>
- <line>Default Topic={1}</line>
- <line>Full-text search=Yes</line>
- <line>Language={2}</line>
- <line>Title={0}</line>
-
- <line>[FILES]</line>
- <line>icons\*.gif</line>
- <line>art\*.gif</line>
- <line>media\*.gif</line>
- <line>scripts\*.js</line>
- <line>styles\*.css</line>
- <line>html\*.htm</line>
- <line>[INFOTYPES]</line>
- </hhpTemplate>
+<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <languages> + <language id="1033" codepage="65001" name="0x409 English (United States)" /> + <language id="2052" codepage="936" name="0x804 Chinese (PRC)" /> + </languages> + + <!-- {0}:projectName, {1}:defaultTopic, {2}:Language --> + <hhpTemplate> + <line>[OPTIONS]</line> + <!-- + <line>Binary Index=No</line> + --> + <line>Compatibility=1.1 or later</line> + <line>Compiled file={0}.chm</line> + <line>Contents file={0}.hhc</line> + <line>Index file={0}.hhk</line> + <line>Default Topic={1}</line> + <line>Full-text search=Yes</line> + <line>Language={2}</line> + <line>Title={0}</line> + + <line>[FILES]</line> + <line>icons\*.gif</line> + <line>art\*.gif</line> + <line>media\*.gif</line> + <line>scripts\*.js</line> + <line>styles\*.css</line> + <line>html\*.htm</line> + <line>[INFOTYPES]</line> + </hhpTemplate> </configuration>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTools/DBCSFix.exe.config b/tools/Sandcastle/ProductionTools/DBCSFix.exe.config index c10d8d5..17fa07c 100644 --- a/tools/Sandcastle/ProductionTools/DBCSFix.exe.config +++ b/tools/Sandcastle/ProductionTools/DBCSFix.exe.config @@ -1,15 +1,15 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<configuration>
- <appSettings>
- <add key="1028" value="big5"/>
- <add key="3076" value="big5"/>
- <add key="1029" value="Windows-1250"/>
- <add key="1038" value="Windows-1250"/>
- <add key="1045" value="Windows-1250"/>
- <add key="1049" value="Windows-1251"/>
- <add key="1055" value="Windows-1254"/>
- <add key="1041" value="shift-jis"/>
- <add key="1042" value="ks_c_5601-1987"/>
- <add key="2052" value="gb2312"/>
- </appSettings>
+<?xml version="1.0" encoding="utf-8" ?> +<configuration> + <appSettings> + <add key="1028" value="big5"/> + <add key="3076" value="big5"/> + <add key="1029" value="Windows-1250"/> + <add key="1038" value="Windows-1250"/> + <add key="1045" value="Windows-1250"/> + <add key="1049" value="Windows-1251"/> + <add key="1055" value="Windows-1254"/> + <add key="1041" value="shift-jis"/> + <add key="1042" value="ks_c_5601-1987"/> + <add key="2052" value="gb2312"/> + </appSettings> </configuration>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTools/MRefBuilder.config b/tools/Sandcastle/ProductionTools/MRefBuilder.config index ba86f4e..24a3a51 100644 --- a/tools/Sandcastle/ProductionTools/MRefBuilder.config +++ b/tools/Sandcastle/ProductionTools/MRefBuilder.config @@ -1,88 +1,88 @@ -<configuration>
- <dduetools>
- <platform version="2.0" path="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\" />
- <resolver type="Microsoft.Ddue.Tools.Reflection.AssemblyResolver" assembly="%DXROOT%\ProductionTools\MRefBuilder.exe" use-gac="false" />
- <!--
- <namer type="Microsoft.Ddue.Tools.Reflection.OrcasNamer" assembly="Microsoft.Ddue.Tools.Reflection.dll" />
- <addins>
- <addin type="Microsoft.Ddue.Tools.XamlAttachedMembersAddIn" assembly="MRefBuilder.exe" />
- </addins>
- <apiFilter expose="true">
- <namespace name="System" expose="true">
- <type name="Object" expose="false">
- <member name="ToString" expose="true" />
- </type>
- </namespace>
- </apiFilter>
- -->
- <attributeFilter expose="true">
- <!-- Most attributes in System.ComponentModel control designer behavior. Don't show them. -->
- <!-- The expections are attributes relating to data binding. Do show them. -->
- <namespace name="System.ComponentModel" expose="false">
- <type name="BindableAttribute" expose="true"/>
- <type name="ComplexBindingPropertiesAttribute" expose="true"/>
- <type name="DataObjectAttribute" expose="true"/>
- <type name="DefaultBindingPropertyAttribute" expose="true"/>
- <type name="ListBindableAttribute" expose="true"/>
- <type name="LookupBindingPropertiesAttribute" expose="true"/>
- <type name="SettingsBindableAttribute" expose="true"/>
- <type name="TypeConverterAttribute" expose="true"/>
- </namespace>
- <namespace name="System.ComponentModel.Design" expose="false" />
- <!-- Most attributes in System.Diagnostics control debugger behavior. Don't show them. -->
- <namespace name="System.Diagnostics" expose="false">
- <type name="ConditionalAttribute" expose="true"/>
- <type name="EventLogPermissionAttribute" expose="true"/>
- <type name="PerformanceCounterPermissionAttribute" expose="true"/>
- </namespace>
- <!-- Attributes in System.Diagnostics.CodeAnalysis control interaction with FxCop. Don't show them. -->
- <namespace name="System.Diagnostics.CodeAnalysis" expose="false" />
- <!-- Attributes in System.EnterpriseServices control obscure details of COM+ interop. Don't show them. -->
- <namespace name="System.EnterpriseServices" expose="false" />
- <!-- The DefaultMember attribute is usually compiler-generated. Users will see it from the member syntax. -->
- <namespace name="System.Reflection" expose="true">
- <type name="DefaultMemberAttribute" expose="false" />
- </namespace>
- <!-- Attributes in System.Runtime.CompilerServices control obscure details of compilation. Don't show them. -->
- <namespace name="System.Runtime.CompilerServices" expose="false" />
- <!-- Attributes in System.Runtime.ConstrinedExecution control obscure details of compilation. Don't show them. -->
- <namespace name="System.Runtime.ConstrainedExecution" expose="false" />
- <!-- Most atributes in System.Runtime.InteropServices control obscure details of COM interop. Don't show them. -->
- <namespace name="System.Runtime.InteropServices" expose="false">
- <type name="ComVisibleAttribute" expose="true"/>
- <type name="GuidAttribute" expose="true"/>
- <type name="ClassInterfaceAttribute" expose="true"/>
- <type name="InterfaceTypeAttribute" expose="true"/>
- </namespace>
- <!-- Attributes in System.Runtime.Versioning control details of resource loading. Don't show them. -->
- <namespace name="System.Runtime.Versioning" expose="false" />
- <!-- Attributes in System.Security might hint as security implementation details. Don't show them. -->
- <namespace name="System.Security" expose="false">
- <type name="AllowPartiallyTrustedCallersAttribute" expose="true" />
- </namespace>
- <!-- Attributes in System.Web.Compilation control interaction with the Expression designer. Don't show them. -->
- <namespace name="System.Web.Compilation" expose="false" />
- <!-- The ASP.NET team only wants these attributes exposed from their namespace. Their logic ecscapes me, but here it is. -->
- <namespace name="System.Web.UI" expose="false">
- <type name="ControlValuePropertyAttribute" expose="true"/>
- <type name="ValidationPropertyAttribute" expose="true"/>
- <type name="WebResourceAttribute" expose="true"/>
- <type name="TemplateContainerAttribute" expose="true"/>
- <type name="ThemeableAttribute" expose="true"/>
- <type name="TemplateInstanceAttribute" expose="true"/>
- </namespace>
- <!-- Don't show attributes related to XAML serialization details. -->
- <namespace name="System.Windows.Markup" expose="true">
- <type name="ConstructorArgumentAttribute" expose="false" />
- <type name="DependsOnAttribute" expose="false" />
- <type name="DesignerSerializationOptionsAttribute" expose="false" />
- <type name="ValueSerializerAttribute" expose="false" />
- <type name="XmlnsCompatibleWithAttribute" expose="false" />
- <type name="XmlnsDefinitionAttribute" expose="false" />
- <type name="XmlnsPrefixAttribute" expose="false" />
- </namespace>
- <!-- Attributes in System.Xml.Serialization control obscure details of XML serialization. Don't show them.-->
- <namespace name="System.Xml.Serialization" expose="false" />
- </attributeFilter>
- </dduetools>
-</configuration>
+<configuration> + <dduetools> + <platform version="2.0" path="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\" /> + <resolver type="Microsoft.Ddue.Tools.Reflection.AssemblyResolver" assembly="%DXROOT%\ProductionTools\MRefBuilder.exe" use-gac="false" /> + <!-- + <namer type="Microsoft.Ddue.Tools.Reflection.OrcasNamer" assembly="Microsoft.Ddue.Tools.Reflection.dll" /> + <addins> + <addin type="Microsoft.Ddue.Tools.XamlAttachedMembersAddIn" assembly="MRefBuilder.exe" /> + </addins> + <apiFilter expose="true"> + <namespace name="System" expose="true"> + <type name="Object" expose="false"> + <member name="ToString" expose="true" /> + </type> + </namespace> + </apiFilter> + --> + <attributeFilter expose="true"> + <!-- Most attributes in System.ComponentModel control designer behavior. Don't show them. --> + <!-- The expections are attributes relating to data binding. Do show them. --> + <namespace name="System.ComponentModel" expose="false"> + <type name="BindableAttribute" expose="true"/> + <type name="ComplexBindingPropertiesAttribute" expose="true"/> + <type name="DataObjectAttribute" expose="true"/> + <type name="DefaultBindingPropertyAttribute" expose="true"/> + <type name="ListBindableAttribute" expose="true"/> + <type name="LookupBindingPropertiesAttribute" expose="true"/> + <type name="SettingsBindableAttribute" expose="true"/> + <type name="TypeConverterAttribute" expose="true"/> + </namespace> + <namespace name="System.ComponentModel.Design" expose="false" /> + <!-- Most attributes in System.Diagnostics control debugger behavior. Don't show them. --> + <namespace name="System.Diagnostics" expose="false"> + <type name="ConditionalAttribute" expose="true"/> + <type name="EventLogPermissionAttribute" expose="true"/> + <type name="PerformanceCounterPermissionAttribute" expose="true"/> + </namespace> + <!-- Attributes in System.Diagnostics.CodeAnalysis control interaction with FxCop. Don't show them. --> + <namespace name="System.Diagnostics.CodeAnalysis" expose="false" /> + <!-- Attributes in System.EnterpriseServices control obscure details of COM+ interop. Don't show them. --> + <namespace name="System.EnterpriseServices" expose="false" /> + <!-- The DefaultMember attribute is usually compiler-generated. Users will see it from the member syntax. --> + <namespace name="System.Reflection" expose="true"> + <type name="DefaultMemberAttribute" expose="false" /> + </namespace> + <!-- Attributes in System.Runtime.CompilerServices control obscure details of compilation. Don't show them. --> + <namespace name="System.Runtime.CompilerServices" expose="false" /> + <!-- Attributes in System.Runtime.ConstrinedExecution control obscure details of compilation. Don't show them. --> + <namespace name="System.Runtime.ConstrainedExecution" expose="false" /> + <!-- Most atributes in System.Runtime.InteropServices control obscure details of COM interop. Don't show them. --> + <namespace name="System.Runtime.InteropServices" expose="false"> + <type name="ComVisibleAttribute" expose="true"/> + <type name="GuidAttribute" expose="true"/> + <type name="ClassInterfaceAttribute" expose="true"/> + <type name="InterfaceTypeAttribute" expose="true"/> + </namespace> + <!-- Attributes in System.Runtime.Versioning control details of resource loading. Don't show them. --> + <namespace name="System.Runtime.Versioning" expose="false" /> + <!-- Attributes in System.Security might hint as security implementation details. Don't show them. --> + <namespace name="System.Security" expose="false"> + <type name="AllowPartiallyTrustedCallersAttribute" expose="true" /> + </namespace> + <!-- Attributes in System.Web.Compilation control interaction with the Expression designer. Don't show them. --> + <namespace name="System.Web.Compilation" expose="false" /> + <!-- The ASP.NET team only wants these attributes exposed from their namespace. Their logic ecscapes me, but here it is. --> + <namespace name="System.Web.UI" expose="false"> + <type name="ControlValuePropertyAttribute" expose="true"/> + <type name="ValidationPropertyAttribute" expose="true"/> + <type name="WebResourceAttribute" expose="true"/> + <type name="TemplateContainerAttribute" expose="true"/> + <type name="ThemeableAttribute" expose="true"/> + <type name="TemplateInstanceAttribute" expose="true"/> + </namespace> + <!-- Don't show attributes related to XAML serialization details. --> + <namespace name="System.Windows.Markup" expose="true"> + <type name="ConstructorArgumentAttribute" expose="false" /> + <type name="DependsOnAttribute" expose="false" /> + <type name="DesignerSerializationOptionsAttribute" expose="false" /> + <type name="ValueSerializerAttribute" expose="false" /> + <type name="XmlnsCompatibleWithAttribute" expose="false" /> + <type name="XmlnsDefinitionAttribute" expose="false" /> + <type name="XmlnsPrefixAttribute" expose="false" /> + </namespace> + <!-- Attributes in System.Xml.Serialization control obscure details of XML serialization. Don't show them.--> + <namespace name="System.Xml.Serialization" expose="false" /> + </attributeFilter> + </dduetools> +</configuration> diff --git a/tools/Sandcastle/ProductionTools/scbuild.ps1 b/tools/Sandcastle/ProductionTools/scbuild.ps1 index 9438e54..62461c4 100644 --- a/tools/Sandcastle/ProductionTools/scbuild.ps1 +++ b/tools/Sandcastle/ProductionTools/scbuild.ps1 @@ -1,740 +1,740 @@ -#########################################################################################
-#
-# scbuild.ps1 -- Generic Sandcastle Build Script
-#
-# SYNOPSIS
-# scbuild.ps1 <options>
-#
-# OPTIONS
-# -BuildAssemblerConfig {file} -- user specified BuildAssembler config file for
-# non-website builds. Use -WebBuildConfig to specify the config file for web
-# builds.
-# Default: The config file specified by the doc model.
-#
-# -BuildChm, -BuildHxs, -BuildWebsite -- select build target.
-#
-# -Clean -- remove Sandcastle temporary directory. Use this option to clean up
-# temporary files and for a clean build, including framework dependencies.
-#
-# -Config {file} -- read options from config file. Options specified on the
-# command line take precedence over options in the config file.
-#
-# -Dependencies {files} -- comma separated list of other dependencies (other
-# than the framework).
-#
-# -DxRoot {path} -- alternate DxRoot. Default: DxRoot environment variable.
-#
-# -Framework {version} -- build depends on framework version specified. Currently
-# supported: 2.0, 3.0. Default: no framework dependencies.
-#
-# -Lcid {version} -- locale ID for help file. Default: 1033
-#
-# -Mixin {file} -- PowerShell script that gets loaded after initialization and
-# after the doc model has been loaded. It can be used to add functionality
-# and to override functions in this script, except Init.
-#
-# -Name {path-name} -- name of output file (or directory for Website builds).
-# Default: The name and location of the first assembly listed.
-#
-# -Sources {files} -- comma separated list of files that should be added to the
-# output, both assemblies and related comment files. To build, you must
-# specify at least one assembly and comment file.
-#
-# -Style {name} -- name of supported presentation style. Default: vs2005.
-#
-# -TempDir {path} -- alternate location for the Sandcastle temporary directory.
-# Default: .\SandcastleTemp
-#
-# -WebBuildConfig {file} -- user specified BuildAssembler config file for website
-# builds. Default: The config file specified by the doc model.
-#
-# -WebTemplate (path) -- all files from the folder will be copied to the website
-# output directory. Default: The website folder underneath the selected
-# presentation folder, $env:DxRoot\Presentation\$Style\website\*
-#
-# EXAMPLE
-# To build a help file for the assembly named test.dll, compile your project
-# with comment file generation. Then with the files test.dll and comments.xml,
-# run the following command. The help file will be named test.chm.
-#
-# scbuild -framework 2.0 -sources test.dll,comments.xml -BuildChm
-#
-# To build a website use:
-# scbuild -framework 2.0 -sources test.dll,comments.xml -BuildWebsite
-#
-# PREREQUISITES
-# - Sandcastle
-# - .NET 2.0
-# - PowerShell 1.0
-# - hhc.exe -- to compile CHM files
-# - hxcomp.exe -- to compile HxS files
-#
-#########################################################################################
-
-param (
- # Actions
- [Switch]$BuildChm,
- [Switch]$BuildHxS,
- [Switch]$BuildWebsite,
- [Switch]$Clean,
- [Switch]$Test,
-
- # Resources, Folders, Options
- [String]$BuildAssemblerConfig,
- [String]$Config,
- [Object[]]$Dependencies,
- [String]$DxRoot,
- [String]$Framework,
- [String]$Lcid,
- [String]$Mixin,
- [String]$Name,
- [Object[]]$Sources,
- [String]$Style,
- [String]$TempDir,
- [String]$WebBuildConfig,
- [String]$WebTemplate
-)
-
-#
-# Framework locations.
-#
-$FrameworkDirs = @{
- "2.0" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727";
- "3.0" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727",
- "$env:SystemRoot\Microsoft.NET\Framework\v3.0",
- "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.0";
- "3.5" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727",
- "$env:SystemRoot\Microsoft.NET\Framework\v3.0",
- "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.0",
- "$env:SystemRoot\Microsoft.NET\Framework\v3.5",
- "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.5";
-}
-
-
-#
-# Init -- Process command line options and config file. Options specified on the command
-# line override the options specified in the config file. Reasonable defaults are used
-# if we can guess. Also, some rudimentary error checking.
-#
-function Init {
- # Sync .NET current directory with PowerShell (required for [String]::GetFullPath())
- [IO.Directory]::SetCurrentDirectory($pwd)
-
- # Read options from the config file.
- if ($Config) {
- if (test-path $Config) {
- . $Config
- }
- else {
- FatalError "Config file does not exist: $Config"
- }
- }
-
- # Initialize options: Config file takes precedence over defaults; command line
- # takes precedence over config file. Also, perform some basic sanity checks
- # before spending a lot of time in the build script.
-
- InitOption DxRoot $env:DxRoot
- if (-not $Script:DxRoot) {
- FatalError "You must specify a value for DxRoot. It should point to the root folder of your Sandcastle installation."
- }
- $Script:MrefBuilder = "$($Script:DxRoot)\ProductionTools\MrefBuilder.exe"
- $Script:XslTransform = "$($Script:DxRoot)\ProductionTools\XslTransform.exe"
- $Script:BuildAssembler = "$($Script:DxRoot)\ProductionTools\BuildAssembler.exe"
- $Script:ChmBuilder = "$($Script:DxRoot)\ProductionTools\ChmBuilder.exe"
- $Script:DBCSFix = "$($Script:DxRoot)\ProductionTools\DBCSFix.exe"
-
- if (-not (test-path $Script:MrefBuilder)) {
- FatalError "DxRoot does not point to a valid Sandcastle installation: $($DxRoot))"
- }
-
- # Make sure we have the help compiler if we're building a CHM.
- if ($BuildChm -and -not (get-command hhc)) {
- WriteInfo 'No help compiler found. Make sure hhc.exe is installed and in your PATH varaible.'
- WriteInfo 'You can download hhc from: http://msdn2.microsoft.com/en-us/library/ms669985.aspx'
- FatalError 'Cannot proceed without a help compiler.'
- }
- $Script:HHC = "hhc"
-
- # Make sure we have hxcomp.exe if we're building a HxS.
- if ($BuildHxS -and -not (get-command hxcomp)) {
- WriteInfo 'HxS compiler not found. Make sure hxcomp.exe is installed and in your PATH variable.'
- WriteInfo 'You can download hxcomp from: http://www.microsoft.com/downloads/details.aspx?FamilyID=51a5c65b-c020-4e08-8ac0-3eb9c06996f4&DisplayLang=en'
- FatalError 'Cannot proceed without hxcomp.exe.'
- }
- $Script:HxComp = "hxcomp"
-
- InitOption Clean $false
- InitOption BuildChm $false
- InitOption BuildHxS $false
- InitOption BuildWebSite $false
- InitOption Test $false
- if (-not ($Clean -or $BuildChm -or $BuildHxs -or $BuildWebsite -or $Test)) {
- FatalError "You must specify a build action: -Clean, -BuildChm, -BuildHxs, -BuildWebsite."
- }
-
- InitOption Dependencies @()
- $Script:Dependencies = ExpandWildcards $Script:Dependencies
-
- InitOption Framework ""
- if ($Script:Framework -and (-not $FrameworkDirs[$Script:Framework])) {
- FatalError "Unknown framework version: $($Script:Framework)"
- }
-
- InitOption Lcid "1033"
-
- InitOption Mixin ""
-
- InitOption Name ""
-
- InitOption Style vs2005
- if ($Script:Style -and -not (test-path "$Script:DxRoot\Presentation\$($Style)\DocModel.ps1")) {
- FatalError "Unknown presentation style: $($Script:Style)"
- }
-
- InitOption BuildAssemblerConfig "$DxRoot\Presentation\$Style\Configuration\sandcastle-scbuild.config"
- $Script:BuildAssemblerConfig = [IO.Path]::GetFullPath($Script:BuildAssemblerConfig)
-
- InitOption WebBuildConfig "$DxRoot\Presentation\$Style\Configuration\sandcastle-webref.config"
- $Script:WebBuildConfig = [IO.Path]::GetFullPath($Script:WebBuildConfig)
-
- InitOption Sources @()
- $Script:Sources = ExpandWildcards $Script:Sources
- if ($Script:Sources) {
- $Script:Comments = @()
- $Script:Targets = @()
- foreach ($src in $Script:Sources) {
- switch -regex ($src) {
- '.*\.xml$' {
- $Script:Comments += $src
- }
- '.*\.(dll|exe)$' {
- $Script:Targets += $src
- }
- default {
- FatalError "Unknown source file type: $src"
- }
- }
- }
- }
-
- InitOption TempDir "."
- $Script:TempDir = [IO.Path]::GetFullPath("$($Script:TempDir)\SandcastleTemp")
-
- if ($BuildChm -or $BuildHxS -or $BuildWebsite) {
- if (-not $Targets) {
- FatalError "To generate documentation, you must specify one or more target assemblies."
- }
- if (-not $Comments) {
- FatalError "To generate documentation, you must specify one or more comments files."
- }
- }
-
- if (-not $Script:Name -and $Script:Targets) {
- $Script:Name = [IO.Path]::ChangeExtension($Script:Targets[0].FullName, '')
- }
-
- if ($Script:Name) {
- $sn = [IO.Path]::GetFullPath($Script:Name)
- $Script:Name = [IO.Path]::GetFileNameWithoutExtension($sn)
- $Script:OutputDir = [IO.Path]::GetDirectoryName($sn)
- }
-
- $Script:WebOutputDir = "$($Script:OutputDir)\$($Script:Name)_website"
-
- InitOption WebTemplate "$DxRoot\Presentation\$Style\website"
- $Script:WebTemplate = [IO.Path]::GetFullPath($Script:WebTemplate)
-}
-
-
-#
-# Run Actions
-#
-function Run {
- WriteInfo 'Sandcastle build...'
-
- if ($BuildWebsite -and -not $DocModelSupportsWebBuild) {
- FatalError "The '$Style' style does not support web builds."
- }
-
- if ($Test) {
- Test
- exit 0
- }
-
- if ($Clean) {
- Clean -all
- }
- elseif ($BuildChm -or $BuildHxs -or $BuildWebsite) {
- Clean
- }
-
- if ($BuildChm -or $BuildHxS -or $BuildWebsite) {
- MakeSandcastleDirs
- }
-
- if ($BuildChm) {
- BuildChm
- }
-
- if ($BuildHxS) {
- BuildHxs
- }
-
- if ($BuildWebsite) {
- BuildWebsite
- }
-}
-
-
-#
-# Clean Out Generated Content
-#
-function Clean {
- param (
- [Switch]$All
- )
- if ($TempDir -match '.*(\\|/)SandcastleTemp$') {
- if (test-path $TempDir) {
- WriteInfo "Cleaning up temporary files."
- if ($All) {
- SafeDelete $TempDir
- }
- else {
- SafeDelete $TempDir\ReflectionData\*.xml
- SafeDelete $TempDir\ReflectionData\Dependencies
- SafeDelete $TempDir\Output
- SafeDelete $TempDir\Chm
- SafeDelete $TempDir\Intellisense
- SafeDelete $TempDir\Comments
- SafeDelete $TempDir\TopicInfo
- }
- SafeDelete $WebOutputDir
- }
- }
- else {
- FatalError "Cannot clean up temporary files, because the path name does not end in 'SandcastleTemp' as expected.`n+ Name: $TempDir"
- }
-}
-
-
-#
-# MakeSandcastleDirs
-#
-function MakeSandcastleDirs {
- MakePath $TempDir\ReflectionData\Framework
- MakePath $TempDir\ReflectionData\Dependencies
- MakePath $TempDir\Comments
- MakePath $TempDir\Output
- MakePath $TempDir\TopicInfo
-}
-
-
-#
-# Build CHM File
-#
-function BuildChm {
- WriteInfo "Building CHM file..."
- GenerateReflectionData
- GenerateManifest
- CreateOutputTemplate
- CopyComments
- RunBuildAssembler $BuildAssemblerConfig
- CreateToc
- CreateChmTemplate
- CreateChmProject
- CompileHelpProject
- CopyChmToOutputDir
-}
-
-
-#
-# Build HxS File
-#
-function BuildHxs {
- WriteInfo "Building HxS file..."
- if (-not (test-path "$TempDir\ReflectionData\targets.xml")) {
- GenerateReflectionData
- GenerateManifest
- CreateOutputTemplate
- CopyComments
- RunBuildAssembler $BuildAssemblerConfig
- CreateToc
- }
- CreateHxsTemplate
- CreateHxsToc
- CreateHxsProject
- CompileHxsProject
- CopyHxsToOutputDir
-}
-
-
-#
-# Build MSDN Style Website
-#
-function BuildWebsite {
- WriteInfo "Building website..."
- if (-not (test-path "$TempDir\ReflectionData\targets.xml")) {
- GenerateReflectionData
- GenerateManifest
- CopyComments
- CreateToc
- }
- CreateWebsiteTemplate
- RunBuildAssembler $WebBuildConfig
- CreateSitemap
-}
-
-
-#
-# Generate reflection data if the current style does not match the style the caller is
-# looking for.
-#
-function GenerateReflectionData {
- $fdirs = $($FrameworkDirs[$Framework])
- if ($fdirs -is [String]) {
- $fdirs = @($fdirs)
- }
- foreach ($fdir in $fdirs) {
- GenerateDependencyReflectionData (get-childitem -r -include "*.dll" $fdir) $TempDir\ReflectionData\Framework
- }
- GenerateDependencyReflectionData $Dependencies "$TempDir\ReflectionData\Dependencies"
- GenerateTargetReflectionData $Targets "$TempDir\ReflectionData\targets.xml"
-}
-
-
-#
-# GenerateDependencyReflectionData - generates reflection data for framework and other
-# dependencies. The data is used as is from MrefBuilder. No post processing occurs. The
-# file is generated only if the output doesn't exist already.
-#
-function GenerateDependencyReflectionData($assemblies, $outputDir) {
- if ($assemblies -is [String]) {
- $assemblies = ExpandWildcards $assemblies
- }
- if ($assemblies) {
- foreach ($pn in $assemblies) {
- $outputFile = "$outputDir\$([IO.Path]::ChangeExtension($pn.Name, '.xml'))"
- if (-not (test-path $outputFile)) {
- GenerateTargetReflectionData $pn $outputFile
- copy-item -ea SilentlyContinue $([IO.Path]::ChangeExtension($pn.FullName, '.xml')) $TempDir\Comments
- }
- }
- }
-}
-
-
-#
-# GenerateTargetReflectionData - generates a reflection data file for the target
-# assemblies. The data for all target assemblies is combined into a single file and then
-# post processed using different transforms depending on doc style.
-#
-function GenerateTargetReflectionData($assemblies, $outputFile) {
- if ($assemblies -is [String]) {
- $assemblies = ExpandWildcards $assemblies
- }
- WriteInfo "Generate reflection data for: $assemblies"
- $targetFiles = [String]::Join(" ", ($assemblies | foreach {"`"$_`""}))
- $tmpName = "$TempDir\tmp.xml"
- &$MrefBuilder $targetFiles /out:$tmpName
- PostProcessReflectionData $tmpName $outputFile
- SafeDelete $tmpName
-}
-
-#
-# PostProcessReflectionData sub -- the Doc Model implementation should run any post processing
-# transforms required.
-#
-function PostProcessReflectionData {
- FatalError "Doc Model must define a PostProcessReflectionData function."
-}
-
-
-#
-# GenerateManifest() -- creates a manifest from the reflection data. This requires
-# all of the reflection data in a single XML file.
-#
-function GenerateManifest {
- WriteInfo "Generating manifest..."
- &$XslTransform $TempDir\ReflectionData\targets.xml `
- /xsl:$DxRoot\ProductionTransforms\ReflectionToManifest.xsl `
- /out:$TempDir\manifest.xml
-}
-
-
-#
-# CreateToc -- an override for this function is defined in DocModel.ps1. It should
-# create a TOC file from the reflection data.
-#
-function CreateToc {
- FatalError "Doc Model must define a CreateToc function."
-}
-
-
-#
-# RunBuildAssembler
-#
-function RunBuildAssembler($configFile) {
- $env:DxTempDir = $TempDir
- $env:DxWebOutputDir = $WebOutputDir
- &$BuildAssembler $TempDir\manifest.xml `
- /config:$configFile
-}
-
-#
-# CreateChmTemplate stub -- an override for this function is defined in DocModel.ps1. It
-# creates a template for the build.
-#
-function CreateChmTemplate {
- FatalError "Doc Model must define a CreateChmTemplate function."
-}
-
-
-#
-# CreateHxsTemplate stub -- the override for this function defined in DocModel.ps1
-# creates a template needed for the HxS build.
-#
-function CreateHxsTemplate {
- FatalError "Doc Model must define a CreateHxsTemplate function."
-}
-
-
-#
-# CreateChmProject
-#
-function CreateChmProject {
- WriteInfo "Creating CHM project file."
- &$ChmBuilder /project:$Name /html:$TempDir\Output\html /lcid:$Lcid /toc:$TempDir\toc.xml /out:$TempDir\chm
-
- if ($Style -eq "prototype") {
- &$XslTransform $TempDir\ReflectionData\targets.xml `
- /xsl:$DxRoot\ProductionTransforms\ReflectionToChmIndex.xsl `
- /out:"$TempDir\chm\$($Name).hhk"
- }
-
- &$DBCSFix /d:$TempDir\chm /l:$Lcid
-}
-
-
-#
-# CopyComments
-#
-function CopyComments {
- WriteInfo "Copying comments..."
- foreach ($pn in $Comments) {
- WriteInfo "+ $pn"
- copy-item $pn $TempDir\Comments
- }
-}
-
-
-#
-# CompileHelpProject
-#
-function CompileHelpProject {
- WriteInfo "Compiling help project."
- &$HHC $TempDir\chm\$Name.hhp
-}
-
-
-#
-# CopyChmToOutputDir
-#
-function CopyChmToOutputDir {
- WriteInfo "Copying CHM file to output directory: $OutputDir"
- MakePath $OutputDir
- copy-item -force "$TempDir\chm\$($Name).chm" $OutputDir
-}
-
-
-#
-# CreateHxsToc
-#
-function CreateHxsToc {
- WriteInfo "Creating HXS TOC file."
- &$XslTransform $TempDir\toc.xml `
- /xsl:$DxRoot\ProductionTransforms\TocToHxSContents.xsl `
- /out:"$TempDir\Output\$($Name).HxT"
-}
-
-
-#
-# CreateHxsProject
-#
-function CreateHxsProject {
- WriteInfo "Creating HxS project."
- &$XslTransform $TempDir\toc.xml `
- /xsl:$DxRoot\ProductionTransforms\CreateHxC.xsl `
- /arg:"fileNamePrefix=$($Name)" `
- /out:"$TempDir\Output\$($Name).HxC"
-}
-
-
-#
-# CompileHxsProject
-#
-function CompileHxsProject {
- WriteInfo "Compiling help project."
- &$HxComp -p $TempDir\Output\$Name.HxC
-}
-
-
-#
-# CopyHxsToOutputDir
-#
-function CopyHxsToOutputDir {
- WriteInfo "Copying HxS file to output directory: $OutputDir"
- MakePath $OutputDir
- copy-item -force "$TempDir\Output\$($Name).HxS" $OutputDir
-}
-
-
-#
-# Test -- show options.
-#
-function Test {
- echo "*** TEST ONLY ***"
- echo "+ Clean: $Clean"
- echo "+ BuildChm: $BuildChm"
- echo "+ BuildHxs: $BuildHxs"
- echo "+ BuildWebsite: $BuildWebsite"
- echo "---"
- echo "+ BuildAssemblerConfig: $BuildAssemblerConfig"
- echo "+ [Comments]: $Comments"
- echo "+ Config: $Config"
- echo "+ Dependencies: $Dependencies"
- echo "+ DxRoot: $DxRoot"
- echo "+ Lcid: $Lcid"
- echo "+ Mixin: $Mixin"
- echo "+ Framework: $Framework -> $($FrameworkDirs[$Script:Framework])"
- echo "+ Mixin: $Mixin"
- echo "+ Name: $Name"
- echo "+ [OutputDir]: $OutputDir"
- echo "+ Sources: $Sources"
- echo "+ Style: $Style"
- echo "+ [Targets]: $Targets"
- echo "+ TempDir: $TempDir"
- echo "+ WebOutputDir: $WebOutputDir"
- echo "+ WebBuildConfig: $WebBuildConfig"
- echo "+ WebTemplate: $WebTemplate"
-}
-
-
-#========================================================================================
-# Utility Functions
-#========================================================================================
-
-#
-# Init option from config file or default, if not specified on the command line.
-#
-function InitOption($_name_, $_default_ = $null) {
- $_v_ = get-variable -scope script -name $_name_ -value
- if (-not $_v_) {
- $_v_ = get-variable -scope local -name $_name_ -value -ea SilentlyContinue
- if (-not $_v_) {
- $_v_ = $_default_
- }
- set-variable -scope script -name $_name_ -value $_v_
- }
-}
-
-
-#
-# Expand wildcard characters in file names and return array of path names.
-#
-function ExpandWildcards($spec) {
- if ($spec -is [String]) {
- return get-childitem $spec
- }
- elseif ($spec -is [System.Collections.IEnumerable]) {
- $r = @()
- foreach ($s in $spec) {
- $r += (get-childitem $s)
- }
- return $r
- }
- else {
- return @()
- }
-}
-
-
-#
-# SafeDelete - this function attempts to deal with temporary file locks being held
-# by other programs on the files we're trying to delete.
-#
-# NOTE: This function is *EXPERIMENTAL*. It does not time out and does not
-# distinguish between locking related errors and everything else that might cause a
-# permanent failure.
-#
-function SafeDelete($path) {
- $n = 0
- while (test-path $path) {
- if ($n -gt 0) {
- start-sleep -m 100
- }
- remove-item -r -force -ea SilentlyContinue $path
- $n++
- if (-not ($n % 10)) {
- WriteWarning "Waiting to delete $path ($([int]($n / 10)))"
- }
- }
-}
-
-
-#
-# MakePath - create specified path unless it exists already.
-#
-function MakePath($path) {
- if (-not (test-path $path)) {
- [void](mkdir $path)
- }
-}
-
-
-function WriteInfo {
- foreach ($arg in $Args) {
- echo "$arg"
- }
-}
-
-
-function WriteDebug {
- foreach ($arg in $Args) {
- echo "DEBUG: $arg"
- }
-}
-
-
-function WriteWarning {
- foreach ($arg in $Args) {
- echo "WARNING: $arg"
- }
-}
-
-
-function FatalError {
- foreach ($arg in $Args) {
- echo "ERROR: $arg"
- }
- exit 1
-}
-
-
-#========================================================================================
-# Init and Run Actions
-#========================================================================================
-
-Init
-. $DxRoot\Presentation\$Style\DocModel.ps1
-
-
-#
-# Load user mix-ins.
-#
-if ($Mixin) {
- WriteInfo "Loading user mixins from: $Mixin"
- . $Mixin
-}
-
+######################################################################################### +# +# scbuild.ps1 -- Generic Sandcastle Build Script +# +# SYNOPSIS +# scbuild.ps1 <options> +# +# OPTIONS +# -BuildAssemblerConfig {file} -- user specified BuildAssembler config file for +# non-website builds. Use -WebBuildConfig to specify the config file for web +# builds. +# Default: The config file specified by the doc model. +# +# -BuildChm, -BuildHxs, -BuildWebsite -- select build target. +# +# -Clean -- remove Sandcastle temporary directory. Use this option to clean up +# temporary files and for a clean build, including framework dependencies. +# +# -Config {file} -- read options from config file. Options specified on the +# command line take precedence over options in the config file. +# +# -Dependencies {files} -- comma separated list of other dependencies (other +# than the framework). +# +# -DxRoot {path} -- alternate DxRoot. Default: DxRoot environment variable. +# +# -Framework {version} -- build depends on framework version specified. Currently +# supported: 2.0, 3.0. Default: no framework dependencies. +# +# -Lcid {version} -- locale ID for help file. Default: 1033 +# +# -Mixin {file} -- PowerShell script that gets loaded after initialization and +# after the doc model has been loaded. It can be used to add functionality +# and to override functions in this script, except Init. +# +# -Name {path-name} -- name of output file (or directory for Website builds). +# Default: The name and location of the first assembly listed. +# +# -Sources {files} -- comma separated list of files that should be added to the +# output, both assemblies and related comment files. To build, you must +# specify at least one assembly and comment file. +# +# -Style {name} -- name of supported presentation style. Default: vs2005. +# +# -TempDir {path} -- alternate location for the Sandcastle temporary directory. +# Default: .\SandcastleTemp +# +# -WebBuildConfig {file} -- user specified BuildAssembler config file for website +# builds. Default: The config file specified by the doc model. +# +# -WebTemplate (path) -- all files from the folder will be copied to the website +# output directory. Default: The website folder underneath the selected +# presentation folder, $env:DxRoot\Presentation\$Style\website\* +# +# EXAMPLE +# To build a help file for the assembly named test.dll, compile your project +# with comment file generation. Then with the files test.dll and comments.xml, +# run the following command. The help file will be named test.chm. +# +# scbuild -framework 2.0 -sources test.dll,comments.xml -BuildChm +# +# To build a website use: +# scbuild -framework 2.0 -sources test.dll,comments.xml -BuildWebsite +# +# PREREQUISITES +# - Sandcastle +# - .NET 2.0 +# - PowerShell 1.0 +# - hhc.exe -- to compile CHM files +# - hxcomp.exe -- to compile HxS files +# +######################################################################################### + +param ( + # Actions + [Switch]$BuildChm, + [Switch]$BuildHxS, + [Switch]$BuildWebsite, + [Switch]$Clean, + [Switch]$Test, + + # Resources, Folders, Options + [String]$BuildAssemblerConfig, + [String]$Config, + [Object[]]$Dependencies, + [String]$DxRoot, + [String]$Framework, + [String]$Lcid, + [String]$Mixin, + [String]$Name, + [Object[]]$Sources, + [String]$Style, + [String]$TempDir, + [String]$WebBuildConfig, + [String]$WebTemplate +) + +# +# Framework locations. +# +$FrameworkDirs = @{ + "2.0" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727"; + "3.0" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727", + "$env:SystemRoot\Microsoft.NET\Framework\v3.0", + "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.0"; + "3.5" = "$env:SystemRoot\Microsoft.NET\Framework\v2.0.50727", + "$env:SystemRoot\Microsoft.NET\Framework\v3.0", + "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.0", + "$env:SystemRoot\Microsoft.NET\Framework\v3.5", + "$env:ProgramFiles\Reference Assemblies\Microsoft\Framework\v3.5"; +} + + +# +# Init -- Process command line options and config file. Options specified on the command +# line override the options specified in the config file. Reasonable defaults are used +# if we can guess. Also, some rudimentary error checking. +# +function Init { + # Sync .NET current directory with PowerShell (required for [String]::GetFullPath()) + [IO.Directory]::SetCurrentDirectory($pwd) + + # Read options from the config file. + if ($Config) { + if (test-path $Config) { + . $Config + } + else { + FatalError "Config file does not exist: $Config" + } + } + + # Initialize options: Config file takes precedence over defaults; command line + # takes precedence over config file. Also, perform some basic sanity checks + # before spending a lot of time in the build script. + + InitOption DxRoot $env:DxRoot + if (-not $Script:DxRoot) { + FatalError "You must specify a value for DxRoot. It should point to the root folder of your Sandcastle installation." + } + $Script:MrefBuilder = "$($Script:DxRoot)\ProductionTools\MrefBuilder.exe" + $Script:XslTransform = "$($Script:DxRoot)\ProductionTools\XslTransform.exe" + $Script:BuildAssembler = "$($Script:DxRoot)\ProductionTools\BuildAssembler.exe" + $Script:ChmBuilder = "$($Script:DxRoot)\ProductionTools\ChmBuilder.exe" + $Script:DBCSFix = "$($Script:DxRoot)\ProductionTools\DBCSFix.exe" + + if (-not (test-path $Script:MrefBuilder)) { + FatalError "DxRoot does not point to a valid Sandcastle installation: $($DxRoot))" + } + + # Make sure we have the help compiler if we're building a CHM. + if ($BuildChm -and -not (get-command hhc)) { + WriteInfo 'No help compiler found. Make sure hhc.exe is installed and in your PATH varaible.' + WriteInfo 'You can download hhc from: http://msdn2.microsoft.com/en-us/library/ms669985.aspx' + FatalError 'Cannot proceed without a help compiler.' + } + $Script:HHC = "hhc" + + # Make sure we have hxcomp.exe if we're building a HxS. + if ($BuildHxS -and -not (get-command hxcomp)) { + WriteInfo 'HxS compiler not found. Make sure hxcomp.exe is installed and in your PATH variable.' + WriteInfo 'You can download hxcomp from: http://www.microsoft.com/downloads/details.aspx?FamilyID=51a5c65b-c020-4e08-8ac0-3eb9c06996f4&DisplayLang=en' + FatalError 'Cannot proceed without hxcomp.exe.' + } + $Script:HxComp = "hxcomp" + + InitOption Clean $false + InitOption BuildChm $false + InitOption BuildHxS $false + InitOption BuildWebSite $false + InitOption Test $false + if (-not ($Clean -or $BuildChm -or $BuildHxs -or $BuildWebsite -or $Test)) { + FatalError "You must specify a build action: -Clean, -BuildChm, -BuildHxs, -BuildWebsite." + } + + InitOption Dependencies @() + $Script:Dependencies = ExpandWildcards $Script:Dependencies + + InitOption Framework "" + if ($Script:Framework -and (-not $FrameworkDirs[$Script:Framework])) { + FatalError "Unknown framework version: $($Script:Framework)" + } + + InitOption Lcid "1033" + + InitOption Mixin "" + + InitOption Name "" + + InitOption Style vs2005 + if ($Script:Style -and -not (test-path "$Script:DxRoot\Presentation\$($Style)\DocModel.ps1")) { + FatalError "Unknown presentation style: $($Script:Style)" + } + + InitOption BuildAssemblerConfig "$DxRoot\Presentation\$Style\Configuration\sandcastle-scbuild.config" + $Script:BuildAssemblerConfig = [IO.Path]::GetFullPath($Script:BuildAssemblerConfig) + + InitOption WebBuildConfig "$DxRoot\Presentation\$Style\Configuration\sandcastle-webref.config" + $Script:WebBuildConfig = [IO.Path]::GetFullPath($Script:WebBuildConfig) + + InitOption Sources @() + $Script:Sources = ExpandWildcards $Script:Sources + if ($Script:Sources) { + $Script:Comments = @() + $Script:Targets = @() + foreach ($src in $Script:Sources) { + switch -regex ($src) { + '.*\.xml$' { + $Script:Comments += $src + } + '.*\.(dll|exe)$' { + $Script:Targets += $src + } + default { + FatalError "Unknown source file type: $src" + } + } + } + } + + InitOption TempDir "." + $Script:TempDir = [IO.Path]::GetFullPath("$($Script:TempDir)\SandcastleTemp") + + if ($BuildChm -or $BuildHxS -or $BuildWebsite) { + if (-not $Targets) { + FatalError "To generate documentation, you must specify one or more target assemblies." + } + if (-not $Comments) { + FatalError "To generate documentation, you must specify one or more comments files." + } + } + + if (-not $Script:Name -and $Script:Targets) { + $Script:Name = [IO.Path]::ChangeExtension($Script:Targets[0].FullName, '') + } + + if ($Script:Name) { + $sn = [IO.Path]::GetFullPath($Script:Name) + $Script:Name = [IO.Path]::GetFileNameWithoutExtension($sn) + $Script:OutputDir = [IO.Path]::GetDirectoryName($sn) + } + + $Script:WebOutputDir = "$($Script:OutputDir)\$($Script:Name)_website" + + InitOption WebTemplate "$DxRoot\Presentation\$Style\website" + $Script:WebTemplate = [IO.Path]::GetFullPath($Script:WebTemplate) +} + + +# +# Run Actions +# +function Run { + WriteInfo 'Sandcastle build...' + + if ($BuildWebsite -and -not $DocModelSupportsWebBuild) { + FatalError "The '$Style' style does not support web builds." + } + + if ($Test) { + Test + exit 0 + } + + if ($Clean) { + Clean -all + } + elseif ($BuildChm -or $BuildHxs -or $BuildWebsite) { + Clean + } + + if ($BuildChm -or $BuildHxS -or $BuildWebsite) { + MakeSandcastleDirs + } + + if ($BuildChm) { + BuildChm + } + + if ($BuildHxS) { + BuildHxs + } + + if ($BuildWebsite) { + BuildWebsite + } +} + + +# +# Clean Out Generated Content +# +function Clean { + param ( + [Switch]$All + ) + if ($TempDir -match '.*(\\|/)SandcastleTemp$') { + if (test-path $TempDir) { + WriteInfo "Cleaning up temporary files." + if ($All) { + SafeDelete $TempDir + } + else { + SafeDelete $TempDir\ReflectionData\*.xml + SafeDelete $TempDir\ReflectionData\Dependencies + SafeDelete $TempDir\Output + SafeDelete $TempDir\Chm + SafeDelete $TempDir\Intellisense + SafeDelete $TempDir\Comments + SafeDelete $TempDir\TopicInfo + } + SafeDelete $WebOutputDir + } + } + else { + FatalError "Cannot clean up temporary files, because the path name does not end in 'SandcastleTemp' as expected.`n+ Name: $TempDir" + } +} + + +# +# MakeSandcastleDirs +# +function MakeSandcastleDirs { + MakePath $TempDir\ReflectionData\Framework + MakePath $TempDir\ReflectionData\Dependencies + MakePath $TempDir\Comments + MakePath $TempDir\Output + MakePath $TempDir\TopicInfo +} + + +# +# Build CHM File +# +function BuildChm { + WriteInfo "Building CHM file..." + GenerateReflectionData + GenerateManifest + CreateOutputTemplate + CopyComments + RunBuildAssembler $BuildAssemblerConfig + CreateToc + CreateChmTemplate + CreateChmProject + CompileHelpProject + CopyChmToOutputDir +} + + +# +# Build HxS File +# +function BuildHxs { + WriteInfo "Building HxS file..." + if (-not (test-path "$TempDir\ReflectionData\targets.xml")) { + GenerateReflectionData + GenerateManifest + CreateOutputTemplate + CopyComments + RunBuildAssembler $BuildAssemblerConfig + CreateToc + } + CreateHxsTemplate + CreateHxsToc + CreateHxsProject + CompileHxsProject + CopyHxsToOutputDir +} + + +# +# Build MSDN Style Website +# +function BuildWebsite { + WriteInfo "Building website..." + if (-not (test-path "$TempDir\ReflectionData\targets.xml")) { + GenerateReflectionData + GenerateManifest + CopyComments + CreateToc + } + CreateWebsiteTemplate + RunBuildAssembler $WebBuildConfig + CreateSitemap +} + + +# +# Generate reflection data if the current style does not match the style the caller is +# looking for. +# +function GenerateReflectionData { + $fdirs = $($FrameworkDirs[$Framework]) + if ($fdirs -is [String]) { + $fdirs = @($fdirs) + } + foreach ($fdir in $fdirs) { + GenerateDependencyReflectionData (get-childitem -r -include "*.dll" $fdir) $TempDir\ReflectionData\Framework + } + GenerateDependencyReflectionData $Dependencies "$TempDir\ReflectionData\Dependencies" + GenerateTargetReflectionData $Targets "$TempDir\ReflectionData\targets.xml" +} + + +# +# GenerateDependencyReflectionData - generates reflection data for framework and other +# dependencies. The data is used as is from MrefBuilder. No post processing occurs. The +# file is generated only if the output doesn't exist already. +# +function GenerateDependencyReflectionData($assemblies, $outputDir) { + if ($assemblies -is [String]) { + $assemblies = ExpandWildcards $assemblies + } + if ($assemblies) { + foreach ($pn in $assemblies) { + $outputFile = "$outputDir\$([IO.Path]::ChangeExtension($pn.Name, '.xml'))" + if (-not (test-path $outputFile)) { + GenerateTargetReflectionData $pn $outputFile + copy-item -ea SilentlyContinue $([IO.Path]::ChangeExtension($pn.FullName, '.xml')) $TempDir\Comments + } + } + } +} + + +# +# GenerateTargetReflectionData - generates a reflection data file for the target +# assemblies. The data for all target assemblies is combined into a single file and then +# post processed using different transforms depending on doc style. +# +function GenerateTargetReflectionData($assemblies, $outputFile) { + if ($assemblies -is [String]) { + $assemblies = ExpandWildcards $assemblies + } + WriteInfo "Generate reflection data for: $assemblies" + $targetFiles = [String]::Join(" ", ($assemblies | foreach {"`"$_`""})) + $tmpName = "$TempDir\tmp.xml" + &$MrefBuilder $targetFiles /out:$tmpName + PostProcessReflectionData $tmpName $outputFile + SafeDelete $tmpName +} + +# +# PostProcessReflectionData sub -- the Doc Model implementation should run any post processing +# transforms required. +# +function PostProcessReflectionData { + FatalError "Doc Model must define a PostProcessReflectionData function." +} + + +# +# GenerateManifest() -- creates a manifest from the reflection data. This requires +# all of the reflection data in a single XML file. +# +function GenerateManifest { + WriteInfo "Generating manifest..." + &$XslTransform $TempDir\ReflectionData\targets.xml ` + /xsl:$DxRoot\ProductionTransforms\ReflectionToManifest.xsl ` + /out:$TempDir\manifest.xml +} + + +# +# CreateToc -- an override for this function is defined in DocModel.ps1. It should +# create a TOC file from the reflection data. +# +function CreateToc { + FatalError "Doc Model must define a CreateToc function." +} + + +# +# RunBuildAssembler +# +function RunBuildAssembler($configFile) { + $env:DxTempDir = $TempDir + $env:DxWebOutputDir = $WebOutputDir + &$BuildAssembler $TempDir\manifest.xml ` + /config:$configFile +} + +# +# CreateChmTemplate stub -- an override for this function is defined in DocModel.ps1. It +# creates a template for the build. +# +function CreateChmTemplate { + FatalError "Doc Model must define a CreateChmTemplate function." +} + + +# +# CreateHxsTemplate stub -- the override for this function defined in DocModel.ps1 +# creates a template needed for the HxS build. +# +function CreateHxsTemplate { + FatalError "Doc Model must define a CreateHxsTemplate function." +} + + +# +# CreateChmProject +# +function CreateChmProject { + WriteInfo "Creating CHM project file." + &$ChmBuilder /project:$Name /html:$TempDir\Output\html /lcid:$Lcid /toc:$TempDir\toc.xml /out:$TempDir\chm + + if ($Style -eq "prototype") { + &$XslTransform $TempDir\ReflectionData\targets.xml ` + /xsl:$DxRoot\ProductionTransforms\ReflectionToChmIndex.xsl ` + /out:"$TempDir\chm\$($Name).hhk" + } + + &$DBCSFix /d:$TempDir\chm /l:$Lcid +} + + +# +# CopyComments +# +function CopyComments { + WriteInfo "Copying comments..." + foreach ($pn in $Comments) { + WriteInfo "+ $pn" + copy-item $pn $TempDir\Comments + } +} + + +# +# CompileHelpProject +# +function CompileHelpProject { + WriteInfo "Compiling help project." + &$HHC $TempDir\chm\$Name.hhp +} + + +# +# CopyChmToOutputDir +# +function CopyChmToOutputDir { + WriteInfo "Copying CHM file to output directory: $OutputDir" + MakePath $OutputDir + copy-item -force "$TempDir\chm\$($Name).chm" $OutputDir +} + + +# +# CreateHxsToc +# +function CreateHxsToc { + WriteInfo "Creating HXS TOC file." + &$XslTransform $TempDir\toc.xml ` + /xsl:$DxRoot\ProductionTransforms\TocToHxSContents.xsl ` + /out:"$TempDir\Output\$($Name).HxT" +} + + +# +# CreateHxsProject +# +function CreateHxsProject { + WriteInfo "Creating HxS project." + &$XslTransform $TempDir\toc.xml ` + /xsl:$DxRoot\ProductionTransforms\CreateHxC.xsl ` + /arg:"fileNamePrefix=$($Name)" ` + /out:"$TempDir\Output\$($Name).HxC" +} + + +# +# CompileHxsProject +# +function CompileHxsProject { + WriteInfo "Compiling help project." + &$HxComp -p $TempDir\Output\$Name.HxC +} + + +# +# CopyHxsToOutputDir +# +function CopyHxsToOutputDir { + WriteInfo "Copying HxS file to output directory: $OutputDir" + MakePath $OutputDir + copy-item -force "$TempDir\Output\$($Name).HxS" $OutputDir +} + + +# +# Test -- show options. +# +function Test { + echo "*** TEST ONLY ***" + echo "+ Clean: $Clean" + echo "+ BuildChm: $BuildChm" + echo "+ BuildHxs: $BuildHxs" + echo "+ BuildWebsite: $BuildWebsite" + echo "---" + echo "+ BuildAssemblerConfig: $BuildAssemblerConfig" + echo "+ [Comments]: $Comments" + echo "+ Config: $Config" + echo "+ Dependencies: $Dependencies" + echo "+ DxRoot: $DxRoot" + echo "+ Lcid: $Lcid" + echo "+ Mixin: $Mixin" + echo "+ Framework: $Framework -> $($FrameworkDirs[$Script:Framework])" + echo "+ Mixin: $Mixin" + echo "+ Name: $Name" + echo "+ [OutputDir]: $OutputDir" + echo "+ Sources: $Sources" + echo "+ Style: $Style" + echo "+ [Targets]: $Targets" + echo "+ TempDir: $TempDir" + echo "+ WebOutputDir: $WebOutputDir" + echo "+ WebBuildConfig: $WebBuildConfig" + echo "+ WebTemplate: $WebTemplate" +} + + +#======================================================================================== +# Utility Functions +#======================================================================================== + +# +# Init option from config file or default, if not specified on the command line. +# +function InitOption($_name_, $_default_ = $null) { + $_v_ = get-variable -scope script -name $_name_ -value + if (-not $_v_) { + $_v_ = get-variable -scope local -name $_name_ -value -ea SilentlyContinue + if (-not $_v_) { + $_v_ = $_default_ + } + set-variable -scope script -name $_name_ -value $_v_ + } +} + + +# +# Expand wildcard characters in file names and return array of path names. +# +function ExpandWildcards($spec) { + if ($spec -is [String]) { + return get-childitem $spec + } + elseif ($spec -is [System.Collections.IEnumerable]) { + $r = @() + foreach ($s in $spec) { + $r += (get-childitem $s) + } + return $r + } + else { + return @() + } +} + + +# +# SafeDelete - this function attempts to deal with temporary file locks being held +# by other programs on the files we're trying to delete. +# +# NOTE: This function is *EXPERIMENTAL*. It does not time out and does not +# distinguish between locking related errors and everything else that might cause a +# permanent failure. +# +function SafeDelete($path) { + $n = 0 + while (test-path $path) { + if ($n -gt 0) { + start-sleep -m 100 + } + remove-item -r -force -ea SilentlyContinue $path + $n++ + if (-not ($n % 10)) { + WriteWarning "Waiting to delete $path ($([int]($n / 10)))" + } + } +} + + +# +# MakePath - create specified path unless it exists already. +# +function MakePath($path) { + if (-not (test-path $path)) { + [void](mkdir $path) + } +} + + +function WriteInfo { + foreach ($arg in $Args) { + echo "$arg" + } +} + + +function WriteDebug { + foreach ($arg in $Args) { + echo "DEBUG: $arg" + } +} + + +function WriteWarning { + foreach ($arg in $Args) { + echo "WARNING: $arg" + } +} + + +function FatalError { + foreach ($arg in $Args) { + echo "ERROR: $arg" + } + exit 1 +} + + +#======================================================================================== +# Init and Run Actions +#======================================================================================== + +Init +. $DxRoot\Presentation\$Style\DocModel.ps1 + + +# +# Load user mix-ins. +# +if ($Mixin) { + WriteInfo "Loading user mixins from: $Mixin" + . $Mixin +} + Run
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/AddFriendlyFilenames.xsl b/tools/Sandcastle/ProductionTransforms/AddFriendlyFilenames.xsl index 4873c00..b8daed4 100644 --- a/tools/Sandcastle/ProductionTransforms/AddFriendlyFilenames.xsl +++ b/tools/Sandcastle/ProductionTransforms/AddFriendlyFilenames.xsl @@ -1,97 +1,97 @@ -<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- xmlns:ddue="urn:ddue-extensions"
- version="1.1">
-
- <msxsl:script language="C#" implements-prefix="ddue">
- <msxsl:using namespace="System" />
- <![CDATA[
- public static string getFileName(string id) {
- string fileName = id.Replace(':', '_').Replace('<', '_').Replace('>', '_');
-
- if (fileName.IndexOf(".#ctor") != -1 && fileName.IndexOf("Overload") == -1)
- {
- fileName = "C_" + fileName.Substring(2);
- fileName = fileName.Replace(".#ctor", ".ctor");
- }
- else if (fileName.IndexOf(".#ctor") != -1 && fileName.IndexOf("Overload") != -1)
- {
- fileName = fileName.Replace("Overload", "O_T");
- fileName = fileName.Replace(".#ctor", ".ctor");
- }
- else if (fileName.IndexOf(".#cctor") != -1 && fileName.IndexOf("Overload") == -1)
- {
- fileName = "C_" + fileName.Substring(2);
- fileName = fileName.Replace(".#cctor", ".cctor");
- }
- else if (fileName.IndexOf(".#cctor") != -1 && fileName.IndexOf("Overload") != -1)
- {
- fileName = fileName.Replace("Overload", "O_T");
- fileName = fileName.Replace(".#cctor", ".cctor");
- }
- else if (fileName.IndexOf("Overload") != -1)
- {
- fileName = fileName.Replace("Overload", "O_T");
- }
-
- fileName = fileName.Replace('.', '_').Replace('#', '_');
-
- int paramStart = fileName.IndexOf('(');
- if(paramStart != -1)
- {
- fileName = fileName.Substring(0, paramStart) + GenerateParametersCode(id.Substring(paramStart));
- }
-
- return fileName;
- }
-
- private static string GenerateParametersCode(string parameterSection)
- {
- // TODO: figure out a consistent algorithm that works regardless of runtime version
- int code = parameterSection.GetHashCode();
-
- int parameterCount = 1;
-
- for(int count = 0; count < parameterSection.Length; count += 1)
- {
- int c = (int) parameterSection[count];
-
- if(c == ',')
- ++parameterCount;
- }
-
- // format as (# of parameters)_(semi-unique hex code)
- return string.Format("_{1}_{0:x8}", code, parameterCount);
- }
- ]]>
- </msxsl:script>
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:template match="/">
- <reflection>
- <xsl:apply-templates select="/*/assemblies" />
- <xsl:apply-templates select="/*/apis" />
- </reflection>
- </xsl:template>
-
- <xsl:template match="assemblies">
- <xsl:copy-of select="." />
- </xsl:template>
-
- <xsl:template match="apis">
- <apis>
- <xsl:apply-templates select="api" />
- </apis>
- </xsl:template>
-
- <xsl:template match="api">
- <api id="{@id}">
- <xsl:copy-of select="*" />
- <file name="{ddue:getFileName(@id)}" />
- </api>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + xmlns:ddue="urn:ddue-extensions" + version="1.1"> + + <msxsl:script language="C#" implements-prefix="ddue"> + <msxsl:using namespace="System" /> + <![CDATA[ + public static string getFileName(string id) { + string fileName = id.Replace(':', '_').Replace('<', '_').Replace('>', '_'); + + if (fileName.IndexOf(".#ctor") != -1 && fileName.IndexOf("Overload") == -1) + { + fileName = "C_" + fileName.Substring(2); + fileName = fileName.Replace(".#ctor", ".ctor"); + } + else if (fileName.IndexOf(".#ctor") != -1 && fileName.IndexOf("Overload") != -1) + { + fileName = fileName.Replace("Overload", "O_T"); + fileName = fileName.Replace(".#ctor", ".ctor"); + } + else if (fileName.IndexOf(".#cctor") != -1 && fileName.IndexOf("Overload") == -1) + { + fileName = "C_" + fileName.Substring(2); + fileName = fileName.Replace(".#cctor", ".cctor"); + } + else if (fileName.IndexOf(".#cctor") != -1 && fileName.IndexOf("Overload") != -1) + { + fileName = fileName.Replace("Overload", "O_T"); + fileName = fileName.Replace(".#cctor", ".cctor"); + } + else if (fileName.IndexOf("Overload") != -1) + { + fileName = fileName.Replace("Overload", "O_T"); + } + + fileName = fileName.Replace('.', '_').Replace('#', '_'); + + int paramStart = fileName.IndexOf('('); + if(paramStart != -1) + { + fileName = fileName.Substring(0, paramStart) + GenerateParametersCode(id.Substring(paramStart)); + } + + return fileName; + } + + private static string GenerateParametersCode(string parameterSection) + { + // TODO: figure out a consistent algorithm that works regardless of runtime version + int code = parameterSection.GetHashCode(); + + int parameterCount = 1; + + for(int count = 0; count < parameterSection.Length; count += 1) + { + int c = (int) parameterSection[count]; + + if(c == ',') + ++parameterCount; + } + + // format as (# of parameters)_(semi-unique hex code) + return string.Format("_{1}_{0:x8}", code, parameterCount); + } + ]]> + </msxsl:script> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:template match="/"> + <reflection> + <xsl:apply-templates select="/*/assemblies" /> + <xsl:apply-templates select="/*/apis" /> + </reflection> + </xsl:template> + + <xsl:template match="assemblies"> + <xsl:copy-of select="." /> + </xsl:template> + + <xsl:template match="apis"> + <apis> + <xsl:apply-templates select="api" /> + </apis> + </xsl:template> + + <xsl:template match="api"> + <api id="{@id}"> + <xsl:copy-of select="*" /> + <file name="{ddue:getFileName(@id)}" /> + </api> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/AddGuidFilenames.xsl b/tools/Sandcastle/ProductionTransforms/AddGuidFilenames.xsl index f6dcd0b..b378cce 100644 --- a/tools/Sandcastle/ProductionTransforms/AddGuidFilenames.xsl +++ b/tools/Sandcastle/ProductionTransforms/AddGuidFilenames.xsl @@ -1,47 +1,47 @@ -<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- xmlns:ddue="urn:ddue-extensions"
- version="1.1">
-
- <msxsl:script language="C#" implements-prefix="ddue">
- <msxsl:using namespace="System.Security.Cryptography" />
- <![CDATA[
- public static string getFileName(string id) {
- HashAlgorithm md5 = HashAlgorithm.Create("MD5");
- byte[] input = Encoding.UTF8.GetBytes(id);
- byte[] output = md5.ComputeHash(input);
- Guid guid = new Guid(output);
- return( guid.ToString() );
- }
- ]]>
- </msxsl:script>
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:template match="/">
- <reflection>
- <xsl:apply-templates select="/reflection/assemblies" />
- <xsl:apply-templates select="/reflection/apis" />
- </reflection>
- </xsl:template>
-
- <xsl:template match="assemblies">
- <xsl:copy-of select="." />
- </xsl:template>
-
- <xsl:template match="apis">
- <apis>
- <xsl:apply-templates select="api" />
- </apis>
- </xsl:template>
-
- <xsl:template match="api">
- <api id="{@id}">
- <xsl:copy-of select="*" />
- <file name="{ddue:getFileName(@id)}" />
- </api>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + xmlns:ddue="urn:ddue-extensions" + version="1.1"> + + <msxsl:script language="C#" implements-prefix="ddue"> + <msxsl:using namespace="System.Security.Cryptography" /> + <![CDATA[ + public static string getFileName(string id) { + HashAlgorithm md5 = HashAlgorithm.Create("MD5"); + byte[] input = Encoding.UTF8.GetBytes(id); + byte[] output = md5.ComputeHash(input); + Guid guid = new Guid(output); + return( guid.ToString() ); + } + ]]> + </msxsl:script> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:template match="/"> + <reflection> + <xsl:apply-templates select="/reflection/assemblies" /> + <xsl:apply-templates select="/reflection/apis" /> + </reflection> + </xsl:template> + + <xsl:template match="assemblies"> + <xsl:copy-of select="." /> + </xsl:template> + + <xsl:template match="apis"> + <apis> + <xsl:apply-templates select="api" /> + </apis> + </xsl:template> + + <xsl:template match="api"> + <api id="{@id}"> + <xsl:copy-of select="*" /> + <file name="{ddue:getFileName(@id)}" /> + </api> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/AddXamlSyntaxData.xsl b/tools/Sandcastle/ProductionTransforms/AddXamlSyntaxData.xsl index e0c7ecd..5204996 100644 --- a/tools/Sandcastle/ProductionTransforms/AddXamlSyntaxData.xsl +++ b/tools/Sandcastle/ProductionTransforms/AddXamlSyntaxData.xsl @@ -1,141 +1,141 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <!-- <xsl:key name="typeIndex" match="/reflection/types/type" use="@id" /> -->
- <xsl:key name="defaultContructorIndex" match="/*/apis/api[apidata[@subgroup='constructor'] and not(parameters) and memberdata[@visibility='public']]" use="@id" />
- <xsl:key name="typeIndex" match="/*/apis/api[apidata[@group='type']]" use="@id" />
-
- <xsl:key name="settablePropertyIndex" match="/*/apis/api[apidata[@subgroup='property']][propertydata[@set='true']][(memberdata[@visibility='public'] and not(propertydata[@set-visibility!='public'])) or propertydata[@set-visibility='public']]" use="@id" />
-
- <xsl:template match="/">
- <reflection>
-
- <!-- assemblies and namespaces get copied undisturbed -->
- <xsl:copy-of select="/*/assemblies" />
-
- <apis>
- <xsl:apply-templates select="/*/apis/api" />
- </apis>
-
- </reflection>
- </xsl:template>
-
- <xsl:template match="api">
- <xsl:choose>
- <xsl:when test="apidata[@group='type']">
- <xsl:call-template name="updateTypeNode"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="GetContentProperty">
- <xsl:if test="apidata[@subgroup='class' or @subgroup='structure']">
- <xsl:variable name="contentPropertyName">
- <xsl:value-of select="attributes/attribute[type[contains(@api,'.ContentPropertyAttribute')]]/argument/value"/>
- </xsl:variable>
- <xsl:if test="$contentPropertyName!=''">
- <xsl:value-of select="concat('P:',substring-after(@id,'T:'),'.',$contentPropertyName)"/>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="updateTypeNode">
- <xsl:variable name="defaultConstructor">
- <xsl:if test="apidata[@subgroup='class' or @subgroup='structure']">
- <xsl:for-each select="elements/element">
- <xsl:if test="key('defaultContructorIndex',@api)">
- <xsl:value-of select="@api"/>
- </xsl:if>
- </xsl:for-each>
- </xsl:if>
- </xsl:variable>
- <xsl:variable name="hasSettableProperties">
- <xsl:if test="apidata[@subgroup='structure']">
- <xsl:for-each select="elements/element">
- <xsl:if test="key('settablePropertyIndex',@api)">true</xsl:if>
- </xsl:for-each>
- </xsl:if>
- </xsl:variable>
- <xsl:variable name="contentPropertyId">
- <xsl:call-template name="GetContentProperty"/>
- </xsl:variable>
- <xsl:variable name="typeSubGroup">
- <xsl:value-of select="apidata/@subgroup"/>
- </xsl:variable>
- <api>
- <xsl:copy-of select="@*"/>
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name()='typedata'">
- <typedata>
- <xsl:copy-of select="@*"/>
- <xsl:if test="normalize-space($defaultConstructor)!=''">
- <xsl:attribute name="defaultConstructor">
- <xsl:value-of select="normalize-space($defaultConstructor)"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$contentPropertyId!=''">
- <xsl:attribute name="contentProperty">
- <xsl:value-of select="$contentPropertyId"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:if test="$typeSubGroup='structure' and normalize-space($hasSettableProperties)=''">
- <xsl:attribute name="noSettableProperties">
- <xsl:value-of select="'true'"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:copy-of select="*"/>
- </typedata>
- </xsl:when>
- <xsl:when test="local-name()='family'">
- <xsl:choose>
- <xsl:when test="$contentPropertyId=''">
- <family>
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name()='ancestors'">
- <ancestors>
- <xsl:for-each select="type">
- <xsl:variable name="ancestorContentPropertyId">
- <xsl:for-each select="key('typeIndex', @api)">
- <xsl:call-template name="GetContentProperty"/>
- </xsl:for-each>
- </xsl:variable>
- <type>
- <xsl:copy-of select="@*"/>
- <xsl:if test="$ancestorContentPropertyId!=''">
- <xsl:attribute name="contentProperty">
- <xsl:value-of select="$ancestorContentPropertyId"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:copy-of select="*"/>
- </type>
- </xsl:for-each>
- </ancestors>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </family>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1" xmlns:msxsl="urn:schemas-microsoft-com:xslt"> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <!-- <xsl:key name="typeIndex" match="/reflection/types/type" use="@id" /> --> + <xsl:key name="defaultContructorIndex" match="/*/apis/api[apidata[@subgroup='constructor'] and not(parameters) and memberdata[@visibility='public']]" use="@id" /> + <xsl:key name="typeIndex" match="/*/apis/api[apidata[@group='type']]" use="@id" /> + + <xsl:key name="settablePropertyIndex" match="/*/apis/api[apidata[@subgroup='property']][propertydata[@set='true']][(memberdata[@visibility='public'] and not(propertydata[@set-visibility!='public'])) or propertydata[@set-visibility='public']]" use="@id" /> + + <xsl:template match="/"> + <reflection> + + <!-- assemblies and namespaces get copied undisturbed --> + <xsl:copy-of select="/*/assemblies" /> + + <apis> + <xsl:apply-templates select="/*/apis/api" /> + </apis> + + </reflection> + </xsl:template> + + <xsl:template match="api"> + <xsl:choose> + <xsl:when test="apidata[@group='type']"> + <xsl:call-template name="updateTypeNode"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="GetContentProperty"> + <xsl:if test="apidata[@subgroup='class' or @subgroup='structure']"> + <xsl:variable name="contentPropertyName"> + <xsl:value-of select="attributes/attribute[type[contains(@api,'.ContentPropertyAttribute')]]/argument/value"/> + </xsl:variable> + <xsl:if test="$contentPropertyName!=''"> + <xsl:value-of select="concat('P:',substring-after(@id,'T:'),'.',$contentPropertyName)"/> + </xsl:if> + </xsl:if> + </xsl:template> + + <xsl:template name="updateTypeNode"> + <xsl:variable name="defaultConstructor"> + <xsl:if test="apidata[@subgroup='class' or @subgroup='structure']"> + <xsl:for-each select="elements/element"> + <xsl:if test="key('defaultContructorIndex',@api)"> + <xsl:value-of select="@api"/> + </xsl:if> + </xsl:for-each> + </xsl:if> + </xsl:variable> + <xsl:variable name="hasSettableProperties"> + <xsl:if test="apidata[@subgroup='structure']"> + <xsl:for-each select="elements/element"> + <xsl:if test="key('settablePropertyIndex',@api)">true</xsl:if> + </xsl:for-each> + </xsl:if> + </xsl:variable> + <xsl:variable name="contentPropertyId"> + <xsl:call-template name="GetContentProperty"/> + </xsl:variable> + <xsl:variable name="typeSubGroup"> + <xsl:value-of select="apidata/@subgroup"/> + </xsl:variable> + <api> + <xsl:copy-of select="@*"/> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name()='typedata'"> + <typedata> + <xsl:copy-of select="@*"/> + <xsl:if test="normalize-space($defaultConstructor)!=''"> + <xsl:attribute name="defaultConstructor"> + <xsl:value-of select="normalize-space($defaultConstructor)"/> + </xsl:attribute> + </xsl:if> + <xsl:if test="$contentPropertyId!=''"> + <xsl:attribute name="contentProperty"> + <xsl:value-of select="$contentPropertyId"/> + </xsl:attribute> + </xsl:if> + <xsl:if test="$typeSubGroup='structure' and normalize-space($hasSettableProperties)=''"> + <xsl:attribute name="noSettableProperties"> + <xsl:value-of select="'true'"/> + </xsl:attribute> + </xsl:if> + <xsl:copy-of select="*"/> + </typedata> + </xsl:when> + <xsl:when test="local-name()='family'"> + <xsl:choose> + <xsl:when test="$contentPropertyId=''"> + <family> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name()='ancestors'"> + <ancestors> + <xsl:for-each select="type"> + <xsl:variable name="ancestorContentPropertyId"> + <xsl:for-each select="key('typeIndex', @api)"> + <xsl:call-template name="GetContentProperty"/> + </xsl:for-each> + </xsl:variable> + <type> + <xsl:copy-of select="@*"/> + <xsl:if test="$ancestorContentPropertyId!=''"> + <xsl:attribute name="contentProperty"> + <xsl:value-of select="$ancestorContentPropertyId"/> + </xsl:attribute> + </xsl:if> + <xsl:copy-of select="*"/> + </type> + </xsl:for-each> + </ancestors> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </family> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/ApplyPrototypeDocModel.xsl b/tools/Sandcastle/ProductionTransforms/ApplyPrototypeDocModel.xsl index c22626a..bdfde07 100644 --- a/tools/Sandcastle/ProductionTransforms/ApplyPrototypeDocModel.xsl +++ b/tools/Sandcastle/ProductionTransforms/ApplyPrototypeDocModel.xsl @@ -1,259 +1,259 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:param name="project" select="string('Project')" />
-
- <xsl:key name="index" match="/*/apis/api" use="@id" />
-
- <xsl:variable name="types">
- <xsl:call-template name="types" />
- </xsl:variable>
-
- <xsl:template match="/">
- <reflection>
- <!--
- <xsl:call-template name="types" />
- -->
- <xsl:apply-templates select="/*/assemblies" />
- <xsl:apply-templates select="/*/apis" />
- </reflection>
- </xsl:template>
-
-
- <xsl:template match="assemblies">
- <xsl:copy-of select="." />
- </xsl:template>
-
- <xsl:template match="apis">
- <apis>
- <xsl:apply-templates select="api" />
- <xsl:call-template name="projectTopic" />
- </apis>
- </xsl:template>
-
-
- <!-- by default, an api is just copied and topicdata added -->
- <xsl:template match="api">
- <xsl:call-template name="apiTopic" />
- </xsl:template>
-
- <!-- for type apis, we also generate overload pages -->
- <xsl:template match="api[apidata/@group='type']">
- <!-- first reproduce the type API -->
- <xsl:call-template name="apiTopic" />
- <!-- now create overload APIs -->
- <xsl:variable name="type" select="." />
- <xsl:variable name="typeId" select="@id" />
- <xsl:for-each select="msxsl:node-set($types)/type[@api=$typeId]/overload">
- <api>
- <xsl:attribute name="id">
- <xsl:call-template name="overloadIdentifier">
- <xsl:with-param name="typeId" select="$typeId" />
- <xsl:with-param name="memberName" select="@name" />
- </xsl:call-template>
- </xsl:attribute>
- <topicdata group="list" subgroup="overload" />
- <apidata name="{@name}" group="member" subgroup="{@subgroup}" />
- <containers>
- <xsl:copy-of select="$type/containers/library"/>
- <xsl:copy-of select="$type/containers/namespace"/>
- <type api="{$typeId}">
- <xsl:copy-of select="$type/containers/type"/>
- </type>
- </containers>
- <elements>
- <xsl:for-each select="member">
- <element>
- <xsl:copy-of select="@api|@display-api"/>
- </element>
- </xsl:for-each>
- </elements>
- </api>
- </xsl:for-each>
- <!--
- <xsl:variable name="members" select="key('index',elements/element/@api)" />
- <xsl:for-each select="$members">
- <xsl:variable name="name" select="apidata/@name" />
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="set" select="$members[apidata/@name=$name and apidata/@subgroup=$subgroup]" />
- <xsl:if test="(count($set) > 1) and (($set[containers/type/@api=$typeId][1]/@id)=@id)">
- <api>
- <xsl:attribute name="id">
- <xsl:call-template name="overloadId">
- <xsl:with-param name="memberId" select="@id" />
- </xsl:call-template>
- </xsl:attribute>
- <topicdata group="list" />
- <apidata name="{apidata/@name}" group="{apidata/@group}" subgroup="{apidata/@subgroup}" />
- <containers>
- <library assembly="{containers/library/@assembly}" module="{containers/library/@module}"/>
- <namespace api="{containers/namespace/@api}" />
- <type api="{containers/type/@api}" />
- </containers>
- <elements>
- <xsl:for-each select="$set">
- <element api="{@id}" />
- </xsl:for-each>
- </elements>
- </api>
- </xsl:if>
- </xsl:for-each>
- -->
- </xsl:template>
-
- <!-- for member apis, we add an overload element if the member is overloaded -->
- <xsl:template match="api[apidata/@group='member']">
- <xsl:variable name="typeId" select="containers/type/@api" />
- <xsl:variable name="memberId" select="@id" />
- <xsl:if test="not(key('index',$typeId)/apidata/@subgroup='enumeration')">
- <api id="{$memberId}">
- <topicdata group="api" />
- <xsl:copy-of select="*" />
- <xsl:variable name="overloadId" select="msxsl:node-set($types)/type[@api=$typeId]//member[@api=$memberId]/parent::overload/@api" />
- <xsl:if test="$overloadId">
- <overload api="{$overloadId}" />
- </xsl:if>
- </api>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="apiTopic">
- <api id="{@id}">
- <topicdata group="api" />
- <xsl:copy-of select="*" />
- </api>
- </xsl:template>
-
- <xsl:template name="projectTopic">
- <api id="R:{$project}">
- <topicdata group="list" subgroup="namespaces" />
- <elements>
- <xsl:for-each select="/*/apis/api[apidata/@group='namespace']">
- <element api="{@id}" />
- </xsl:for-each>
- </elements>
- </api>
- </xsl:template>
-
- <!--
- <xsl:template name="overloadId">
- <xsl:param name="memberId" />
- <xsl:text>Overload:</xsl:text>
- <xsl:variable name="noParameters">
- <xsl:choose>
- <xsl:when test="contains($memberId,'(')">
- <xsl:value-of select="substring-before($memberId,'(')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$memberId" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="noGeneric">
- <xsl:choose>
- <xsl:when test="contains($noParameters,'``')">
- <xsl:value-of select="substring-before($noParameters,'``')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$noParameters" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:value-of select="substring($noGeneric,3)" />
- </xsl:template>
- -->
-
- <!-- logic to construct an in-memory tree that represents types and members organized into overload sets -->
-
- <!-- create a list of types with member elements organized by overload set -->
- <xsl:template name="types">
- <xsl:for-each select="/*/apis/api[apidata/@group='type']">
- <type api="{@id}">
- <xsl:call-template name="overloads" />
- </type>
- </xsl:for-each>
- </xsl:template>
-
- <!-- organize member list into overload sets -->
- <!-- overload sets share a name and subgroup -->
- <xsl:template name="overloads">
- <xsl:variable name="typeId" select="@id" />
- <xsl:variable name="members">
- <xsl:call-template name="members" />
- </xsl:variable>
- <xsl:for-each select="msxsl:node-set($members)/member">
- <xsl:variable name="name" select="@name" />
- <!-- on the first occurence of a member name... -->
- <xsl:if test="not(preceding-sibling::member[@name=$name])">
- <xsl:choose>
- <!-- ...if there are subsequent members with that name, create an overload set -->
- <xsl:when test="following-sibling::member[@name=$name]">
- <overload name="{$name}" subgroup="{@subgroup}">
- <xsl:attribute name="api">
- <xsl:call-template name="overloadIdentifier">
- <xsl:with-param name="typeId" select="$typeId" />
- <xsl:with-param name="memberName" select="$name" />
- </xsl:call-template>
- </xsl:attribute>
- <xsl:for-each select="../member[@name=$name]">
- <member>
- <xsl:copy-of select="@api|@display-api"/>
- </member>
- </xsl:for-each>
- </overload>
- </xsl:when>
- <!-- otherwise, just copy the member entry -->
- <xsl:otherwise>
- <member api="{@api}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <!-- collect list of members for a given type -->
- <!-- each member lists api id, name, subgroup, and display-api -->
- <xsl:template name="members">
- <xsl:for-each select="elements/element">
- <member api="{@api}">
- <xsl:if test="@display-api">
- <xsl:attribute name="display-api">
- <xsl:value-of select="@display-api"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="apidata">
- <xsl:attribute name="name">
- <xsl:value-of select="apidata/@name" />
- </xsl:attribute>
- <xsl:attribute name="subgroup">
- <xsl:value-of select="apidata/@subgroup" />
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="api" select="key('index',@api)" />
- <xsl:attribute name="name">
- <xsl:value-of select="$api/apidata/@name"/>
- </xsl:attribute>
- <xsl:attribute name="subgroup">
- <xsl:value-of select="$api/apidata/@subgroup"/>
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- </member>
- </xsl:for-each>
- </xsl:template>
-
- <!-- given a type and a member name, construct an overload identifier -->
- <xsl:template name="overloadIdentifier">
- <xsl:param name="typeId" />
- <xsl:param name="memberName" />
- <xsl:text>Overload:</xsl:text>
- <xsl:value-of select="substring($typeId,3)"/>
- <xsl:text>.</xsl:text>
- <xsl:value-of select="$memberName"/>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:param name="project" select="string('Project')" /> + + <xsl:key name="index" match="/*/apis/api" use="@id" /> + + <xsl:variable name="types"> + <xsl:call-template name="types" /> + </xsl:variable> + + <xsl:template match="/"> + <reflection> + <!-- + <xsl:call-template name="types" /> + --> + <xsl:apply-templates select="/*/assemblies" /> + <xsl:apply-templates select="/*/apis" /> + </reflection> + </xsl:template> + + + <xsl:template match="assemblies"> + <xsl:copy-of select="." /> + </xsl:template> + + <xsl:template match="apis"> + <apis> + <xsl:apply-templates select="api" /> + <xsl:call-template name="projectTopic" /> + </apis> + </xsl:template> + + + <!-- by default, an api is just copied and topicdata added --> + <xsl:template match="api"> + <xsl:call-template name="apiTopic" /> + </xsl:template> + + <!-- for type apis, we also generate overload pages --> + <xsl:template match="api[apidata/@group='type']"> + <!-- first reproduce the type API --> + <xsl:call-template name="apiTopic" /> + <!-- now create overload APIs --> + <xsl:variable name="type" select="." /> + <xsl:variable name="typeId" select="@id" /> + <xsl:for-each select="msxsl:node-set($types)/type[@api=$typeId]/overload"> + <api> + <xsl:attribute name="id"> + <xsl:call-template name="overloadIdentifier"> + <xsl:with-param name="typeId" select="$typeId" /> + <xsl:with-param name="memberName" select="@name" /> + </xsl:call-template> + </xsl:attribute> + <topicdata group="list" subgroup="overload" /> + <apidata name="{@name}" group="member" subgroup="{@subgroup}" /> + <containers> + <xsl:copy-of select="$type/containers/library"/> + <xsl:copy-of select="$type/containers/namespace"/> + <type api="{$typeId}"> + <xsl:copy-of select="$type/containers/type"/> + </type> + </containers> + <elements> + <xsl:for-each select="member"> + <element> + <xsl:copy-of select="@api|@display-api"/> + </element> + </xsl:for-each> + </elements> + </api> + </xsl:for-each> + <!-- + <xsl:variable name="members" select="key('index',elements/element/@api)" /> + <xsl:for-each select="$members"> + <xsl:variable name="name" select="apidata/@name" /> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="set" select="$members[apidata/@name=$name and apidata/@subgroup=$subgroup]" /> + <xsl:if test="(count($set) > 1) and (($set[containers/type/@api=$typeId][1]/@id)=@id)"> + <api> + <xsl:attribute name="id"> + <xsl:call-template name="overloadId"> + <xsl:with-param name="memberId" select="@id" /> + </xsl:call-template> + </xsl:attribute> + <topicdata group="list" /> + <apidata name="{apidata/@name}" group="{apidata/@group}" subgroup="{apidata/@subgroup}" /> + <containers> + <library assembly="{containers/library/@assembly}" module="{containers/library/@module}"/> + <namespace api="{containers/namespace/@api}" /> + <type api="{containers/type/@api}" /> + </containers> + <elements> + <xsl:for-each select="$set"> + <element api="{@id}" /> + </xsl:for-each> + </elements> + </api> + </xsl:if> + </xsl:for-each> + --> + </xsl:template> + + <!-- for member apis, we add an overload element if the member is overloaded --> + <xsl:template match="api[apidata/@group='member']"> + <xsl:variable name="typeId" select="containers/type/@api" /> + <xsl:variable name="memberId" select="@id" /> + <xsl:if test="not(key('index',$typeId)/apidata/@subgroup='enumeration')"> + <api id="{$memberId}"> + <topicdata group="api" /> + <xsl:copy-of select="*" /> + <xsl:variable name="overloadId" select="msxsl:node-set($types)/type[@api=$typeId]//member[@api=$memberId]/parent::overload/@api" /> + <xsl:if test="$overloadId"> + <overload api="{$overloadId}" /> + </xsl:if> + </api> + </xsl:if> + </xsl:template> + + <xsl:template name="apiTopic"> + <api id="{@id}"> + <topicdata group="api" /> + <xsl:copy-of select="*" /> + </api> + </xsl:template> + + <xsl:template name="projectTopic"> + <api id="R:{$project}"> + <topicdata group="list" subgroup="namespaces" /> + <elements> + <xsl:for-each select="/*/apis/api[apidata/@group='namespace']"> + <element api="{@id}" /> + </xsl:for-each> + </elements> + </api> + </xsl:template> + + <!-- + <xsl:template name="overloadId"> + <xsl:param name="memberId" /> + <xsl:text>Overload:</xsl:text> + <xsl:variable name="noParameters"> + <xsl:choose> + <xsl:when test="contains($memberId,'(')"> + <xsl:value-of select="substring-before($memberId,'(')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$memberId" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="noGeneric"> + <xsl:choose> + <xsl:when test="contains($noParameters,'``')"> + <xsl:value-of select="substring-before($noParameters,'``')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$noParameters" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:value-of select="substring($noGeneric,3)" /> + </xsl:template> + --> + + <!-- logic to construct an in-memory tree that represents types and members organized into overload sets --> + + <!-- create a list of types with member elements organized by overload set --> + <xsl:template name="types"> + <xsl:for-each select="/*/apis/api[apidata/@group='type']"> + <type api="{@id}"> + <xsl:call-template name="overloads" /> + </type> + </xsl:for-each> + </xsl:template> + + <!-- organize member list into overload sets --> + <!-- overload sets share a name and subgroup --> + <xsl:template name="overloads"> + <xsl:variable name="typeId" select="@id" /> + <xsl:variable name="members"> + <xsl:call-template name="members" /> + </xsl:variable> + <xsl:for-each select="msxsl:node-set($members)/member"> + <xsl:variable name="name" select="@name" /> + <!-- on the first occurence of a member name... --> + <xsl:if test="not(preceding-sibling::member[@name=$name])"> + <xsl:choose> + <!-- ...if there are subsequent members with that name, create an overload set --> + <xsl:when test="following-sibling::member[@name=$name]"> + <overload name="{$name}" subgroup="{@subgroup}"> + <xsl:attribute name="api"> + <xsl:call-template name="overloadIdentifier"> + <xsl:with-param name="typeId" select="$typeId" /> + <xsl:with-param name="memberName" select="$name" /> + </xsl:call-template> + </xsl:attribute> + <xsl:for-each select="../member[@name=$name]"> + <member> + <xsl:copy-of select="@api|@display-api"/> + </member> + </xsl:for-each> + </overload> + </xsl:when> + <!-- otherwise, just copy the member entry --> + <xsl:otherwise> + <member api="{@api}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- collect list of members for a given type --> + <!-- each member lists api id, name, subgroup, and display-api --> + <xsl:template name="members"> + <xsl:for-each select="elements/element"> + <member api="{@api}"> + <xsl:if test="@display-api"> + <xsl:attribute name="display-api"> + <xsl:value-of select="@display-api"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="apidata"> + <xsl:attribute name="name"> + <xsl:value-of select="apidata/@name" /> + </xsl:attribute> + <xsl:attribute name="subgroup"> + <xsl:value-of select="apidata/@subgroup" /> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="api" select="key('index',@api)" /> + <xsl:attribute name="name"> + <xsl:value-of select="$api/apidata/@name"/> + </xsl:attribute> + <xsl:attribute name="subgroup"> + <xsl:value-of select="$api/apidata/@subgroup"/> + </xsl:attribute> + </xsl:otherwise> + </xsl:choose> + </member> + </xsl:for-each> + </xsl:template> + + <!-- given a type and a member name, construct an overload identifier --> + <xsl:template name="overloadIdentifier"> + <xsl:param name="typeId" /> + <xsl:param name="memberName" /> + <xsl:text>Overload:</xsl:text> + <xsl:value-of select="substring($typeId,3)"/> + <xsl:text>.</xsl:text> + <xsl:value-of select="$memberName"/> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/ApplyVSDocModel.xsl b/tools/Sandcastle/ProductionTransforms/ApplyVSDocModel.xsl index 18b3aa3..d5a3751 100644 --- a/tools/Sandcastle/ProductionTransforms/ApplyVSDocModel.xsl +++ b/tools/Sandcastle/ProductionTransforms/ApplyVSDocModel.xsl @@ -1,767 +1,767 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- xmlns:ms="urn:schemas-microsoft-com:xslt"
- exclude-result-prefixes="ms"
- version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" />
- <xsl:param name="derivedTypesLimit" />
- <xsl:param name="project" />
-
- <!-- Set to true for vs2005; set to false for vsorcas/prototype. -->
- <xsl:param name="IncludeAllMembersTopic" select="'false'" />
-
- <!-- If member list topics handle overloads with one row that points to an overload topic, set IncludeInheritedOverloadTopics to false. -->
- <!-- If member list topics show a separate row for each overload signature, set IncludeInheritedOverloadTopics to false. -->
- <xsl:param name="IncludeInheritedOverloadTopics" select="'true'" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <reflection>
- <xsl:apply-templates select="/reflection/assemblies" />
- <xsl:apply-templates select="/reflection/apis" />
- </reflection>
- </xsl:template>
-
- <xsl:template match="assemblies">
- <xsl:copy-of select="." />
- </xsl:template>
-
- <xsl:template match="apis">
- <apis>
- <xsl:apply-templates select="api" />
- <xsl:if test="normalize-space($project)">
- <xsl:call-template name="projectTopic" />
- </xsl:if>
- </apis>
- </xsl:template>
-
- <!-- Process a generic API (for namespaces and members; types and overloads are handled explicitly below) -->
-
- <xsl:template match="api">
- <xsl:call-template name="updateApiNode" />
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='member']">
- <xsl:call-template name="updateApiNode" />
- </xsl:template>
-
- <xsl:template name="updateApiNode">
- <xsl:variable name="name" select="apidata/@name"/>
- <xsl:variable name="subgroup" select="apidata/@subgroup"/>
- <xsl:variable name="subsubgroup" select="apidata/@subsubgroup"/>
- <xsl:variable name="typeId" select="containers/type/@api"/>
- <xsl:variable name="isEII" select="proceduredata/@eii"/>
- <api>
- <xsl:copy-of select="@*"/>
- <topicdata group="api">
- <xsl:if test="key('index',containers/type/@api)[apidata/@subgroup='enumeration']">
- <!-- enum members do not get separate topics; mark them so they are excluded from the manifest -->
- <xsl:attribute name="notopic"/>
- </xsl:if>
- </topicdata>
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name(.)='containers'">
- <xsl:variable name="assembly" select="library/@assembly"/>
- <xsl:choose>
- <xsl:when test="not(/*/assemblies/assembly[@name=$assembly]/attributes/attribute[type/@api='T:System.Security.AllowPartiallyTrustedCallersAttribute'])">
- <containers>
- <library>
- <xsl:copy-of select="library/@*"/>
- <noAptca/>
- </library>
- <xsl:copy-of select="namespace"/>
- <xsl:copy-of select="type"/>
- </containers>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="local-name(.)='memberdata'">
- <xsl:choose>
- <xsl:when test="$isEII='true'">
- <xsl:copy-of select="."/>
- </xsl:when>
- <xsl:otherwise>
- <memberdata>
- <xsl:copy-of select="@*"/>
- <!-- if the member is overloaded, add @overload = id of overload topic, if any -->
- <xsl:choose>
- <!-- skip this processing for members that cannot be overloaded -->
- <xsl:when test="$subgroup='field'"/>
- <xsl:otherwise>
- <xsl:variable name="siblingElements" select="key('index',$typeId)/elements"/>
- <xsl:variable name="siblingApiInfo" select="key('index',$siblingElements/element[not(apidata)]/@api) | $siblingElements/element[apidata]" />
- <xsl:variable name="overloadSet" select="$siblingApiInfo[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]" />
- <xsl:variable name="signatureSet">
- <xsl:call-template name="GetSignatureSet">
- <xsl:with-param name="name" select="$name" />
- <xsl:with-param name="overloadSet" select="$overloadSet"/>
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:if test="count(msxsl:node-set($signatureSet)/*) > 1">
- <!-- the api is overloaded, so add @overload = idOfOverloadTopic -->
- <xsl:attribute name="overload">
- <xsl:call-template name="overloadId">
- <xsl:with-param name="typeId" select="$typeId"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="subgroup" select="$subgroup"/>
- <xsl:with-param name="subsubgroup" select="$subsubgroup"/>
- </xsl:call-template>
- </xsl:attribute>
- </xsl:if>
-
- </xsl:otherwise>
- </xsl:choose>
- <!-- memberdata shouldn't have any children, but copy just in case -->
- <xsl:copy-of select="*"/>
- </memberdata>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
- <!-- Special logic for type APIs -->
-
- <xsl:template name="UpdateTypeApiNode">
- <xsl:param name="derivedTypesTopicId" />
- <xsl:param name="allMembersTopicId" />
- <xsl:variable name="typeId" select="@id"/>
- <api>
- <xsl:copy-of select="@*"/>
- <xsl:choose>
- <xsl:when test="normalize-space($allMembersTopicId)">
- <topicdata group="api" allMembersTopicId="{$allMembersTopicId}"/>
- </xsl:when>
- <xsl:otherwise>
- <topicdata group="api" />
- </xsl:otherwise>
- </xsl:choose>
-
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="self::elements">
- <xsl:choose>
- <xsl:when test="../apidata/@subgroup='enumeration'">
- <xsl:copy-of select="."/>
- </xsl:when>
- <xsl:when test="not(normalize-space($allMembersTopicId))">
- <xsl:if test="element">
- <xsl:call-template name="memberListElements">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="local-name(.)='family' and $derivedTypesTopicId!=''">
- <family>
- <!-- copy the ancestors node -->
- <xsl:copy-of select="ancestors"/>
- <!-- Modify the descendents node -->
- <descendents>
- <xsl:attribute name="derivedTypes">
- <xsl:value-of select="$derivedTypesTopicId"/>
- </xsl:attribute>
- <type>
- <xsl:attribute name="api">
- <xsl:value-of select="$derivedTypesTopicId"/>
- </xsl:attribute>
- <xsl:attribute name="ref">
- <xsl:value-of select="'true'"/>
- </xsl:attribute>
- </type>
- </descendents>
- </family>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="."/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
- <!-- Type logic; types get a lot of massaging to create member list pages, overload pages, etc. -->
-
- <xsl:template match="api[apidata/@group='type']">
-
- <xsl:variable name="typeId" select="@id" />
-
- <xsl:variable name="allMembersTopicId">
- <xsl:if test="$IncludeAllMembersTopic!='false' and (count(elements/*) > 0) and apidata[not(@subgroup='enumeration')]">
- <xsl:value-of select="concat('AllMembers.', $typeId)"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:variable name="derivedTypesTopicId">
- <xsl:if test="count(family/descendents/*) > $derivedTypesLimit">
- <xsl:value-of select="concat('DerivedTypes.', $typeId)"/>
- </xsl:if>
- </xsl:variable>
-
- <!-- a topic for the type overview -->
- <xsl:call-template name="UpdateTypeApiNode">
- <xsl:with-param name="derivedTypesTopicId" select="$derivedTypesTopicId" />
- <xsl:with-param name="allMembersTopicId" select="$allMembersTopicId" />
- </xsl:call-template>
-
- <!-- enumerations don't get all these extra topics -->
- <xsl:if test="not(apidata[@subgroup='enumeration'])">
-
- <!-- derived types topic -->
- <xsl:if test="$derivedTypesTopicId!=''">
- <api>
- <xsl:attribute name="id">
- <xsl:text>DerivedTypes.</xsl:text>
- <xsl:value-of select="$typeId"/>
- </xsl:attribute>
- <topicdata name="{apidata/@name}" group="list" subgroup="DerivedTypeList" typeTopicId="{@id}" allMembersTopicId="{$allMembersTopicId}" />
- <xsl:copy-of select="apidata" />
- <xsl:copy-of select="typedata" />
- <xsl:copy-of select="templates" />
- <elements>
- <xsl:for-each select="family/descendents/*">
- <element api="{@api}" />
- </xsl:for-each>
- </elements>
- <xsl:copy-of select="containers" />
- </api>
- </xsl:if>
-
- <!-- all members topic -->
- <xsl:if test="$allMembersTopicId!=''">
- <api>
- <xsl:attribute name="id">
- <xsl:text>AllMembers.</xsl:text>
- <xsl:value-of select="$typeId"/>
- </xsl:attribute>
- <topicdata name="{apidata/@name}" group="list" subgroup="members" typeTopicId="{@id}" />
- <xsl:copy-of select="apidata" />
- <xsl:copy-of select="typedata" />
- <xsl:copy-of select="templates" />
- <!-- elements -->
- <xsl:for-each select="elements[element]">
- <xsl:call-template name="memberListElements">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:for-each>
- <xsl:copy-of select="containers" />
- </api>
- </xsl:if>
-
- <!-- method/operator list topic -->
- <!-- pass in $declaredMembers and $members so subsubgroup=operator is not exclude -->
- <xsl:variable name="declaredPrefix" select="concat(substring-after($typeId,':'), '.')"/>
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subgroup">method</xsl:with-param>
- <xsl:with-param name="topicSubgroup">Methods</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- <xsl:with-param name="declaredMembers" select="key('index',elements/element[not(apidata)][starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='method']]
- | elements/element[starts-with(substring-after(@api,':'), $declaredPrefix)][apidata[@subgroup='method']]"/>
- <xsl:with-param name="members" select="key('index',elements/element[not(apidata)]/@api)[apidata[@subgroup='method']]
- | elements/element[apidata[@subgroup='method']]"/>
- </xsl:call-template>
-
- <!-- propety list topic -->
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subgroup">property</xsl:with-param>
- <xsl:with-param name="topicSubgroup">Properties</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- </xsl:call-template>
-
- <!-- event list topic -->
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subgroup">event</xsl:with-param>
- <xsl:with-param name="topicSubgroup">Events</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- </xsl:call-template>
-
- <!-- field list topic -->
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subgroup">field</xsl:with-param>
- <xsl:with-param name="topicSubgroup">Fields</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- </xsl:call-template>
-
- <!-- attached properties topic -->
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subsubgroup">attachedProperty</xsl:with-param>
- <xsl:with-param name="topicSubgroup">AttachedProperties</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- </xsl:call-template>
-
- <!-- attached events topic -->
- <xsl:call-template name="AddMemberlistAPI">
- <xsl:with-param name="subsubgroup">attachedEvent</xsl:with-param>
- <xsl:with-param name="topicSubgroup">AttachedEvents</xsl:with-param>
- <xsl:with-param name="typeId" select="$typeId" />
- </xsl:call-template>
-
- <!-- overload topics -->
- <xsl:call-template name="overloadTopics">
- <xsl:with-param name="allMembersTopicId" select="$allMembersTopicId"/>
- </xsl:call-template>
-
- </xsl:if>
-
- </xsl:template>
-
- <!-- overload topics -->
-
- <xsl:template name="overloadTopics">
- <xsl:param name="allMembersTopicId"/>
- <xsl:variable name="typeId" select="@id"/>
- <xsl:variable name="members" select="key('index',elements/element[not(apidata)]/@api) | elements/element[apidata]" />
- <xsl:variable name="declaredPrefix" select="concat(substring($typeId,2), '.')"/>
-
- <xsl:for-each select="$members">
- <xsl:variable name="name" select="apidata/@name" />
- <xsl:variable name="memberId" select="@id | @api"/>
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" />
-
- <!-- EII members are not treated as overloads -->
- <xsl:if test="not(proceduredata/@eii='true')">
- <!-- get the set of non-EII members with same name and subgroup -->
- <xsl:variable name="overloadSet" select="$members[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]" />
-
- <!-- are there any declared members in the overload set? -->
- <xsl:variable name="declaredMembers" select="$overloadSet[starts-with(substring(@id,2),$declaredPrefix)]" />
-
- <!-- if more than one member in overloadSet, add an overload topic if necessary -->
- <xsl:if test="(count($overloadSet) > 1) and $overloadSet[1][@id=$memberId or @api=$memberId]">
- <!-- When merging multiple versions, an overload set may have multiple members with the same signature,
- e.g. when one version inherits a member and another version overrides it.
- We want an overload topic only when there are multiple signatures. -->
- <!-- get the set of unique signatures for this overload set -->
- <xsl:variable name="signatureSet">
- <xsl:call-template name="GetSignatureSet">
- <xsl:with-param name="overloadSet" select="$overloadSet"/>
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:choose>
- <!-- don't need an overload topic if only one signature -->
- <xsl:when test="count(msxsl:node-set($signatureSet)/*) < 2"/>
- <!-- don't need an overload topic if all overloads are inherited and config'd to omit overload topics when all are inherited -->
- <xsl:when test="(not(boolean($declaredMembers)) and $IncludeInheritedOverloadTopics='false')"/>
- <xsl:otherwise>
- <api>
- <xsl:attribute name="id">
- <xsl:call-template name="overloadId">
- <xsl:with-param name="typeId" select="$typeId"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="subgroup" select="$subgroup"/>
- <xsl:with-param name="subsubgroup" select="$subsubgroup"/>
- </xsl:call-template>
- </xsl:attribute>
- <topicdata name="{apidata/@name}" group="list" subgroup="overload" memberSubgroup="{$subgroup}" pseudo="true" allMembersTopicId="{$allMembersTopicId}">
- <xsl:if test="not(boolean($declaredMembers))">
- <xsl:attribute name="allInherited">true</xsl:attribute>
- </xsl:if>
- </topicdata>
- <xsl:copy-of select="apidata" />
- <!-- elements -->
- <elements>
- <xsl:for-each select="msxsl:node-set($signatureSet)/*">
- <xsl:copy-of select="."/>
- </xsl:for-each>
- </elements>
- <!-- containers -->
- <xsl:choose>
- <xsl:when test="boolean($declaredMembers)">
- <xsl:copy-of select="$declaredMembers[1]/containers"/>
- </xsl:when>
- <xsl:otherwise>
- <containers>
- <xsl:copy-of select="key('index',$typeId)/containers/library"/>
- <xsl:copy-of select="key('index',$typeId)/containers/namespace"/>
- <type api="{$typeId}"/>
- </containers>
- </xsl:otherwise>
- </xsl:choose>
- </api>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="WriteElementNode">
- <xsl:param name="typeId"/>
- <xsl:choose>
- <xsl:when test="local-name()='element'">
- <xsl:copy-of select="."/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:variable name="elementId" select="@id"/>
- <xsl:copy-of select="key('index', $typeId)/elements/element[@api=$elementId]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="GetSignatureSet">
- <xsl:param name="name" select="apidata/@name" />
- <xsl:param name="overloadSet"/>
- <xsl:param name="typeId"/>
-
- <xsl:choose>
- <xsl:when test="count($overloadSet) = 1">
- <xsl:for-each select="$overloadSet">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="$overloadSet">
- <xsl:sort select="count(parameters/parameter)"/>
- <xsl:sort select="key('index', parameters/parameter[1]//type[1]/@api)/apidata/@name"/>
- <xsl:variable name="memberId" select="@id | @api"/>
- <xsl:variable name="signature">
- <xsl:call-template name="GetSignature">
- <xsl:with-param name="name" select="$name"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="sameParamSignatureSet" select="$overloadSet[contains(@id|@api,$signature) and string-length(substring-after(@id|@api,$signature))=0]"/>
- <!-- make sure all elements in the sameParamSignatureSet have the same return value -->
- <xsl:variable name="returnsType" select="string(returns//type[1]/@api)"/>
- <xsl:variable name="sameSignatureSet" select="$sameParamSignatureSet[(returns//type[1][@api=$returnsType]) or ($returnsType='' and not(returns//type))]"/>
- <xsl:choose>
- <xsl:when test="count(msxsl:node-set($sameSignatureSet)) > 1">
- <xsl:if test="$sameSignatureSet[1][@id=$memberId or @api=$memberId]">
- <!-- $sameSignatureSet is set of api nodes; for version check we need the corresponding set of element nodes -->
- <xsl:variable name="elementSet">
- <xsl:for-each select="$sameSignatureSet">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:variable>
- <!-- The first versions/versions node determines the primary version group, e.g. 'netfw'. -->
- <xsl:variable name="primaryVersionGroup" select="versions/versions[1]/@name"/>
- <!-- The primary element is the one with the most recent version for the primary version group. -->
- <xsl:variable name="primaryVersionMemberId">
- <xsl:call-template name="GetSignatureWithLatestVersion">
- <xsl:with-param name="versionGroup" select="$primaryVersionGroup"/>
- <xsl:with-param name="signatureset" select="$elementSet"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="primaryMemberId">
- <xsl:choose>
- <xsl:when test="normalize-space($primaryVersionMemberId)!=''">
- <xsl:value-of select="normalize-space(substring-before($primaryVersionMemberId,';'))"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$sameSignatureSet[1]/@id|@api"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:for-each select="$sameSignatureSet[@id=$primaryMemberId or @api=$primaryMemberId]">
- <element api="{$primaryMemberId}" signatureset="">
- <!-- copy attributes and innerxml from the original element node -->
- <xsl:choose>
- <xsl:when test="local-name()='element'">
- <xsl:copy-of select="@*"/>
- <xsl:copy-of select="*"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="key('index', $typeId)/elements/element[@api=$primaryMemberId]/@*"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- for the secondary version groups, copy in the signatureset's latest member (if different from primary member) -->
- <xsl:call-template name="nonPrimaryVersionElements">
- <xsl:with-param name="usedIds" select="concat($primaryMemberId,';')"/>
- <xsl:with-param name="elementSet" select="$elementSet"/>
- <xsl:with-param name="sameSignatureSet" select="$sameSignatureSet"/>
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </element>
- </xsl:for-each>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="nonPrimaryVersionElements">
- <xsl:param name="usedIds"/>
- <xsl:param name="elementSet"/>
- <xsl:param name="sameSignatureSet"/>
- <xsl:param name="typeId"/>
-
- <xsl:if test="count(versions/versions)>1">
- <xsl:variable name="versionGroupId2" select="versions/versions[2]/@name"/>
- <xsl:variable name="versionMemberIdSet2">
- <xsl:call-template name="GetSignatureWithLatestVersion">
- <xsl:with-param name="versionGroup" select="$versionGroupId2"/>
- <xsl:with-param name="signatureset" select="$elementSet"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="versionMemberId2">
- <xsl:value-of select="normalize-space(substring-before($versionMemberIdSet2,';'))"/>
- </xsl:variable>
- <xsl:if test="(normalize-space($versionMemberId2)!='') and not(contains($usedIds,concat($versionMemberId2,';')))">
- <xsl:for-each select="$sameSignatureSet[@id=$versionMemberId2 or @api=$versionMemberId2]">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:if>
-
- <xsl:if test="count(versions/versions)>2">
- <xsl:variable name="usedIds2" select="concat($usedIds,$versionMemberId2,';')"/>
- <xsl:variable name="versionGroupId3" select="versions/versions[3]/@name"/>
- <xsl:variable name="versionMemberIdSet3">
- <xsl:call-template name="GetSignatureWithLatestVersion">
- <xsl:with-param name="versionGroup" select="$versionGroupId3"/>
- <xsl:with-param name="signatureset" select="$elementSet"/>
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="versionMemberId3">
- <xsl:value-of select="normalize-space(substring-before($versionMemberIdSet3,';'))"/>
- </xsl:variable>
- <xsl:if test="(normalize-space($versionMemberId3)!='') and not(contains($usedIds2,concat($versionMemberId3,';')))">
- <xsl:for-each select="$sameSignatureSet[@id=$versionMemberId3 or @api=$versionMemberId3]">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:if>
- </xsl:if>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="GetSignatureWithLatestVersion">
- <xsl:param name="versionGroup"/>
- <xsl:param name="signatureset"/>
- <xsl:for-each select="msxsl:node-set($signatureset)/*[@*[local-name()=$versionGroup]]">
- <xsl:variable name="currVersion" select="@*[local-name()=$versionGroup]"/>
- <xsl:variable name="isLatest">
- <xsl:call-template name="IsLatestVersion">
- <xsl:with-param name="version" select="$currVersion"/>
- <xsl:with-param name="versionGroup" select="$versionGroup"/>
- <xsl:with-param name="signatureset" select="$signatureset"/>
- </xsl:call-template>
- </xsl:variable>
- <!-- IsLatestVersion returns '' if this is the latest version number -->
- <xsl:if test="normalize-space($isLatest)=''"><xsl:value-of select="@api"/><xsl:text>;</xsl:text></xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <xsl:template name="IsLatestVersion">
- <xsl:param name="version"/>
- <xsl:param name="versionGroup"/>
- <xsl:param name="signatureset"/>
- <!-- loop through the versions; output is '' if there are no lower versions -->
- <xsl:for-each select="msxsl:node-set($signatureset)/*[@*[local-name()=$versionGroup]]">
- <xsl:variable name="currVersion" select="@*[local-name()=$versionGroup]"/>
- <xsl:if test="ms:string-compare($currVersion, $version) = 1">false</xsl:if>
- </xsl:for-each>
- </xsl:template>
-
- <!-- -->
- <xsl:template name="GetSignature">
- <xsl:param name="name" />
- <xsl:param name="memberId" select="@id | @api"/>
- <xsl:variable name="paramString" select="substring-after($memberId,'(')"/>
- <xsl:variable name="tickString" select="substring-after($memberId,'``')"/>
- <xsl:variable name="memberName">
- <xsl:choose>
- <xsl:when test="$name='.ctor' or $name='.cctor'">ctor</xsl:when>
- <!-- for explicit interface implementation members, return the membername with # instead of ., so it matches cref ids -->
- <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
- <xsl:value-of select="translate($name,'.','#')"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="string-length($tickString) > string-length($paramString)">
- <xsl:value-of select="concat('.',$memberName,'``',$tickString)"/>
- </xsl:when>
- <xsl:when test="boolean($paramString)">
- <xsl:value-of select="concat('.',$memberName,'(',$paramString)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('.',$memberName)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- member list topics -->
-
- <xsl:template name="AddMemberlistAPI">
- <xsl:param name="subgroup"/>
- <xsl:param name="subsubgroup"/>
- <xsl:param name="topicSubgroup"/>
- <xsl:param name="typeId" />
- <xsl:param name="declaredPrefix" select="concat(substring-after($typeId,':'), '.')"/>
- <!-- get the type's declared members for this subgroup -->
- <xsl:param name="declaredMembers" select="key('index',elements/element[not(apidata)][starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]
- | elements/element[starts-with(substring-after(@api,':'), $declaredPrefix)][apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]"/>
- <!-- get all the type's members for this subgroup -->
- <xsl:param name="members" select="key('index',elements/element[not(apidata)]/@api)[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]
- | elements/element[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]"/>
-
- <!-- add a member list topic only if the type has declared members -->
- <xsl:if test="count($declaredMembers) > 0">
- <api>
- <xsl:attribute name="id">
- <xsl:value-of select="concat($topicSubgroup, '.', $typeId)"/>
- </xsl:attribute>
- <topicdata name="{apidata/@name}" group="list" subgroup="{$topicSubgroup}">
- <xsl:if test="boolean($subsubgroup)">
- <xsl:attribute name="subsubgroup">
- <xsl:value-of select="$topicSubgroup"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:attribute name="typeTopicId">
- <xsl:value-of select="$typeId"/>
- </xsl:attribute>
- </topicdata>
- <xsl:copy-of select="apidata" />
- <xsl:copy-of select="typedata" />
- <xsl:copy-of select="templates" />
- <!-- elements -->
- <xsl:call-template name="memberListElements">
- <xsl:with-param name="members" select="$members"/>
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- <xsl:copy-of select="containers" />
- </api>
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="memberListElements">
- <xsl:param name="members" select="key('index',element[not(apidata)]/@api) | element[apidata]" />
- <xsl:param name="typeId" />
- <xsl:variable name="declaredPrefix" select="concat(substring($typeId,2), '.')"/>
-
- <elements>
- <xsl:for-each select="$members">
- <xsl:variable name="name" select="apidata/@name" />
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" />
- <xsl:variable name="memberId" select="@id | @api"/>
-
- <xsl:choose>
- <!-- EII members are not treated as overloads -->
- <xsl:when test="proceduredata/@eii='true'">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- field members cannot be overloaded, so skip the overload logic and just write the element node -->
- <xsl:when test="$subgroup='field'">
- <xsl:call-template name="WriteElementNode">
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:when>
-
- <!-- for non-EII members, handle overloads and signature sets -->
- <xsl:otherwise>
- <!-- get the set of overloads: non-EII members with same name and subgroup -->
- <xsl:variable name="overloadSet" select="$members[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]"/>
-
- <!-- are there any declared members in the overload set? -->
- <xsl:variable name="declaredMembers" select="$overloadSet[starts-with(substring(@id,2),$declaredPrefix)]" />
-
- <xsl:variable name="signatureSet">
- <xsl:call-template name="GetSignatureSet">
- <xsl:with-param name="overloadSet" select="$overloadSet"/>
- <xsl:with-param name="typeId" select="$typeId"/>
- </xsl:call-template>
- </xsl:variable>
-
- <!-- make sure we add to the list only once -->
- <xsl:if test="$overloadSet[1][@id=$memberId or @api=$memberId]">
- <!-- When merging multiple versions, an overload set may have multiple members with the same signature,
- e.g. when one version inherits a member and another version overrides it.
- We want an overload topic only when there are multiple signatures. -->
- <!-- get the set of unique signatures for this overload set -->
- <!--
- -->
- <xsl:choose>
- <!-- don't need an overload topic if only one signature -->
- <xsl:when test="count(msxsl:node-set($signatureSet)/*) = 1">
- <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/>
- </xsl:when>
- <!-- just copy the elements if all overloads are inherited and config'd to omit overload topics when all are inherited -->
- <xsl:when test="(not(boolean($declaredMembers)) and $IncludeInheritedOverloadTopics='false')">
- <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/>
- </xsl:when>
- <xsl:otherwise>
- <element>
- <xsl:attribute name="api">
- <xsl:call-template name="overloadId">
- <xsl:with-param name="typeId" select="$typeId"/>
- <xsl:with-param name="name" select="$name"/>
- <xsl:with-param name="subgroup" select="$subgroup"/>
- <xsl:with-param name="subsubgroup" select="$subsubgroup"/>
- </xsl:call-template>
- </xsl:attribute>
- <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/>
- </element>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </elements>
- </xsl:template>
-
- <xsl:template name="overloadId">
- <xsl:param name="typeId"/>
- <xsl:param name="name"/>
- <xsl:param name="subgroup"/>
- <xsl:param name="subsubgroup"/>
- <xsl:choose>
- <xsl:when test="$subgroup='constructor'">
- <xsl:value-of select="concat('Overload:',substring($typeId,3),'.#ctor')"/>
- </xsl:when>
- <xsl:when test="$subsubgroup='operator'">
- <xsl:value-of select="concat('Overload:',substring($typeId,3),'.op_',$name)"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('Overload:',substring($typeId,3),'.',$name)"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="projectTopic">
- <api id="R:{$project}">
- <topicdata group="root" />
- <elements>
- <xsl:for-each select="/*/apis/api[apidata/@group='namespace']">
- <element api="{@id}" />
- </xsl:for-each>
- </elements>
- </api>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" + xmlns:ms="urn:schemas-microsoft-com:xslt" + exclude-result-prefixes="ms" + version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" /> + <xsl:param name="derivedTypesLimit" /> + <xsl:param name="project" /> + + <!-- Set to true for vs2005; set to false for vsorcas/prototype. --> + <xsl:param name="IncludeAllMembersTopic" select="'false'" /> + + <!-- If member list topics handle overloads with one row that points to an overload topic, set IncludeInheritedOverloadTopics to false. --> + <!-- If member list topics show a separate row for each overload signature, set IncludeInheritedOverloadTopics to false. --> + <xsl:param name="IncludeInheritedOverloadTopics" select="'true'" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <reflection> + <xsl:apply-templates select="/reflection/assemblies" /> + <xsl:apply-templates select="/reflection/apis" /> + </reflection> + </xsl:template> + + <xsl:template match="assemblies"> + <xsl:copy-of select="." /> + </xsl:template> + + <xsl:template match="apis"> + <apis> + <xsl:apply-templates select="api" /> + <xsl:if test="normalize-space($project)"> + <xsl:call-template name="projectTopic" /> + </xsl:if> + </apis> + </xsl:template> + + <!-- Process a generic API (for namespaces and members; types and overloads are handled explicitly below) --> + + <xsl:template match="api"> + <xsl:call-template name="updateApiNode" /> + </xsl:template> + + <xsl:template match="api[apidata/@group='member']"> + <xsl:call-template name="updateApiNode" /> + </xsl:template> + + <xsl:template name="updateApiNode"> + <xsl:variable name="name" select="apidata/@name"/> + <xsl:variable name="subgroup" select="apidata/@subgroup"/> + <xsl:variable name="subsubgroup" select="apidata/@subsubgroup"/> + <xsl:variable name="typeId" select="containers/type/@api"/> + <xsl:variable name="isEII" select="proceduredata/@eii"/> + <api> + <xsl:copy-of select="@*"/> + <topicdata group="api"> + <xsl:if test="key('index',containers/type/@api)[apidata/@subgroup='enumeration']"> + <!-- enum members do not get separate topics; mark them so they are excluded from the manifest --> + <xsl:attribute name="notopic"/> + </xsl:if> + </topicdata> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name(.)='containers'"> + <xsl:variable name="assembly" select="library/@assembly"/> + <xsl:choose> + <xsl:when test="not(/*/assemblies/assembly[@name=$assembly]/attributes/attribute[type/@api='T:System.Security.AllowPartiallyTrustedCallersAttribute'])"> + <containers> + <library> + <xsl:copy-of select="library/@*"/> + <noAptca/> + </library> + <xsl:copy-of select="namespace"/> + <xsl:copy-of select="type"/> + </containers> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:when test="local-name(.)='memberdata'"> + <xsl:choose> + <xsl:when test="$isEII='true'"> + <xsl:copy-of select="."/> + </xsl:when> + <xsl:otherwise> + <memberdata> + <xsl:copy-of select="@*"/> + <!-- if the member is overloaded, add @overload = id of overload topic, if any --> + <xsl:choose> + <!-- skip this processing for members that cannot be overloaded --> + <xsl:when test="$subgroup='field'"/> + <xsl:otherwise> + <xsl:variable name="siblingElements" select="key('index',$typeId)/elements"/> + <xsl:variable name="siblingApiInfo" select="key('index',$siblingElements/element[not(apidata)]/@api) | $siblingElements/element[apidata]" /> + <xsl:variable name="overloadSet" select="$siblingApiInfo[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]" /> + <xsl:variable name="signatureSet"> + <xsl:call-template name="GetSignatureSet"> + <xsl:with-param name="name" select="$name" /> + <xsl:with-param name="overloadSet" select="$overloadSet"/> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="count(msxsl:node-set($signatureSet)/*) > 1"> + <!-- the api is overloaded, so add @overload = idOfOverloadTopic --> + <xsl:attribute name="overload"> + <xsl:call-template name="overloadId"> + <xsl:with-param name="typeId" select="$typeId"/> + <xsl:with-param name="name" select="$name"/> + <xsl:with-param name="subgroup" select="$subgroup"/> + <xsl:with-param name="subsubgroup" select="$subsubgroup"/> + </xsl:call-template> + </xsl:attribute> + </xsl:if> + + </xsl:otherwise> + </xsl:choose> + <!-- memberdata shouldn't have any children, but copy just in case --> + <xsl:copy-of select="*"/> + </memberdata> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + + <!-- Special logic for type APIs --> + + <xsl:template name="UpdateTypeApiNode"> + <xsl:param name="derivedTypesTopicId" /> + <xsl:param name="allMembersTopicId" /> + <xsl:variable name="typeId" select="@id"/> + <api> + <xsl:copy-of select="@*"/> + <xsl:choose> + <xsl:when test="normalize-space($allMembersTopicId)"> + <topicdata group="api" allMembersTopicId="{$allMembersTopicId}"/> + </xsl:when> + <xsl:otherwise> + <topicdata group="api" /> + </xsl:otherwise> + </xsl:choose> + + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="self::elements"> + <xsl:choose> + <xsl:when test="../apidata/@subgroup='enumeration'"> + <xsl:copy-of select="."/> + </xsl:when> + <xsl:when test="not(normalize-space($allMembersTopicId))"> + <xsl:if test="element"> + <xsl:call-template name="memberListElements"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + </xsl:choose> + </xsl:when> + <xsl:when test="local-name(.)='family' and $derivedTypesTopicId!=''"> + <family> + <!-- copy the ancestors node --> + <xsl:copy-of select="ancestors"/> + <!-- Modify the descendents node --> + <descendents> + <xsl:attribute name="derivedTypes"> + <xsl:value-of select="$derivedTypesTopicId"/> + </xsl:attribute> + <type> + <xsl:attribute name="api"> + <xsl:value-of select="$derivedTypesTopicId"/> + </xsl:attribute> + <xsl:attribute name="ref"> + <xsl:value-of select="'true'"/> + </xsl:attribute> + </type> + </descendents> + </family> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="."/> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + + <!-- Type logic; types get a lot of massaging to create member list pages, overload pages, etc. --> + + <xsl:template match="api[apidata/@group='type']"> + + <xsl:variable name="typeId" select="@id" /> + + <xsl:variable name="allMembersTopicId"> + <xsl:if test="$IncludeAllMembersTopic!='false' and (count(elements/*) > 0) and apidata[not(@subgroup='enumeration')]"> + <xsl:value-of select="concat('AllMembers.', $typeId)"/> + </xsl:if> + </xsl:variable> + + <xsl:variable name="derivedTypesTopicId"> + <xsl:if test="count(family/descendents/*) > $derivedTypesLimit"> + <xsl:value-of select="concat('DerivedTypes.', $typeId)"/> + </xsl:if> + </xsl:variable> + + <!-- a topic for the type overview --> + <xsl:call-template name="UpdateTypeApiNode"> + <xsl:with-param name="derivedTypesTopicId" select="$derivedTypesTopicId" /> + <xsl:with-param name="allMembersTopicId" select="$allMembersTopicId" /> + </xsl:call-template> + + <!-- enumerations don't get all these extra topics --> + <xsl:if test="not(apidata[@subgroup='enumeration'])"> + + <!-- derived types topic --> + <xsl:if test="$derivedTypesTopicId!=''"> + <api> + <xsl:attribute name="id"> + <xsl:text>DerivedTypes.</xsl:text> + <xsl:value-of select="$typeId"/> + </xsl:attribute> + <topicdata name="{apidata/@name}" group="list" subgroup="DerivedTypeList" typeTopicId="{@id}" allMembersTopicId="{$allMembersTopicId}" /> + <xsl:copy-of select="apidata" /> + <xsl:copy-of select="typedata" /> + <xsl:copy-of select="templates" /> + <elements> + <xsl:for-each select="family/descendents/*"> + <element api="{@api}" /> + </xsl:for-each> + </elements> + <xsl:copy-of select="containers" /> + </api> + </xsl:if> + + <!-- all members topic --> + <xsl:if test="$allMembersTopicId!=''"> + <api> + <xsl:attribute name="id"> + <xsl:text>AllMembers.</xsl:text> + <xsl:value-of select="$typeId"/> + </xsl:attribute> + <topicdata name="{apidata/@name}" group="list" subgroup="members" typeTopicId="{@id}" /> + <xsl:copy-of select="apidata" /> + <xsl:copy-of select="typedata" /> + <xsl:copy-of select="templates" /> + <!-- elements --> + <xsl:for-each select="elements[element]"> + <xsl:call-template name="memberListElements"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:for-each> + <xsl:copy-of select="containers" /> + </api> + </xsl:if> + + <!-- method/operator list topic --> + <!-- pass in $declaredMembers and $members so subsubgroup=operator is not exclude --> + <xsl:variable name="declaredPrefix" select="concat(substring-after($typeId,':'), '.')"/> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subgroup">method</xsl:with-param> + <xsl:with-param name="topicSubgroup">Methods</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + <xsl:with-param name="declaredMembers" select="key('index',elements/element[not(apidata)][starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='method']] + | elements/element[starts-with(substring-after(@api,':'), $declaredPrefix)][apidata[@subgroup='method']]"/> + <xsl:with-param name="members" select="key('index',elements/element[not(apidata)]/@api)[apidata[@subgroup='method']] + | elements/element[apidata[@subgroup='method']]"/> + </xsl:call-template> + + <!-- propety list topic --> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subgroup">property</xsl:with-param> + <xsl:with-param name="topicSubgroup">Properties</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + </xsl:call-template> + + <!-- event list topic --> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subgroup">event</xsl:with-param> + <xsl:with-param name="topicSubgroup">Events</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + </xsl:call-template> + + <!-- field list topic --> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subgroup">field</xsl:with-param> + <xsl:with-param name="topicSubgroup">Fields</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + </xsl:call-template> + + <!-- attached properties topic --> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subsubgroup">attachedProperty</xsl:with-param> + <xsl:with-param name="topicSubgroup">AttachedProperties</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + </xsl:call-template> + + <!-- attached events topic --> + <xsl:call-template name="AddMemberlistAPI"> + <xsl:with-param name="subsubgroup">attachedEvent</xsl:with-param> + <xsl:with-param name="topicSubgroup">AttachedEvents</xsl:with-param> + <xsl:with-param name="typeId" select="$typeId" /> + </xsl:call-template> + + <!-- overload topics --> + <xsl:call-template name="overloadTopics"> + <xsl:with-param name="allMembersTopicId" select="$allMembersTopicId"/> + </xsl:call-template> + + </xsl:if> + + </xsl:template> + + <!-- overload topics --> + + <xsl:template name="overloadTopics"> + <xsl:param name="allMembersTopicId"/> + <xsl:variable name="typeId" select="@id"/> + <xsl:variable name="members" select="key('index',elements/element[not(apidata)]/@api) | elements/element[apidata]" /> + <xsl:variable name="declaredPrefix" select="concat(substring($typeId,2), '.')"/> + + <xsl:for-each select="$members"> + <xsl:variable name="name" select="apidata/@name" /> + <xsl:variable name="memberId" select="@id | @api"/> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" /> + + <!-- EII members are not treated as overloads --> + <xsl:if test="not(proceduredata/@eii='true')"> + <!-- get the set of non-EII members with same name and subgroup --> + <xsl:variable name="overloadSet" select="$members[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]" /> + + <!-- are there any declared members in the overload set? --> + <xsl:variable name="declaredMembers" select="$overloadSet[starts-with(substring(@id,2),$declaredPrefix)]" /> + + <!-- if more than one member in overloadSet, add an overload topic if necessary --> + <xsl:if test="(count($overloadSet) > 1) and $overloadSet[1][@id=$memberId or @api=$memberId]"> + <!-- When merging multiple versions, an overload set may have multiple members with the same signature, + e.g. when one version inherits a member and another version overrides it. + We want an overload topic only when there are multiple signatures. --> + <!-- get the set of unique signatures for this overload set --> + <xsl:variable name="signatureSet"> + <xsl:call-template name="GetSignatureSet"> + <xsl:with-param name="overloadSet" select="$overloadSet"/> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:variable> + <xsl:choose> + <!-- don't need an overload topic if only one signature --> + <xsl:when test="count(msxsl:node-set($signatureSet)/*) < 2"/> + <!-- don't need an overload topic if all overloads are inherited and config'd to omit overload topics when all are inherited --> + <xsl:when test="(not(boolean($declaredMembers)) and $IncludeInheritedOverloadTopics='false')"/> + <xsl:otherwise> + <api> + <xsl:attribute name="id"> + <xsl:call-template name="overloadId"> + <xsl:with-param name="typeId" select="$typeId"/> + <xsl:with-param name="name" select="$name"/> + <xsl:with-param name="subgroup" select="$subgroup"/> + <xsl:with-param name="subsubgroup" select="$subsubgroup"/> + </xsl:call-template> + </xsl:attribute> + <topicdata name="{apidata/@name}" group="list" subgroup="overload" memberSubgroup="{$subgroup}" pseudo="true" allMembersTopicId="{$allMembersTopicId}"> + <xsl:if test="not(boolean($declaredMembers))"> + <xsl:attribute name="allInherited">true</xsl:attribute> + </xsl:if> + </topicdata> + <xsl:copy-of select="apidata" /> + <!-- elements --> + <elements> + <xsl:for-each select="msxsl:node-set($signatureSet)/*"> + <xsl:copy-of select="."/> + </xsl:for-each> + </elements> + <!-- containers --> + <xsl:choose> + <xsl:when test="boolean($declaredMembers)"> + <xsl:copy-of select="$declaredMembers[1]/containers"/> + </xsl:when> + <xsl:otherwise> + <containers> + <xsl:copy-of select="key('index',$typeId)/containers/library"/> + <xsl:copy-of select="key('index',$typeId)/containers/namespace"/> + <type api="{$typeId}"/> + </containers> + </xsl:otherwise> + </xsl:choose> + </api> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="WriteElementNode"> + <xsl:param name="typeId"/> + <xsl:choose> + <xsl:when test="local-name()='element'"> + <xsl:copy-of select="."/> + </xsl:when> + <xsl:otherwise> + <xsl:variable name="elementId" select="@id"/> + <xsl:copy-of select="key('index', $typeId)/elements/element[@api=$elementId]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="GetSignatureSet"> + <xsl:param name="name" select="apidata/@name" /> + <xsl:param name="overloadSet"/> + <xsl:param name="typeId"/> + + <xsl:choose> + <xsl:when test="count($overloadSet) = 1"> + <xsl:for-each select="$overloadSet"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="$overloadSet"> + <xsl:sort select="count(parameters/parameter)"/> + <xsl:sort select="key('index', parameters/parameter[1]//type[1]/@api)/apidata/@name"/> + <xsl:variable name="memberId" select="@id | @api"/> + <xsl:variable name="signature"> + <xsl:call-template name="GetSignature"> + <xsl:with-param name="name" select="$name"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="sameParamSignatureSet" select="$overloadSet[contains(@id|@api,$signature) and string-length(substring-after(@id|@api,$signature))=0]"/> + <!-- make sure all elements in the sameParamSignatureSet have the same return value --> + <xsl:variable name="returnsType" select="string(returns//type[1]/@api)"/> + <xsl:variable name="sameSignatureSet" select="$sameParamSignatureSet[(returns//type[1][@api=$returnsType]) or ($returnsType='' and not(returns//type))]"/> + <xsl:choose> + <xsl:when test="count(msxsl:node-set($sameSignatureSet)) > 1"> + <xsl:if test="$sameSignatureSet[1][@id=$memberId or @api=$memberId]"> + <!-- $sameSignatureSet is set of api nodes; for version check we need the corresponding set of element nodes --> + <xsl:variable name="elementSet"> + <xsl:for-each select="$sameSignatureSet"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:for-each> + </xsl:variable> + <!-- The first versions/versions node determines the primary version group, e.g. 'netfw'. --> + <xsl:variable name="primaryVersionGroup" select="versions/versions[1]/@name"/> + <!-- The primary element is the one with the most recent version for the primary version group. --> + <xsl:variable name="primaryVersionMemberId"> + <xsl:call-template name="GetSignatureWithLatestVersion"> + <xsl:with-param name="versionGroup" select="$primaryVersionGroup"/> + <xsl:with-param name="signatureset" select="$elementSet"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="primaryMemberId"> + <xsl:choose> + <xsl:when test="normalize-space($primaryVersionMemberId)!=''"> + <xsl:value-of select="normalize-space(substring-before($primaryVersionMemberId,';'))"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$sameSignatureSet[1]/@id|@api"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:for-each select="$sameSignatureSet[@id=$primaryMemberId or @api=$primaryMemberId]"> + <element api="{$primaryMemberId}" signatureset=""> + <!-- copy attributes and innerxml from the original element node --> + <xsl:choose> + <xsl:when test="local-name()='element'"> + <xsl:copy-of select="@*"/> + <xsl:copy-of select="*"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="key('index', $typeId)/elements/element[@api=$primaryMemberId]/@*"/> + </xsl:otherwise> + </xsl:choose> + <!-- for the secondary version groups, copy in the signatureset's latest member (if different from primary member) --> + <xsl:call-template name="nonPrimaryVersionElements"> + <xsl:with-param name="usedIds" select="concat($primaryMemberId,';')"/> + <xsl:with-param name="elementSet" select="$elementSet"/> + <xsl:with-param name="sameSignatureSet" select="$sameSignatureSet"/> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </element> + </xsl:for-each> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="nonPrimaryVersionElements"> + <xsl:param name="usedIds"/> + <xsl:param name="elementSet"/> + <xsl:param name="sameSignatureSet"/> + <xsl:param name="typeId"/> + + <xsl:if test="count(versions/versions)>1"> + <xsl:variable name="versionGroupId2" select="versions/versions[2]/@name"/> + <xsl:variable name="versionMemberIdSet2"> + <xsl:call-template name="GetSignatureWithLatestVersion"> + <xsl:with-param name="versionGroup" select="$versionGroupId2"/> + <xsl:with-param name="signatureset" select="$elementSet"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="versionMemberId2"> + <xsl:value-of select="normalize-space(substring-before($versionMemberIdSet2,';'))"/> + </xsl:variable> + <xsl:if test="(normalize-space($versionMemberId2)!='') and not(contains($usedIds,concat($versionMemberId2,';')))"> + <xsl:for-each select="$sameSignatureSet[@id=$versionMemberId2 or @api=$versionMemberId2]"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:for-each> + </xsl:if> + + <xsl:if test="count(versions/versions)>2"> + <xsl:variable name="usedIds2" select="concat($usedIds,$versionMemberId2,';')"/> + <xsl:variable name="versionGroupId3" select="versions/versions[3]/@name"/> + <xsl:variable name="versionMemberIdSet3"> + <xsl:call-template name="GetSignatureWithLatestVersion"> + <xsl:with-param name="versionGroup" select="$versionGroupId3"/> + <xsl:with-param name="signatureset" select="$elementSet"/> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="versionMemberId3"> + <xsl:value-of select="normalize-space(substring-before($versionMemberIdSet3,';'))"/> + </xsl:variable> + <xsl:if test="(normalize-space($versionMemberId3)!='') and not(contains($usedIds2,concat($versionMemberId3,';')))"> + <xsl:for-each select="$sameSignatureSet[@id=$versionMemberId3 or @api=$versionMemberId3]"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:for-each> + </xsl:if> + </xsl:if> + </xsl:if> + </xsl:template> + + <xsl:template name="GetSignatureWithLatestVersion"> + <xsl:param name="versionGroup"/> + <xsl:param name="signatureset"/> + <xsl:for-each select="msxsl:node-set($signatureset)/*[@*[local-name()=$versionGroup]]"> + <xsl:variable name="currVersion" select="@*[local-name()=$versionGroup]"/> + <xsl:variable name="isLatest"> + <xsl:call-template name="IsLatestVersion"> + <xsl:with-param name="version" select="$currVersion"/> + <xsl:with-param name="versionGroup" select="$versionGroup"/> + <xsl:with-param name="signatureset" select="$signatureset"/> + </xsl:call-template> + </xsl:variable> + <!-- IsLatestVersion returns '' if this is the latest version number --> + <xsl:if test="normalize-space($isLatest)=''"><xsl:value-of select="@api"/><xsl:text>;</xsl:text></xsl:if> + </xsl:for-each> + </xsl:template> + + <xsl:template name="IsLatestVersion"> + <xsl:param name="version"/> + <xsl:param name="versionGroup"/> + <xsl:param name="signatureset"/> + <!-- loop through the versions; output is '' if there are no lower versions --> + <xsl:for-each select="msxsl:node-set($signatureset)/*[@*[local-name()=$versionGroup]]"> + <xsl:variable name="currVersion" select="@*[local-name()=$versionGroup]"/> + <xsl:if test="ms:string-compare($currVersion, $version) = 1">false</xsl:if> + </xsl:for-each> + </xsl:template> + + <!-- --> + <xsl:template name="GetSignature"> + <xsl:param name="name" /> + <xsl:param name="memberId" select="@id | @api"/> + <xsl:variable name="paramString" select="substring-after($memberId,'(')"/> + <xsl:variable name="tickString" select="substring-after($memberId,'``')"/> + <xsl:variable name="memberName"> + <xsl:choose> + <xsl:when test="$name='.ctor' or $name='.cctor'">ctor</xsl:when> + <!-- for explicit interface implementation members, return the membername with # instead of ., so it matches cref ids --> + <xsl:when test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']"> + <xsl:value-of select="translate($name,'.','#')"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:choose> + <xsl:when test="string-length($tickString) > string-length($paramString)"> + <xsl:value-of select="concat('.',$memberName,'``',$tickString)"/> + </xsl:when> + <xsl:when test="boolean($paramString)"> + <xsl:value-of select="concat('.',$memberName,'(',$paramString)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('.',$memberName)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- member list topics --> + + <xsl:template name="AddMemberlistAPI"> + <xsl:param name="subgroup"/> + <xsl:param name="subsubgroup"/> + <xsl:param name="topicSubgroup"/> + <xsl:param name="typeId" /> + <xsl:param name="declaredPrefix" select="concat(substring-after($typeId,':'), '.')"/> + <!-- get the type's declared members for this subgroup --> + <xsl:param name="declaredMembers" select="key('index',elements/element[not(apidata)][starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]] + | elements/element[starts-with(substring-after(@api,':'), $declaredPrefix)][apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]"/> + <!-- get all the type's members for this subgroup --> + <xsl:param name="members" select="key('index',elements/element[not(apidata)]/@api)[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]] + | elements/element[apidata[($subgroup='' and @subsubgroup=$subsubgroup) or ($subsubgroup='' and not(@subsubgroup) and @subgroup=$subgroup)]]"/> + + <!-- add a member list topic only if the type has declared members --> + <xsl:if test="count($declaredMembers) > 0"> + <api> + <xsl:attribute name="id"> + <xsl:value-of select="concat($topicSubgroup, '.', $typeId)"/> + </xsl:attribute> + <topicdata name="{apidata/@name}" group="list" subgroup="{$topicSubgroup}"> + <xsl:if test="boolean($subsubgroup)"> + <xsl:attribute name="subsubgroup"> + <xsl:value-of select="$topicSubgroup"/> + </xsl:attribute> + </xsl:if> + <xsl:attribute name="typeTopicId"> + <xsl:value-of select="$typeId"/> + </xsl:attribute> + </topicdata> + <xsl:copy-of select="apidata" /> + <xsl:copy-of select="typedata" /> + <xsl:copy-of select="templates" /> + <!-- elements --> + <xsl:call-template name="memberListElements"> + <xsl:with-param name="members" select="$members"/> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + <xsl:copy-of select="containers" /> + </api> + </xsl:if> + </xsl:template> + + <xsl:template name="memberListElements"> + <xsl:param name="members" select="key('index',element[not(apidata)]/@api) | element[apidata]" /> + <xsl:param name="typeId" /> + <xsl:variable name="declaredPrefix" select="concat(substring($typeId,2), '.')"/> + + <elements> + <xsl:for-each select="$members"> + <xsl:variable name="name" select="apidata/@name" /> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="subsubgroup" select="apidata/@subsubgroup" /> + <xsl:variable name="memberId" select="@id | @api"/> + + <xsl:choose> + <!-- EII members are not treated as overloads --> + <xsl:when test="proceduredata/@eii='true'"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:when> + + <!-- field members cannot be overloaded, so skip the overload logic and just write the element node --> + <xsl:when test="$subgroup='field'"> + <xsl:call-template name="WriteElementNode"> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:when> + + <!-- for non-EII members, handle overloads and signature sets --> + <xsl:otherwise> + <!-- get the set of overloads: non-EII members with same name and subgroup --> + <xsl:variable name="overloadSet" select="$members[not(proceduredata/@eii='true') and apidata[@name=$name and @subgroup=$subgroup and (@subsubgroup=$subsubgroup or (not(boolean($subsubgroup)) and not(@subsubgroup)))]]"/> + + <!-- are there any declared members in the overload set? --> + <xsl:variable name="declaredMembers" select="$overloadSet[starts-with(substring(@id,2),$declaredPrefix)]" /> + + <xsl:variable name="signatureSet"> + <xsl:call-template name="GetSignatureSet"> + <xsl:with-param name="overloadSet" select="$overloadSet"/> + <xsl:with-param name="typeId" select="$typeId"/> + </xsl:call-template> + </xsl:variable> + + <!-- make sure we add to the list only once --> + <xsl:if test="$overloadSet[1][@id=$memberId or @api=$memberId]"> + <!-- When merging multiple versions, an overload set may have multiple members with the same signature, + e.g. when one version inherits a member and another version overrides it. + We want an overload topic only when there are multiple signatures. --> + <!-- get the set of unique signatures for this overload set --> + <!-- + --> + <xsl:choose> + <!-- don't need an overload topic if only one signature --> + <xsl:when test="count(msxsl:node-set($signatureSet)/*) = 1"> + <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/> + </xsl:when> + <!-- just copy the elements if all overloads are inherited and config'd to omit overload topics when all are inherited --> + <xsl:when test="(not(boolean($declaredMembers)) and $IncludeInheritedOverloadTopics='false')"> + <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/> + </xsl:when> + <xsl:otherwise> + <element> + <xsl:attribute name="api"> + <xsl:call-template name="overloadId"> + <xsl:with-param name="typeId" select="$typeId"/> + <xsl:with-param name="name" select="$name"/> + <xsl:with-param name="subgroup" select="$subgroup"/> + <xsl:with-param name="subsubgroup" select="$subsubgroup"/> + </xsl:call-template> + </xsl:attribute> + <xsl:copy-of select="msxsl:node-set($signatureSet)/*"/> + </element> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </elements> + </xsl:template> + + <xsl:template name="overloadId"> + <xsl:param name="typeId"/> + <xsl:param name="name"/> + <xsl:param name="subgroup"/> + <xsl:param name="subsubgroup"/> + <xsl:choose> + <xsl:when test="$subgroup='constructor'"> + <xsl:value-of select="concat('Overload:',substring($typeId,3),'.#ctor')"/> + </xsl:when> + <xsl:when test="$subsubgroup='operator'"> + <xsl:value-of select="concat('Overload:',substring($typeId,3),'.op_',$name)"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('Overload:',substring($typeId,3),'.',$name)"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="projectTopic"> + <api id="R:{$project}"> + <topicdata group="root" /> + <elements> + <xsl:for-each select="/*/apis/api[apidata/@group='namespace']"> + <element api="{@id}" /> + </xsl:for-each> + </elements> + </api> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/CreateHxC.xsl b/tools/Sandcastle/ProductionTransforms/CreateHxC.xsl index a3d1c5b..8ac83a1 100644 --- a/tools/Sandcastle/ProductionTransforms/CreateHxC.xsl +++ b/tools/Sandcastle/ProductionTransforms/CreateHxC.xsl @@ -1,38 +1,38 @@ -<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.1">
-
- <!-- Create HxC project file for hxcomp.exe. The input can be any well formed
- XML file; it is used only to satisfy XslTransform, which needs an input
- file to run the transform. Make sure to set the fileNamePrefix. -->
-
- <xsl:output doctype-system="MS-Help://Hx/Resources/HelpCollection.dtd" indent="yes" encoding="utf-8" />
-
- <!-- $fileNamePrefix is the prefix used for all files names. -->
- <xsl:param name="fileNamePrefix">test</xsl:param>
-
- <xsl:template match="/">
- <HelpCollection DTDVersion="1.0" FileVersion="08.00.50720.2102" LangId="1033" Title="Common Scripts" Copyright="© 2005 Microsoft Corporation. All rights reserved.">
- <CompilerOptions OutputFile="{$fileNamePrefix}.HxS" CreateFullTextIndex="Yes" CompileResult="Hxs">
- <IncludeFile File="{$fileNamePrefix}.HxF" />
- </CompilerOptions>
- <TOCDef File="{$fileNamePrefix}.HxT" />
- <KeywordIndexDef File="{$fileNamePrefix}_A.HxK" />
- <KeywordIndexDef File="{$fileNamePrefix}_K.HxK" />
- <KeywordIndexDef File="{$fileNamePrefix}_F.HxK" />
- <KeywordIndexDef File="{$fileNamePrefix}_N.HxK" />
- <KeywordIndexDef File="{$fileNamePrefix}_S.HxK" />
- <KeywordIndexDef File="{$fileNamePrefix}_B.HxK" />
- <ItemMoniker Name="!DefaultTOC" ProgId="HxDs.HxHierarchy" InitData="AnyString" />
- <ItemMoniker Name="!DefaultFullTextSearch" ProgId="HxDs.HxFullTextSearch" InitData="AnyString" />
- <ItemMoniker Name="!DefaultAssociativeIndex" ProgId="HxDs.HxIndex" InitData="A" />
- <ItemMoniker Name="!DefaultKeywordIndex" ProgId="HxDs.HxIndex" InitData="K" />
- <ItemMoniker Name="!DefaultContextWindowIndex" ProgId="HxDs.HxIndex" InitData="F" />
- <ItemMoniker Name="!DefaultNamedUrlIndex" ProgId="HxDs.HxIndex" InitData="NamedUrl" />
- <ItemMoniker Name="!DefaultSearchWindowIndex" ProgId="HxDs.HxIndex" InitData="S" />
- <ItemMoniker Name="!DefaultDynamicLinkIndex" ProgId="HxDs.HxIndex" InitData="B" />
- </HelpCollection>
- </xsl:template>
-
+<?xml version="1.0"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + version="1.1"> + + <!-- Create HxC project file for hxcomp.exe. The input can be any well formed + XML file; it is used only to satisfy XslTransform, which needs an input + file to run the transform. Make sure to set the fileNamePrefix. --> + + <xsl:output doctype-system="MS-Help://Hx/Resources/HelpCollection.dtd" indent="yes" encoding="utf-8" /> + + <!-- $fileNamePrefix is the prefix used for all files names. --> + <xsl:param name="fileNamePrefix">test</xsl:param> + + <xsl:template match="/"> + <HelpCollection DTDVersion="1.0" FileVersion="08.00.50720.2102" LangId="1033" Title="Common Scripts" Copyright="© 2005 Microsoft Corporation. All rights reserved."> + <CompilerOptions OutputFile="{$fileNamePrefix}.HxS" CreateFullTextIndex="Yes" CompileResult="Hxs"> + <IncludeFile File="{$fileNamePrefix}.HxF" /> + </CompilerOptions> + <TOCDef File="{$fileNamePrefix}.HxT" /> + <KeywordIndexDef File="{$fileNamePrefix}_A.HxK" /> + <KeywordIndexDef File="{$fileNamePrefix}_K.HxK" /> + <KeywordIndexDef File="{$fileNamePrefix}_F.HxK" /> + <KeywordIndexDef File="{$fileNamePrefix}_N.HxK" /> + <KeywordIndexDef File="{$fileNamePrefix}_S.HxK" /> + <KeywordIndexDef File="{$fileNamePrefix}_B.HxK" /> + <ItemMoniker Name="!DefaultTOC" ProgId="HxDs.HxHierarchy" InitData="AnyString" /> + <ItemMoniker Name="!DefaultFullTextSearch" ProgId="HxDs.HxFullTextSearch" InitData="AnyString" /> + <ItemMoniker Name="!DefaultAssociativeIndex" ProgId="HxDs.HxIndex" InitData="A" /> + <ItemMoniker Name="!DefaultKeywordIndex" ProgId="HxDs.HxIndex" InitData="K" /> + <ItemMoniker Name="!DefaultContextWindowIndex" ProgId="HxDs.HxIndex" InitData="F" /> + <ItemMoniker Name="!DefaultNamedUrlIndex" ProgId="HxDs.HxIndex" InitData="NamedUrl" /> + <ItemMoniker Name="!DefaultSearchWindowIndex" ProgId="HxDs.HxIndex" InitData="S" /> + <ItemMoniker Name="!DefaultDynamicLinkIndex" ProgId="HxDs.HxIndex" InitData="B" /> + </HelpCollection> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/CreatePrototypeToc.xsl b/tools/Sandcastle/ProductionTransforms/CreatePrototypeToc.xsl index b02df2e..e825a32 100644 --- a/tools/Sandcastle/ProductionTransforms/CreatePrototypeToc.xsl +++ b/tools/Sandcastle/ProductionTransforms/CreatePrototypeToc.xsl @@ -1,142 +1,142 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:param name="segregated" select="false()" />
-
- <xsl:output indent="yes" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <topics>
- <xsl:choose>
- <xsl:when test="count(/reflection/apis/api[apidata/@group='root']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='root']" />
- </xsl:when>
- <xsl:when test="count(/reflection/apis/api[apidata/@group='namespace']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='type']">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </topics>
- </xsl:template>
-
- <!-- create a root entry and namespace sub-entries -->
- <xsl:template match="api[apidata/@group='root']">
- <topic id="{@id}" file="{file/@name}">
- <xsl:apply-templates select="key('index',elements/element/@api)">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </topic>
- </xsl:template>
-
-
- <!-- for each namespace, create namespace entry and type sub-entries -->
- <xsl:template match="api[apidata/@group='namespace']">
- <topic id="{@id}" file="{file/@name}">
- <xsl:apply-templates select="key('index',elements/element/@api)">
- <xsl:sort select="@id" />
- </xsl:apply-templates>
- </topic>
- </xsl:template>
-
- <!-- for each type, create type entry and either overload entries or member entries as sub-entries -->
- <xsl:template match="api[apidata/@group='type']">
- <xsl:choose>
- <xsl:when test="$segregated">
- <stopic id="{@id}" project="{containers/library/@assembly}" file="{file/@name}">
- <xsl:call-template name="processType" />
- </stopic>
- </xsl:when>
- <xsl:otherwise>
- <topic id="{@id}" file="{file/@name}">
- <xsl:call-template name="processType" />
- </topic>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="processType">
- <xsl:variable name="typeId" select="@id" />
- <xsl:variable name="members" select="key('index',elements/element/@api)[containers/type/@api=$typeId]" />
- <xsl:for-each select="$members">
- <xsl:sort select="apidata/@name" />
- <xsl:variable name="name" select="apidata/@name" />
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="set" select="$members[apidata/@name=$name and apidata/@subgroup=$subgroup]" />
- <xsl:choose>
- <xsl:when test="count($set) > 1">
- <xsl:if test="($set[1]/@id)=@id">
- <xsl:variable name="overloadId">
- <xsl:value-of select="overload/@api" />
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$segregated">
- <stopic id="{@id}" project="{containers/library/@assembly}" file="{key('index',$overloadId)/file/@name}">
- <xsl:for-each select="$set">
- <xsl:apply-templates select="." />
- </xsl:for-each>
- </stopic>
- </xsl:when>
- <xsl:otherwise>
- <topic id="{@id}" file="{key('index',$overloadId)/file/@name}">
- <xsl:for-each select="$set">
- <xsl:apply-templates select="." />
- </xsl:for-each>
- </topic>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:if>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </xsl:template>
-
- <!-- for each member, create a leaf entry -->
- <xsl:template match="api[apidata/@group='member']">
- <xsl:choose>
- <xsl:when test="$segregated">
- <stopic id="{@id}" project="{containers/library/@assembly}" file="{file/@name}" />
- </xsl:when>
- <xsl:otherwise>
- <topic id="{@id}" file="{file/@name}" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="overloadId">
- <xsl:param name="memberId" />
- <xsl:text>Overload:</xsl:text>
- <xsl:variable name="noParameters">
- <xsl:choose>
- <xsl:when test="contains($memberId,'(')">
- <xsl:value-of select="substring-before($memberId,'(')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$memberId" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="noGeneric">
- <xsl:choose>
- <xsl:when test="contains($noParameters,'``')">
- <xsl:value-of select="substring-before($noParameters,'``')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$noParameters" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:value-of select="substring($noGeneric,3)" />
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:param name="segregated" select="false()" /> + + <xsl:output indent="yes" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <topics> + <xsl:choose> + <xsl:when test="count(/reflection/apis/api[apidata/@group='root']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='root']" /> + </xsl:when> + <xsl:when test="count(/reflection/apis/api[apidata/@group='namespace']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='type']"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </topics> + </xsl:template> + + <!-- create a root entry and namespace sub-entries --> + <xsl:template match="api[apidata/@group='root']"> + <topic id="{@id}" file="{file/@name}"> + <xsl:apply-templates select="key('index',elements/element/@api)"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </topic> + </xsl:template> + + + <!-- for each namespace, create namespace entry and type sub-entries --> + <xsl:template match="api[apidata/@group='namespace']"> + <topic id="{@id}" file="{file/@name}"> + <xsl:apply-templates select="key('index',elements/element/@api)"> + <xsl:sort select="@id" /> + </xsl:apply-templates> + </topic> + </xsl:template> + + <!-- for each type, create type entry and either overload entries or member entries as sub-entries --> + <xsl:template match="api[apidata/@group='type']"> + <xsl:choose> + <xsl:when test="$segregated"> + <stopic id="{@id}" project="{containers/library/@assembly}" file="{file/@name}"> + <xsl:call-template name="processType" /> + </stopic> + </xsl:when> + <xsl:otherwise> + <topic id="{@id}" file="{file/@name}"> + <xsl:call-template name="processType" /> + </topic> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="processType"> + <xsl:variable name="typeId" select="@id" /> + <xsl:variable name="members" select="key('index',elements/element/@api)[containers/type/@api=$typeId]" /> + <xsl:for-each select="$members"> + <xsl:sort select="apidata/@name" /> + <xsl:variable name="name" select="apidata/@name" /> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="set" select="$members[apidata/@name=$name and apidata/@subgroup=$subgroup]" /> + <xsl:choose> + <xsl:when test="count($set) > 1"> + <xsl:if test="($set[1]/@id)=@id"> + <xsl:variable name="overloadId"> + <xsl:value-of select="overload/@api" /> + </xsl:variable> + <xsl:choose> + <xsl:when test="$segregated"> + <stopic id="{@id}" project="{containers/library/@assembly}" file="{key('index',$overloadId)/file/@name}"> + <xsl:for-each select="$set"> + <xsl:apply-templates select="." /> + </xsl:for-each> + </stopic> + </xsl:when> + <xsl:otherwise> + <topic id="{@id}" file="{key('index',$overloadId)/file/@name}"> + <xsl:for-each select="$set"> + <xsl:apply-templates select="." /> + </xsl:for-each> + </topic> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </xsl:template> + + <!-- for each member, create a leaf entry --> + <xsl:template match="api[apidata/@group='member']"> + <xsl:choose> + <xsl:when test="$segregated"> + <stopic id="{@id}" project="{containers/library/@assembly}" file="{file/@name}" /> + </xsl:when> + <xsl:otherwise> + <topic id="{@id}" file="{file/@name}" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="overloadId"> + <xsl:param name="memberId" /> + <xsl:text>Overload:</xsl:text> + <xsl:variable name="noParameters"> + <xsl:choose> + <xsl:when test="contains($memberId,'(')"> + <xsl:value-of select="substring-before($memberId,'(')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$memberId" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:variable name="noGeneric"> + <xsl:choose> + <xsl:when test="contains($noParameters,'``')"> + <xsl:value-of select="substring-before($noParameters,'``')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$noParameters" /> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:value-of select="substring($noGeneric,3)" /> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/CreateVSToc.xsl b/tools/Sandcastle/ProductionTransforms/CreateVSToc.xsl index afec23d..31842a4 100644 --- a/tools/Sandcastle/ProductionTransforms/CreateVSToc.xsl +++ b/tools/Sandcastle/ProductionTransforms/CreateVSToc.xsl @@ -1,207 +1,207 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:param name="projectName" />
- <xsl:param name="maxProjectNameLength" select="49" /> <!-- default provided by paorear, bug 230840 -->
- <xsl:variable name="leftLength" select="$maxProjectNameLength div 2 - 1" />
- <xsl:variable name="rightLength" select="$maxProjectNameLength - $leftLength - 2" />
- <xsl:variable name="projectPrefix">
- <xsl:if test="boolean($projectName)">
- <xsl:value-of select="concat($projectName,'_')"/>
- </xsl:if>
- </xsl:variable>
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <topics>
- <xsl:choose>
- <xsl:when test="count(/reflection/apis/api[apidata/@group='root']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='root']" />
- </xsl:when>
- <xsl:when test="count(/reflection/apis/api[topicdata/@group='root']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[topicdata/@group='root']" />
- </xsl:when>
- <xsl:when test="count(/reflection/apis/api[apidata/@group='namespace']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </xsl:when>
- <xsl:when test="count(/reflection/apis/api[apidata/@group='type']) > 0">
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='type'][topicdata[@group='api']]">
- <xsl:sort select="@id" />
- </xsl:apply-templates>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='member']">
- <xsl:sort select="@id" />
- </xsl:apply-templates>
- </xsl:otherwise>
- </xsl:choose>
- </topics>
- </xsl:template>
-
- <!-- create a root entry and namespace sub-entries -->
- <xsl:template match="api[apidata/@group='root'] | api[topicdata/@group='root']">
- <topic id="{@id}" project="{$projectName}" file="{file/@name}">
- <xsl:apply-templates select="key('index',elements/element/@api)">
- <xsl:sort select="apidata/@name" />
- </xsl:apply-templates>
- </topic>
- </xsl:template>
-
- <!-- for each namespace, create namespace entry and type sub-entries -->
- <xsl:template match="api[apidata/@group='namespace']">
- <topic id="{@id}" project="{$projectName}_Namespaces" file="{file/@name}">
- <xsl:apply-templates select="key('index',elements/element/@api)">
- <xsl:sort select="@id" />
- </xsl:apply-templates>
- </topic>
- </xsl:template>
-
- <!-- logic to shorten component names if needed -->
- <xsl:template name="GetComponentName">
- <xsl:param name="initialName" select="containers/library/@assembly" />
- <xsl:variable name="componentNameLength" select="string-length($initialName)" />
- <xsl:choose>
- <xsl:when test="$componentNameLength > $maxProjectNameLength">
- <xsl:variable name="left" select="substring($initialName, 1, $leftLength)" />
- <xsl:variable name="right" select="substring($initialName, $componentNameLength - $rightLength)" />
- <xsl:value-of select="concat($left,'_',$right)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="$initialName" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <!-- for each type, create type entry and either overload entries or member entries as sub-entries -->
- <xsl:template match="api[apidata/@group='type'][topicdata[@group='api']]">
- <xsl:variable name="componentName">
- <xsl:call-template name="GetComponentName">
- <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" />
- </xsl:call-template>
- </xsl:variable>
- <topic id="{@id}" project="{$componentName}" file="{file/@name}">
- <xsl:call-template name="AddMemberListTopics"/>
- </topic>
- </xsl:template>
-
- <!-- For class, struct, and interface, insert nodes for the member list topics,
- and insert nodes for the declared member topics under the appropriate list topic. -->
- <xsl:template name="AddMemberListTopics">
- <xsl:variable name="typeId" select="@id" />
- <xsl:variable name="declaredPrefix" select="concat(substring($typeId,3), '.')"/>
- <xsl:variable name="componentName">
- <xsl:call-template name="GetComponentName">
- <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" />
- </xsl:call-template>
- </xsl:variable>
-
- <xsl:if test="apidata[@subgroup='class' or @subgroup='structure' or @subgroup='interface']">
- <!-- insert the all members topic, if present -->
- <xsl:for-each select="key('index', topicdata/@allMembersTopicId)">
- <topic id="{@id}" project="{$componentName}" file="{file/@name}"/>
- </xsl:for-each>
-
- <!-- insert constructors -->
- <!-- the context now is the type's api node, which has an element list in vsorcas docmodel, but not in vs2005 -->
- <xsl:choose>
- <xsl:when test="topicdata/@allMembersTopicId">
- <xsl:for-each select="key('index', key('index', topicdata/@allMembersTopicId)/elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='constructor']]">
- <xsl:call-template name="AddMember">
- <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:when>
- <xsl:otherwise>
- <xsl:for-each select="key('index', elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='constructor']]">
- <xsl:call-template name="AddMember">
- <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:otherwise>
- </xsl:choose>
-
- <!-- insert the Fields topic, if present -->
- <xsl:for-each select="key('index', concat('Fields.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- <!-- insert the Methods topic, if present -->
- <xsl:for-each select="key('index', concat('Methods.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- <!-- insert the Properties topic, if present -->
- <xsl:for-each select="key('index', concat('Properties.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- <!-- insert the Events topic, if present -->
- <xsl:for-each select="key('index', concat('Events.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- <!-- insert the AttachedProperties topic, if present -->
- <xsl:for-each select="key('index', concat('AttachedProperties.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- <!-- insert the AttachedEvents topic, if present -->
- <xsl:for-each select="key('index', concat('AttachedEvents.', $typeId))">
- <xsl:call-template name="AddMemberListTree"/>
- </xsl:for-each>
-
- </xsl:if>
- </xsl:template>
-
- <xsl:template name="AddMemberListTree">
- <xsl:variable name="componentName">
- <xsl:call-template name="GetComponentName">
- <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" />
- </xsl:call-template>
- </xsl:variable>
- <xsl:variable name="declaredPrefix" select="concat(substring(topicdata/@typeTopicId,3), '.')"/>
- <topic id="{@id}" project="{$componentName}" file="{file/@name}">
- <!-- recurse to get declared child element topics, if any -->
- <xsl:for-each select="key('index', elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)">
- <!-- sort the elements in a member list topic by name -->
- <xsl:sort select="apidata/@name" />
- <xsl:call-template name="AddMember">
- <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/>
- </xsl:call-template>
- </xsl:for-each>
- </topic>
- </xsl:template>
-
- <xsl:template name="AddMember">
- <xsl:param name="declaredPrefix" />
- <xsl:variable name="componentName">
- <xsl:call-template name="GetComponentName">
- <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" />
- </xsl:call-template>
- </xsl:variable>
- <topic id="{@id}" project="{$componentName}" file="{file/@name}">
- <!-- loop throught the declared elements, if any, which are already pre-sorted by the ApplyVsDocModel transform;
- if you were to loop through the key('index', elements) as in the AddMemberListTree template,
- you'd lose the pre-sort and get the order of apis in the document
- -->
- <xsl:for-each select="elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]">
- <xsl:for-each select="key('index',@api)">
- <xsl:call-template name="AddMember">
- <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/>
- </xsl:call-template>
- </xsl:for-each>
- </xsl:for-each>
- </topic>
- </xsl:template>
-
- <!-- if only members are present, create toc entries for them (this should never be a visible toc) -->
- <xsl:template match="api[apidata/@group='member']">
- <topic id="{@id}" project="{$projectName}" file="{file/@name}" />
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:param name="projectName" /> + <xsl:param name="maxProjectNameLength" select="49" /> <!-- default provided by paorear, bug 230840 --> + <xsl:variable name="leftLength" select="$maxProjectNameLength div 2 - 1" /> + <xsl:variable name="rightLength" select="$maxProjectNameLength - $leftLength - 2" /> + <xsl:variable name="projectPrefix"> + <xsl:if test="boolean($projectName)"> + <xsl:value-of select="concat($projectName,'_')"/> + </xsl:if> + </xsl:variable> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <topics> + <xsl:choose> + <xsl:when test="count(/reflection/apis/api[apidata/@group='root']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='root']" /> + </xsl:when> + <xsl:when test="count(/reflection/apis/api[topicdata/@group='root']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[topicdata/@group='root']" /> + </xsl:when> + <xsl:when test="count(/reflection/apis/api[apidata/@group='namespace']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="count(/reflection/apis/api[apidata/@group='type']) > 0"> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='type'][topicdata[@group='api']]"> + <xsl:sort select="@id" /> + </xsl:apply-templates> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='member']"> + <xsl:sort select="@id" /> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </topics> + </xsl:template> + + <!-- create a root entry and namespace sub-entries --> + <xsl:template match="api[apidata/@group='root'] | api[topicdata/@group='root']"> + <topic id="{@id}" project="{$projectName}" file="{file/@name}"> + <xsl:apply-templates select="key('index',elements/element/@api)"> + <xsl:sort select="apidata/@name" /> + </xsl:apply-templates> + </topic> + </xsl:template> + + <!-- for each namespace, create namespace entry and type sub-entries --> + <xsl:template match="api[apidata/@group='namespace']"> + <topic id="{@id}" project="{$projectName}_Namespaces" file="{file/@name}"> + <xsl:apply-templates select="key('index',elements/element/@api)"> + <xsl:sort select="@id" /> + </xsl:apply-templates> + </topic> + </xsl:template> + + <!-- logic to shorten component names if needed --> + <xsl:template name="GetComponentName"> + <xsl:param name="initialName" select="containers/library/@assembly" /> + <xsl:variable name="componentNameLength" select="string-length($initialName)" /> + <xsl:choose> + <xsl:when test="$componentNameLength > $maxProjectNameLength"> + <xsl:variable name="left" select="substring($initialName, 1, $leftLength)" /> + <xsl:variable name="right" select="substring($initialName, $componentNameLength - $rightLength)" /> + <xsl:value-of select="concat($left,'_',$right)" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$initialName" /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- for each type, create type entry and either overload entries or member entries as sub-entries --> + <xsl:template match="api[apidata/@group='type'][topicdata[@group='api']]"> + <xsl:variable name="componentName"> + <xsl:call-template name="GetComponentName"> + <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" /> + </xsl:call-template> + </xsl:variable> + <topic id="{@id}" project="{$componentName}" file="{file/@name}"> + <xsl:call-template name="AddMemberListTopics"/> + </topic> + </xsl:template> + + <!-- For class, struct, and interface, insert nodes for the member list topics, + and insert nodes for the declared member topics under the appropriate list topic. --> + <xsl:template name="AddMemberListTopics"> + <xsl:variable name="typeId" select="@id" /> + <xsl:variable name="declaredPrefix" select="concat(substring($typeId,3), '.')"/> + <xsl:variable name="componentName"> + <xsl:call-template name="GetComponentName"> + <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" /> + </xsl:call-template> + </xsl:variable> + + <xsl:if test="apidata[@subgroup='class' or @subgroup='structure' or @subgroup='interface']"> + <!-- insert the all members topic, if present --> + <xsl:for-each select="key('index', topicdata/@allMembersTopicId)"> + <topic id="{@id}" project="{$componentName}" file="{file/@name}"/> + </xsl:for-each> + + <!-- insert constructors --> + <!-- the context now is the type's api node, which has an element list in vsorcas docmodel, but not in vs2005 --> + <xsl:choose> + <xsl:when test="topicdata/@allMembersTopicId"> + <xsl:for-each select="key('index', key('index', topicdata/@allMembersTopicId)/elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='constructor']]"> + <xsl:call-template name="AddMember"> + <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/> + </xsl:call-template> + </xsl:for-each> + </xsl:when> + <xsl:otherwise> + <xsl:for-each select="key('index', elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)[apidata[@subgroup='constructor']]"> + <xsl:call-template name="AddMember"> + <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/> + </xsl:call-template> + </xsl:for-each> + </xsl:otherwise> + </xsl:choose> + + <!-- insert the Fields topic, if present --> + <xsl:for-each select="key('index', concat('Fields.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + <!-- insert the Methods topic, if present --> + <xsl:for-each select="key('index', concat('Methods.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + <!-- insert the Properties topic, if present --> + <xsl:for-each select="key('index', concat('Properties.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + <!-- insert the Events topic, if present --> + <xsl:for-each select="key('index', concat('Events.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + <!-- insert the AttachedProperties topic, if present --> + <xsl:for-each select="key('index', concat('AttachedProperties.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + <!-- insert the AttachedEvents topic, if present --> + <xsl:for-each select="key('index', concat('AttachedEvents.', $typeId))"> + <xsl:call-template name="AddMemberListTree"/> + </xsl:for-each> + + </xsl:if> + </xsl:template> + + <xsl:template name="AddMemberListTree"> + <xsl:variable name="componentName"> + <xsl:call-template name="GetComponentName"> + <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" /> + </xsl:call-template> + </xsl:variable> + <xsl:variable name="declaredPrefix" select="concat(substring(topicdata/@typeTopicId,3), '.')"/> + <topic id="{@id}" project="{$componentName}" file="{file/@name}"> + <!-- recurse to get declared child element topics, if any --> + <xsl:for-each select="key('index', elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]/@api)"> + <!-- sort the elements in a member list topic by name --> + <xsl:sort select="apidata/@name" /> + <xsl:call-template name="AddMember"> + <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/> + </xsl:call-template> + </xsl:for-each> + </topic> + </xsl:template> + + <xsl:template name="AddMember"> + <xsl:param name="declaredPrefix" /> + <xsl:variable name="componentName"> + <xsl:call-template name="GetComponentName"> + <xsl:with-param name="initialName" select="concat($projectPrefix,containers/library/@assembly)" /> + </xsl:call-template> + </xsl:variable> + <topic id="{@id}" project="{$componentName}" file="{file/@name}"> + <!-- loop throught the declared elements, if any, which are already pre-sorted by the ApplyVsDocModel transform; + if you were to loop through the key('index', elements) as in the AddMemberListTree template, + you'd lose the pre-sort and get the order of apis in the document + --> + <xsl:for-each select="elements/*[starts-with(substring-after(@api,':'), $declaredPrefix)]"> + <xsl:for-each select="key('index',@api)"> + <xsl:call-template name="AddMember"> + <xsl:with-param name="declaredPrefix" select="$declaredPrefix"/> + </xsl:call-template> + </xsl:for-each> + </xsl:for-each> + </topic> + </xsl:template> + + <!-- if only members are present, create toc entries for them (this should never be a visible toc) --> + <xsl:template match="api[apidata/@group='member']"> + <topic id="{@id}" project="{$projectName}" file="{file/@name}" /> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/DsManifestToManifest.xsl b/tools/Sandcastle/ProductionTransforms/DsManifestToManifest.xsl index da42b4b..02d9b2e 100644 --- a/tools/Sandcastle/ProductionTransforms/DsManifestToManifest.xsl +++ b/tools/Sandcastle/ProductionTransforms/DsManifestToManifest.xsl @@ -1,23 +1,23 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="utf-8" />
-
- <xsl:template match="/">
- <topics>
- <xsl:apply-templates select="/manifest/manifestExecution/assetDetail/fileAsset" />
- </topics>
- </xsl:template>
-
- <xsl:template match="fileAsset[@assetType='Topic']">
- <topic>
- <xsl:attribute name="id">
- <xsl:value-of select="@fileAssetGuid" />
- </xsl:attribute>
- </topic>
- <xsl:apply-templates select="topic" />
- </xsl:template>
-
- <xsl:template match="fileAsset" />
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="utf-8" /> + + <xsl:template match="/"> + <topics> + <xsl:apply-templates select="/manifest/manifestExecution/assetDetail/fileAsset" /> + </topics> + </xsl:template> + + <xsl:template match="fileAsset[@assetType='Topic']"> + <topic> + <xsl:attribute name="id"> + <xsl:value-of select="@fileAssetGuid" /> + </xsl:attribute> + </topic> + <xsl:apply-templates select="topic" /> + </xsl:template> + + <xsl:template match="fileAsset" /> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/DsTocToManifest.xsl b/tools/Sandcastle/ProductionTransforms/DsTocToManifest.xsl index be4149f..0408e21 100644 --- a/tools/Sandcastle/ProductionTransforms/DsTocToManifest.xsl +++ b/tools/Sandcastle/ProductionTransforms/DsTocToManifest.xsl @@ -1,23 +1,23 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="utf-8" />
-
- <xsl:key name="index" match="/apis/api" use="@id" />
-
- <xsl:template match="/">
- <topics>
- <xsl:apply-templates select="/tableOfContents/topic" />
- </topics>
- </xsl:template>
-
- <xsl:template match="topic">
- <topic>
- <xsl:attribute name="id">
- <xsl:value-of select="@id" />
- </xsl:attribute>
- </topic>
- <xsl:apply-templates select="topic" />
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="utf-8" /> + + <xsl:key name="index" match="/apis/api" use="@id" /> + + <xsl:template match="/"> + <topics> + <xsl:apply-templates select="/tableOfContents/topic" /> + </topics> + </xsl:template> + + <xsl:template match="topic"> + <topic> + <xsl:attribute name="id"> + <xsl:value-of select="@id" /> + </xsl:attribute> + </topic> + <xsl:apply-templates select="topic" /> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/DsTocToSitemap.xsl b/tools/Sandcastle/ProductionTransforms/DsTocToSitemap.xsl index 5440d5a..28a460c 100644 --- a/tools/Sandcastle/ProductionTransforms/DsTocToSitemap.xsl +++ b/tools/Sandcastle/ProductionTransforms/DsTocToSitemap.xsl @@ -1,88 +1,88 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Doc Studio Contents to Sitemap Transform
-
- Invoke with: xsltransform TocToSitemap.xsl toc.xml [/arg:comments=comments-dir] /out:web.sitemap
-
- - topicInfo - specifies the directory where the comment files are stored. The default is
- 'Temp\TopicInfo'.
--->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5">
-
- <xsl:param name="topicInfo" select="'Temp\TopicInfo'"/>
-
- <xsl:output indent="yes" encoding="utf-8"/>
-
- <xsl:namespace-alias stylesheet-prefix="ddue" result-prefix="#default"/>
-
- <xsl:key name="index" match="/apis/api" use="@id"/>
-
- <xsl:template match="/">
- <siteMap>
- <!--<siteMapNode>-->
- <xsl:apply-templates select="/tableOfContents/topic"/>
- <!--</siteMapNode>-->
- </siteMap>
- </xsl:template>
-
- <xsl:template match="topic">
- <siteMapNode>
- <xsl:if test="@isCategoryOnly != 'True' or @url">
- <xsl:attribute name="url">
- <xsl:choose>
- <xsl:when test="@url">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//pageUrl[1]"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="tocTitleAttr"/>
- <xsl:apply-templates/>
- </siteMapNode>
- </xsl:template>
-
- <xsl:template match="sharedTopic">
- <siteMapNode>
- <xsl:if test="@isCategoryOnly != 'True' or @url">
- <xsl:attribute name="url">
- <xsl:choose>
- <xsl:when test="@url">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat(document(concat($topicInfo, '/', @id, '.xml'))//pageUrl[1], '#', generate-id())"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </xsl:if>
- <xsl:call-template name="tocTitleAttr"/>
- <xsl:apply-templates/>
- </siteMapNode>
- </xsl:template>
-
- <xsl:template name="tocTitleAttr">
- <xsl:attribute name="title">
- <xsl:choose>
- <xsl:when test="@title">
- <xsl:value-of select="@title"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//tableOfContentsTitle[1]"/>
- </xsl:otherwise>
- </xsl:choose>
- <!-- Not needed if the build uses the custom .cmp.xml files produced by GetTopicInfo.exe.
- Those files contain a copy of the title in the tableOfContentsTitle element as needed.
- <xsl:if test="not(document(concat($topicInfo, '/', @id, '.xml'))//tableOfContentsTitle[1])">
- <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//title[1]"/>
- </xsl:if>
- -->
- </xsl:attribute>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?> + +<!-- Doc Studio Contents to Sitemap Transform + + Invoke with: xsltransform TocToSitemap.xsl toc.xml [/arg:comments=comments-dir] /out:web.sitemap + + - topicInfo - specifies the directory where the comment files are stored. The default is + 'Temp\TopicInfo'. +--> + +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"> + + <xsl:param name="topicInfo" select="'Temp\TopicInfo'"/> + + <xsl:output indent="yes" encoding="utf-8"/> + + <xsl:namespace-alias stylesheet-prefix="ddue" result-prefix="#default"/> + + <xsl:key name="index" match="/apis/api" use="@id"/> + + <xsl:template match="/"> + <siteMap> + <!--<siteMapNode>--> + <xsl:apply-templates select="/tableOfContents/topic"/> + <!--</siteMapNode>--> + </siteMap> + </xsl:template> + + <xsl:template match="topic"> + <siteMapNode> + <xsl:if test="@isCategoryOnly != 'True' or @url"> + <xsl:attribute name="url"> + <xsl:choose> + <xsl:when test="@url"> + <xsl:value-of select="@url"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//pageUrl[1]"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:if> + <xsl:call-template name="tocTitleAttr"/> + <xsl:apply-templates/> + </siteMapNode> + </xsl:template> + + <xsl:template match="sharedTopic"> + <siteMapNode> + <xsl:if test="@isCategoryOnly != 'True' or @url"> + <xsl:attribute name="url"> + <xsl:choose> + <xsl:when test="@url"> + <xsl:value-of select="@url"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat(document(concat($topicInfo, '/', @id, '.xml'))//pageUrl[1], '#', generate-id())"/> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:if> + <xsl:call-template name="tocTitleAttr"/> + <xsl:apply-templates/> + </siteMapNode> + </xsl:template> + + <xsl:template name="tocTitleAttr"> + <xsl:attribute name="title"> + <xsl:choose> + <xsl:when test="@title"> + <xsl:value-of select="@title"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//tableOfContentsTitle[1]"/> + </xsl:otherwise> + </xsl:choose> + <!-- Not needed if the build uses the custom .cmp.xml files produced by GetTopicInfo.exe. + Those files contain a copy of the title in the tableOfContentsTitle element as needed. + <xsl:if test="not(document(concat($topicInfo, '/', @id, '.xml'))//tableOfContentsTitle[1])"> + <xsl:value-of select="document(concat($topicInfo, '/', @id, '.xml'))//title[1]"/> + </xsl:if> + --> + </xsl:attribute> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/DsTocToToc.xsl b/tools/Sandcastle/ProductionTransforms/DsTocToToc.xsl index fdf799f..ff7de91 100644 --- a/tools/Sandcastle/ProductionTransforms/DsTocToToc.xsl +++ b/tools/Sandcastle/ProductionTransforms/DsTocToToc.xsl @@ -1,33 +1,33 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" />
-
- <xsl:template match="/">
- <topics>
- <xsl:apply-templates select="/*" />
- </topics>
- </xsl:template>
-
- <xsl:template match="topic">
- <topic id="{@id}">
- <xsl:if test="not(@isCategoryOnly='True')">
- <xsl:attribute name="file">
- <xsl:value-of select="@id" />
- </xsl:attribute>
- </xsl:if>
- <xsl:apply-templates />
- </topic>
- </xsl:template>
-
- <xsl:template match="sharedTOC|sharedManagedReferenceTOC">
- <stoc project="{@projectName}" />
- </xsl:template>
-
- <xsl:template match="sharedTopic">
- <stopic project="{@projectName}" id="{@id}" file="{@id}">
- <xsl:apply-templates />
- </stopic>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" /> + + <xsl:template match="/"> + <topics> + <xsl:apply-templates select="/*" /> + </topics> + </xsl:template> + + <xsl:template match="topic"> + <topic id="{@id}"> + <xsl:if test="not(@isCategoryOnly='True')"> + <xsl:attribute name="file"> + <xsl:value-of select="@id" /> + </xsl:attribute> + </xsl:if> + <xsl:apply-templates /> + </topic> + </xsl:template> + + <xsl:template match="sharedTOC|sharedManagedReferenceTOC"> + <stoc project="{@projectName}" /> + </xsl:template> + + <xsl:template match="sharedTopic"> + <stopic project="{@projectName}" id="{@id}" file="{@id}"> + <xsl:apply-templates /> + </stopic> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/FixScriptSharp.xsl b/tools/Sandcastle/ProductionTransforms/FixScriptSharp.xsl index c375c78..a30310d 100644 --- a/tools/Sandcastle/ProductionTransforms/FixScriptSharp.xsl +++ b/tools/Sandcastle/ProductionTransforms/FixScriptSharp.xsl @@ -1,87 +1,87 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:template match="node() | @*">
- <xsl:copy>
- <xsl:apply-templates select="node() | @*" />
- </xsl:copy>
- </xsl:template>
-
- <!-- Fix subgroups for enumerations -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/apidata/@subgroup">
- <xsl:attribute name="subgroup">
- <xsl:value-of select="'enumeration'"/>
- </xsl:attribute>
- </xsl:template>
-
- <!-- Strip ancestors from enumerations -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/family">
- </xsl:template>
-
- <!-- Strip invalid members from enumerations -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/elements">
- <elements>
- <xsl:for-each select="element">
- <xsl:if test="(starts-with(@api, 'F:') and not(contains(@api, 'value__')))">
- <xsl:copy>
- <xsl:apply-templates select="node() | @*" />
- </xsl:copy>
- </xsl:if>
- </xsl:for-each>
- </elements>
- </xsl:template>
-
- <!-- Fix subgroups for enumerations -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/apidata/@subgroup">
- <xsl:attribute name="subgroup">
- <xsl:value-of select="'delegate'"/>
- </xsl:attribute>
- </xsl:template>
-
- <!-- Strip ancestors from delegates -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/family">
- </xsl:template>
-
- <!-- Strip elements from delegates -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/elements">
- </xsl:template>
-
- <!-- Insert parameters into delegates -->
- <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/apidata">
- <xsl:copy>
- <xsl:apply-templates select="node() | @*" />
- </xsl:copy>
- <xsl:variable name="id" select="../@id" />
- <xsl:copy-of select="/reflection/apis/api[starts-with(@id, concat('M:', substring-after($id, 'T:'), '.Invoke('))]/parameters">
- </xsl:copy-of>
- </xsl:template>
-
- <!-- Annotate members whose types have the GlobalMethodsAttribute -->
- <xsl:template match="reflection/apis/api[apidata/@group='member']/apidata/@name">
- <xsl:copy>
- <xsl:apply-templates select="node() | @*" />
- </xsl:copy>
- <xsl:variable name="type" select="../../containers/type/@api" />
- <xsl:if test="/reflection/apis/api[@id=$type]/attributes/attribute/type/@api='T:System.GlobalMethodsAttribute'">
- <xsl:attribute name="global">
- <xsl:value-of select="'true'"/>
- </xsl:attribute>
- </xsl:if>
- </xsl:template>
-
- <!-- Annotate constructors whose types have the RecordAttribute -->
- <xsl:template match="reflection/apis/api[apidata/@group='member']/apidata[@subgroup='constructor']/@subgroup">
- <xsl:copy>
- <xsl:apply-templates select="node() | @*" />
- </xsl:copy>
- <xsl:variable name="type" select="../../containers/type/@api" />
- <xsl:if test="/reflection/apis/api[@id=$type]/attributes/attribute/type/@api='T:System.RecordAttribute'">
- <xsl:attribute name="record">
- <xsl:value-of select="'true'"/>
- </xsl:attribute>
- </xsl:if>
- </xsl:template>
-
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:template match="node() | @*"> + <xsl:copy> + <xsl:apply-templates select="node() | @*" /> + </xsl:copy> + </xsl:template> + + <!-- Fix subgroups for enumerations --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/apidata/@subgroup"> + <xsl:attribute name="subgroup"> + <xsl:value-of select="'enumeration'"/> + </xsl:attribute> + </xsl:template> + + <!-- Strip ancestors from enumerations --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/family"> + </xsl:template> + + <!-- Strip invalid members from enumerations --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.Enum']/elements"> + <elements> + <xsl:for-each select="element"> + <xsl:if test="(starts-with(@api, 'F:') and not(contains(@api, 'value__')))"> + <xsl:copy> + <xsl:apply-templates select="node() | @*" /> + </xsl:copy> + </xsl:if> + </xsl:for-each> + </elements> + </xsl:template> + + <!-- Fix subgroups for enumerations --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/apidata/@subgroup"> + <xsl:attribute name="subgroup"> + <xsl:value-of select="'delegate'"/> + </xsl:attribute> + </xsl:template> + + <!-- Strip ancestors from delegates --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/family"> + </xsl:template> + + <!-- Strip elements from delegates --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/elements"> + </xsl:template> + + <!-- Insert parameters into delegates --> + <xsl:template match="reflection/apis/api[apidata/@group='type' and family/ancestors/type/@api='T:System.MulticastDelegate']/apidata"> + <xsl:copy> + <xsl:apply-templates select="node() | @*" /> + </xsl:copy> + <xsl:variable name="id" select="../@id" /> + <xsl:copy-of select="/reflection/apis/api[starts-with(@id, concat('M:', substring-after($id, 'T:'), '.Invoke('))]/parameters"> + </xsl:copy-of> + </xsl:template> + + <!-- Annotate members whose types have the GlobalMethodsAttribute --> + <xsl:template match="reflection/apis/api[apidata/@group='member']/apidata/@name"> + <xsl:copy> + <xsl:apply-templates select="node() | @*" /> + </xsl:copy> + <xsl:variable name="type" select="../../containers/type/@api" /> + <xsl:if test="/reflection/apis/api[@id=$type]/attributes/attribute/type/@api='T:System.GlobalMethodsAttribute'"> + <xsl:attribute name="global"> + <xsl:value-of select="'true'"/> + </xsl:attribute> + </xsl:if> + </xsl:template> + + <!-- Annotate constructors whose types have the RecordAttribute --> + <xsl:template match="reflection/apis/api[apidata/@group='member']/apidata[@subgroup='constructor']/@subgroup"> + <xsl:copy> + <xsl:apply-templates select="node() | @*" /> + </xsl:copy> + <xsl:variable name="type" select="../../containers/type/@api" /> + <xsl:if test="/reflection/apis/api[@id=$type]/attributes/attribute/type/@api='T:System.RecordAttribute'"> + <xsl:attribute name="record"> + <xsl:value-of select="'true'"/> + </xsl:attribute> + </xsl:if> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/MergeDuplicates.xsl b/tools/Sandcastle/ProductionTransforms/MergeDuplicates.xsl index 3ac0b01..da721c7 100644 --- a/tools/Sandcastle/ProductionTransforms/MergeDuplicates.xsl +++ b/tools/Sandcastle/ProductionTransforms/MergeDuplicates.xsl @@ -1,166 +1,166 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <!-- Merges reflection nodes for apis that are declared in multiple assemblies.
- For example, some of the same apis in the Microsoft.Windows.Themes namespace are declared in:
- PresentationFramework.Aero.dll
- PresentationFramework.Luna.dll
- PresentationFramework.Classic.dll
- PresentationFramework.Royale.dll
-
- This transform:
- - gets rid of duplicate element nodes in a namespace's api node
- - type api nodes: collapses duplicates into a single api node; saves library info for each duplicate
- - member api nodes: collapses duplicates into a single api node; saves library info for each duplicate
- - enum api nodes: saves container info for each enum element, in case the element lists differ
- -->
- <xsl:key name="index" match="/*/apis/api" use="@id" />
-
- <xsl:template match="/">
- <reflection>
- <xsl:copy-of select="/*/@*"/>
- <xsl:copy-of select="/*/assemblies" />
- <xsl:apply-templates select="/*/apis" />
- </reflection>
- </xsl:template>
-
- <xsl:template match="apis">
- <apis>
- <xsl:apply-templates select="api" />
- </apis>
- </xsl:template>
-
- <xsl:template match="api">
- <xsl:copy-of select="." />
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='namespace']">
- <api>
- <xsl:copy-of select="@*" />
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name()='elements'">
- <elements>
- <xsl:for-each select="element[not(@api=preceding-sibling::element/@api)]">
- <xsl:copy-of select="." />
- </xsl:for-each>
- </elements>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type']">
- <xsl:variable name="ancestorId" select="family/ancestors/type[last()]/@api" />
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="duplicates" select="key('index',@id)[apidata[@subgroup=$subgroup]]" />
- <!--
- (apidata[@subgroup!='class'] or family/ancestors/type[last()][@api=$ancestorId])]
- -->
- <xsl:choose>
- <!-- if dupes, merge them -->
- <xsl:when test="count($duplicates)>1">
- <xsl:variable name="typeId" select="@id" />
- <xsl:if test="not(preceding-sibling::api[@id=$typeId][apidata[@subgroup=$subgroup]])">
- <xsl:call-template name="mergeDuplicateTypes">
- <xsl:with-param name="duplicates" select="$duplicates"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- <!-- if no dupes, just copy it -->
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="mergeDuplicateTypes">
- <xsl:param name="duplicates"/>
- <xsl:variable name="typeId" select="@id"/>
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="duplicatesCount" select="count($duplicates)"/>
- <api>
- <xsl:copy-of select="@*" />
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name()='containers'">
- <containers>
- <xsl:copy-of select="$duplicates/containers/library" />
- <xsl:copy-of select="namespace|type" />
- </containers>
- </xsl:when>
- <xsl:when test="local-name()='elements'">
- <elements>
- <xsl:for-each select="$duplicates/elements/element">
- <xsl:variable name="elementId" select="@api"/>
- <xsl:if test="not(preceding::api[@id=$typeId][apidata[@subgroup=$subgroup]]/elements/element[@api=$elementId])">
- <!-- need to add library info to elements that are not in all duplicates -->
- <element>
- <xsl:copy-of select="@*"/>
- <xsl:copy-of select="*"/>
- <xsl:if test="count($duplicates/elements/element[@api=$elementId]) != $duplicatesCount">
- <libraries>
- <xsl:copy-of select="$duplicates/elements/element[@api=$elementId]/../../containers/library"/>
- </libraries>
- </xsl:if>
- </element>
- </xsl:if>
- </xsl:for-each>
- </elements>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='member']">
- <xsl:variable name="subgroup" select="apidata/@subgroup" />
- <xsl:variable name="duplicates" select="key('index',@id)[apidata[@subgroup=$subgroup]]" />
- <xsl:choose>
- <!-- if dupes, merge them -->
- <xsl:when test="count($duplicates)>1">
- <xsl:variable name="memberId" select="@id" />
- <xsl:if test="not(preceding-sibling::api[@id=$memberId][apidata[@subgroup=$subgroup]])">
- <xsl:call-template name="mergeDuplicateMembers">
- <xsl:with-param name="duplicates" select="$duplicates"/>
- </xsl:call-template>
- </xsl:if>
- </xsl:when>
- <!-- if no dupes, just copy it -->
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="mergeDuplicateMembers">
- <xsl:param name="duplicates"/>
- <api>
- <xsl:copy-of select="@*" />
- <xsl:for-each select="*">
- <xsl:choose>
- <xsl:when test="local-name()='containers'">
- <containers>
- <!-- include the library node for all the duplicates -->
- <xsl:copy-of select="$duplicates/containers/library" />
- <xsl:copy-of select="namespace|type" />
- </containers>
- </xsl:when>
- <xsl:otherwise>
- <xsl:copy-of select="." />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:for-each>
- </api>
- </xsl:template>
-
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <!-- Merges reflection nodes for apis that are declared in multiple assemblies. + For example, some of the same apis in the Microsoft.Windows.Themes namespace are declared in: + PresentationFramework.Aero.dll + PresentationFramework.Luna.dll + PresentationFramework.Classic.dll + PresentationFramework.Royale.dll + + This transform: + - gets rid of duplicate element nodes in a namespace's api node + - type api nodes: collapses duplicates into a single api node; saves library info for each duplicate + - member api nodes: collapses duplicates into a single api node; saves library info for each duplicate + - enum api nodes: saves container info for each enum element, in case the element lists differ + --> + <xsl:key name="index" match="/*/apis/api" use="@id" /> + + <xsl:template match="/"> + <reflection> + <xsl:copy-of select="/*/@*"/> + <xsl:copy-of select="/*/assemblies" /> + <xsl:apply-templates select="/*/apis" /> + </reflection> + </xsl:template> + + <xsl:template match="apis"> + <apis> + <xsl:apply-templates select="api" /> + </apis> + </xsl:template> + + <xsl:template match="api"> + <xsl:copy-of select="." /> + </xsl:template> + + <xsl:template match="api[apidata/@group='namespace']"> + <api> + <xsl:copy-of select="@*" /> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name()='elements'"> + <elements> + <xsl:for-each select="element[not(@api=preceding-sibling::element/@api)]"> + <xsl:copy-of select="." /> + </xsl:for-each> + </elements> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + + <xsl:template match="api[apidata/@group='type']"> + <xsl:variable name="ancestorId" select="family/ancestors/type[last()]/@api" /> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="duplicates" select="key('index',@id)[apidata[@subgroup=$subgroup]]" /> + <!-- + (apidata[@subgroup!='class'] or family/ancestors/type[last()][@api=$ancestorId])] + --> + <xsl:choose> + <!-- if dupes, merge them --> + <xsl:when test="count($duplicates)>1"> + <xsl:variable name="typeId" select="@id" /> + <xsl:if test="not(preceding-sibling::api[@id=$typeId][apidata[@subgroup=$subgroup]])"> + <xsl:call-template name="mergeDuplicateTypes"> + <xsl:with-param name="duplicates" select="$duplicates"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <!-- if no dupes, just copy it --> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="mergeDuplicateTypes"> + <xsl:param name="duplicates"/> + <xsl:variable name="typeId" select="@id"/> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="duplicatesCount" select="count($duplicates)"/> + <api> + <xsl:copy-of select="@*" /> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name()='containers'"> + <containers> + <xsl:copy-of select="$duplicates/containers/library" /> + <xsl:copy-of select="namespace|type" /> + </containers> + </xsl:when> + <xsl:when test="local-name()='elements'"> + <elements> + <xsl:for-each select="$duplicates/elements/element"> + <xsl:variable name="elementId" select="@api"/> + <xsl:if test="not(preceding::api[@id=$typeId][apidata[@subgroup=$subgroup]]/elements/element[@api=$elementId])"> + <!-- need to add library info to elements that are not in all duplicates --> + <element> + <xsl:copy-of select="@*"/> + <xsl:copy-of select="*"/> + <xsl:if test="count($duplicates/elements/element[@api=$elementId]) != $duplicatesCount"> + <libraries> + <xsl:copy-of select="$duplicates/elements/element[@api=$elementId]/../../containers/library"/> + </libraries> + </xsl:if> + </element> + </xsl:if> + </xsl:for-each> + </elements> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + + <xsl:template match="api[apidata/@group='member']"> + <xsl:variable name="subgroup" select="apidata/@subgroup" /> + <xsl:variable name="duplicates" select="key('index',@id)[apidata[@subgroup=$subgroup]]" /> + <xsl:choose> + <!-- if dupes, merge them --> + <xsl:when test="count($duplicates)>1"> + <xsl:variable name="memberId" select="@id" /> + <xsl:if test="not(preceding-sibling::api[@id=$memberId][apidata[@subgroup=$subgroup]])"> + <xsl:call-template name="mergeDuplicateMembers"> + <xsl:with-param name="duplicates" select="$duplicates"/> + </xsl:call-template> + </xsl:if> + </xsl:when> + <!-- if no dupes, just copy it --> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="mergeDuplicateMembers"> + <xsl:param name="duplicates"/> + <api> + <xsl:copy-of select="@*" /> + <xsl:for-each select="*"> + <xsl:choose> + <xsl:when test="local-name()='containers'"> + <containers> + <!-- include the library node for all the duplicates --> + <xsl:copy-of select="$duplicates/containers/library" /> + <xsl:copy-of select="namespace|type" /> + </containers> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="." /> + </xsl:otherwise> + </xsl:choose> + </xsl:for-each> + </api> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/MergeHxF.xsl b/tools/Sandcastle/ProductionTransforms/MergeHxF.xsl index 7452eb3..6b6a20e 100644 --- a/tools/Sandcastle/ProductionTransforms/MergeHxF.xsl +++ b/tools/Sandcastle/ProductionTransforms/MergeHxF.xsl @@ -1,28 +1,28 @@ -<?xml version="1.0"?>
-<xsl:stylesheet
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:ds="http://ddue.schemas.microsoft.com/authoring/2003/5"
- version="1.1">
-
- <xsl:output doctype-system="MS-Help://Hx/Resources/HelpFileList.dtd" indent="yes" encoding="UTF-8" />
-
- <xsl:param name="hxfToMerge" />
-
- <xsl:template match="/">
- <xsl:for-each select="*">
- <xsl:copy>
- <xsl:copy-of select="@*"/>
- <xsl:copy-of select="File"/>
- <xsl:copy-of select="document($hxfToMerge)//File"/>
- </xsl:copy>
- </xsl:for-each>
- </xsl:template>
-
- <!--
- <xsl:for-each select="document($hxfToMerge)//File">
- <xsl:copy-of select="."/>
- </xsl:for-each>
- <xsl:template match="File">
- </xsl:template>
- -->
+<?xml version="1.0"?> +<xsl:stylesheet + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ds="http://ddue.schemas.microsoft.com/authoring/2003/5" + version="1.1"> + + <xsl:output doctype-system="MS-Help://Hx/Resources/HelpFileList.dtd" indent="yes" encoding="UTF-8" /> + + <xsl:param name="hxfToMerge" /> + + <xsl:template match="/"> + <xsl:for-each select="*"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:copy-of select="File"/> + <xsl:copy-of select="document($hxfToMerge)//File"/> + </xsl:copy> + </xsl:for-each> + </xsl:template> + + <!-- + <xsl:for-each select="document($hxfToMerge)//File"> + <xsl:copy-of select="."/> + </xsl:for-each> + <xsl:template match="File"> + </xsl:template> + --> </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl b/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl index 57112f8..132a7da 100644 --- a/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl +++ b/tools/Sandcastle/ProductionTransforms/ReflectionToCDocML.xsl @@ -1,845 +1,845 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <cDocMLDocument>
- <content>
- <assemblies>
- <xsl:apply-templates select="/reflection/assemblies/assembly" />
- </assemblies>
- <namespaces>
- <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']" />
- </namespaces>
- </content>
- <idMap>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='namespace']">
- <entity namespaceName="{apidata/@name}" typeName="" memberName="" commentId="{@id}" textId="" />
- </xsl:for-each>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='type']">
- <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
- </xsl:for-each>
- <xsl:for-each select="/reflection/apis/api[apidata/@group='member']">
- <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
- </xsl:for-each>
- </idMap>
- <rMap>
- <type namespace="System" name="Object" commentId="T:Sytem.Object">
- <xsl:attribute name="external">
- <xsl:choose>
- <xsl:when test="/reflection/apis/api[@id='T:System.Object']">false</xsl:when>
- <xsl:otherwise>true</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <type namespace="System" name="ValueType" commentId="T:System.ValueType">
- <xsl:attribute name="external">
- <xsl:choose>
- <xsl:when test="/reflection/apis/api[@id='T:System.ValueType']">false</xsl:when>
- <xsl:otherwise>true</xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='structure']">
- <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
- </xsl:for-each>
- </type>
- <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='class']">
- <xsl:if test="not(@id='T:System.Object' or @id='T:System.ValueType')">
- <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" />
- </xsl:if>
- </xsl:for-each>
- </type>
- </rMap>
-
- </cDocMLDocument>
- </xsl:template>
-
- <!-- utility templates -->
-
- <xsl:template name="writeIdentity">
- <xsl:param name="namespaceName" />
- <xsl:param name="typeName" />
- <xsl:param name="memberName" />
- <xsl:param name="commentId" select="@id|@api" />
- <xsl:param name="textId" />
- <identity namespaceName="{$namespaceName}" typeName="{$typeName}" memberName="{$memberName}" commentId="{$commentId}" textId="{$textId}" />
- </xsl:template>
-
- <xsl:template name="writeTypeIdentity">
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
- <xsl:with-param name="typeName" select="apidata/@name" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template name="writeMemberIdentity">
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" />
- <xsl:with-param name="typeName" select="key('index',containers/type/@api)/apidata/@name" />
- <xsl:with-param name="memberName" select="apidata/@name" />
- </xsl:call-template>
- </xsl:template>
-
-
- <xsl:template name="writeSource">
- <xsl:param name="assembly" select="containers/library/@assembly" />
- <xsl:param name="module" select="containers/library/@module" />
- <source assembly="{$assembly}" module="{$module}" />
- </xsl:template>
-
- <xsl:template name="writeTypeAttributes">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="classLayout" select="string('AutoLayout')" />
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="typedata/@abstract">
- <xsl:value-of select="typedata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="sealed">
- <xsl:choose>
- <xsl:when test="typedata/@sealed">
- <xsl:value-of select="typedata/@sealed" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="specialName" select="string('false')" />
- <attributes visibility="{$visibility}" classLayout="{$classLayout}" abstract="{$abstract}" sealed="{$sealed}" specialName="{$specialName}" import="false" stringFormat="Ansi" beforeFieldInitialization="false" runtimeSpecialName="false" />
- </xsl:template>
-
- <xsl:template name="writeMemberAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName" select="string('false')" />
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="hasDefaultValue" select="string('false')" />
- <xsl:param name="hasMarshallingInformation" select="string('false')" />
- <xsl:param name="hasRelativeVirtualAddress" select="string('false')" />
- <xsl:param name="isInitializedOnly" select="fielddata/@initonly" />
- <xsl:param name="isLiteral" select="fielddata/@literal" />
- <xsl:param name="isNotSerialized" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" hasDefaultValue="{$hasDefaultValue}" hasMarshallingInformation="{$hasMarshallingInformation}" hasRelativeVirtualAddress="{$hasRelativeVirtualAddress}" isInitializedOnly="{$isInitializedOnly}" isLiteral="{$isLiteral}" isNotSerialized="{$isNotSerialized}" isPInvokeImplementation="false" />
- </xsl:template>
-
- <xsl:template name="writeMethodAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="vtable" select="string('reuseSlot')" />
- <xsl:param name="callingConvention" select="string('HasThis')" />
- <xsl:param name="pInvokeImplementation" select="string('false')" />
- <xsl:param name="hideBySignature" select="string('true')" />
- <xsl:param name="hasSecurity" select="string('false')" />
- <xsl:param name="requiresSecurityObject" select="string('false')" />
- <xsl:param name="isUnmanagedExport" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" vtable="{$vtable}" callingConvention="{$callingConvention}" pInvokeImplementation="{$pInvokeImplementation}" hideBySignature="{$hideBySignature}" hasSecurity="{$hasSecurity}" requiresSecurityObject="{$requiresSecurityObject}" isUnmanagedExport="{$isUnmanagedExport}" />
- </xsl:template>
-
- <xsl:template name="writePropertyAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="readable" select="propertydata/@get" />
- <xsl:param name="writeable" select="string('false')" />
- <xsl:param name="hasDefaultValue" select="string('false')" />
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" readable="{$readable}" writeable="{$writeable}" hasDefaultValue="{$hasDefaultValue}" />
- </xsl:template>
-
- <xsl:template name="writeEventAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <xsl:param name="abstract">
- <xsl:choose>
- <xsl:when test="proceduredata/@abstract">
- <xsl:value-of select="proceduredata/@abstract" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="virtual">
- <xsl:choose>
- <xsl:when test="proceduredata/@virtual">
- <xsl:value-of select="proceduredata/@virtual" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="final">
- <xsl:choose>
- <xsl:when test="proceduredata/@final">
- <xsl:value-of select="proceduredata/@final" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" />
- </xsl:template>
-
- <xsl:template name="writeConstructorAccess">
- <xsl:param name="visibility" select="string('Public')" />
- <xsl:param name="static">
- <xsl:choose>
- <xsl:when test="memberdata/@static">
- <xsl:value-of select="memberdata/@static" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="declaringType" select="containers/type/@api" />
- <xsl:param name="specialName">
- <xsl:choose>
- <xsl:when test="memberdata/@special">
- <xsl:value-of select="memberdata/@special" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:param>
- <xsl:param name="runtimeSpecialName" select="string('false')"/>
- <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" />
- </xsl:template>
-
- <xsl:template name="writeMemberInheritance">
- <xsl:choose>
- <xsl:when test="overrides">
- <inheritance doesOverride="true" isInherited="false" doesHide="false">
- <baseMember name="{key('index',overrides/member/@api)/apidata/@name}" commentId="{overrides/member/@api}">
- <type name="{key('index',overrides/member/type/@api)/apidata/@name}" namespace="{key('index',key('index',overrides/member/type/@api)/containers/namespace/@api)/apidata/@name}" commentId="{overrides/member/type/@api}" />
- </baseMember>
- </inheritance>
- </xsl:when>
- <xsl:otherwise>
- <inheritance doesOverride="false" isInherited="false" doesHide="false">
- <baseMember name="{apidata/@name}" commentId="{@id}">
- <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- </baseMember>
- </inheritance>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
- <xsl:template name="writeImplementedInterfaces">
- <implementedInterfaces>
- <xsl:for-each select="implements/type">
- <interface name="{key('index',@api)/apidata/@name}" namespace="{key('index',key('index',@api)/containers/namespace/@api)/apidata/@name}" commentId="{@api}" >
- <xsl:if test="specialization">
- <parameters>
- <xsl:for-each select="specialization/*">
- <parameter pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:apply-templates select="(descendant-or-self::type | descendant-or-self::template)[1]" />
- </parameter>
- </xsl:for-each>
- </parameters>
- </xsl:if>
- </interface>
- </xsl:for-each>
- </implementedInterfaces>
- </xsl:template>
-
- <xsl:template name="writeMembers">
- <xsl:param name="type" select="@id" />
- <members>
-<!--
- <fields />
- <constructors />
- <methods />
- <properties />
- <events />
--->
-
- <fields>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='field' and containers/type/@api=$type]" />
- </fields>
- <constructors>
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='constructor']" />
- </constructors>
- <methods>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='method' and containers/type/@api=$type]" />
- </methods>
- <properties>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='property' and containers/type/@api=$type]" />
- </properties>
- <events>
- <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='event' and containers/type/@api=$type]" />
- </events>
-
- </members>
- </xsl:template>
-
- <xsl:template name="writeCustomAttributes">
- <customAttributes />
- </xsl:template>
-
- <xsl:template name="writeParameters">
- <parameters>
- <xsl:for-each select="parameters/parameter">
- <parameter name="{@name}" in="false" out="false" optional="false" retval="false" params="false">
- <parameterTypeReference pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:apply-templates select="(.//type | .//template)[1]" />
- </parameterTypeReference>
- </parameter>
- </xsl:for-each>
- </parameters>
- </xsl:template>
-
- <xsl:template name="writeReturnValue">
- <returnValue pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:choose>
- <xsl:when test="returns">
- <xsl:apply-templates select="(returns//type | returns//template)[1]" />
- </xsl:when>
- <xsl:otherwise>
- <typeReference name="Void" namespace="System" commentId="T:System.Void" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:otherwise>
- </xsl:choose>
- </returnValue>
- </xsl:template>
-
- <xsl:template name="writeValue">
- <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <xsl:choose>
- <xsl:when test="returns">
- <xsl:apply-templates select="(returns//type | returns//template)[1]" />
- </xsl:when>
- <xsl:otherwise>
- <typeReference name="Void" namespace="System" commentId="T:System.Void" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:otherwise>
- </xsl:choose>
- </value>
- </xsl:template>
-
- <xsl:template match="type">
- <typeReference name="" namespace="" commentId="{@api}" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:template>
-
- <xsl:template match="template">
- <typeReference name="{@name}" index="{@index}" target="Type" />
- <customModifiers />
- <arrayDefinitions />
- </xsl:template>
-
- <xsl:template match="templates">
- <genericTypeParameters>
- <xsl:for-each select="template">
- <genericTypeParameter name="{@name}">
- <constraints />
- </genericTypeParameter>
- </xsl:for-each>
- </genericTypeParameters>
- </xsl:template>
-
- <!-- api entities -->
-
- <xsl:template match="assembly">
- <assembly>
- <attributes name="{@name}" hashAlgorithm="SHA" culture="" sideBySideCompatible="true" retargetable="false" enableJitCompileTracking="false" enableJitCompileOptimizer="false" />
- <version majorVersion="2" minorVersion="0" buildNumber="0" revisionNumber="0" />
- <operatingSystems />
- <processors />
- <xsl:call-template name="writeCustomAttributes" />
- <modules />
- <assemblyReferences />
- <files />
- <manifestResources />
- </assembly>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='namespace']">
- <namespace>
- <frameworks />
- <xsl:call-template name="writeIdentity">
- <xsl:with-param name="namespaceName" select="apidata/@name" />
- </xsl:call-template>
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='enumeration']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='structure']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='delegate']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='interface']" />
- <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='class']" />
- </namespace>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='class']">
- <class>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="Object" namespace="System" commentId="T:System.Object" />
- <xsl:call-template name="writeImplementedInterfaces" />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers">
- <xsl:with-param name="type" select="@id" />
- </xsl:call-template>
- <PermissionSetAttributes />
- </class>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='structure']">
- <structure>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="typeIdentity" />
- <xsl:call-template name="writeTypeAttributes">
- <xsl:with-param name="classLayout">SequentialLayout</xsl:with-param>
- </xsl:call-template>
- <inheritance>
- <baseType name="ValueType" namespace="System" commentId="T:System.ValueType" />
- <xsl:call-template name="writeImplementedInterfaces" />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </structure>
- </xsl:template>
-
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='enumeration']">
- <enumeration>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="Enum" namespace="System" commentId="T:System.Enum" />
- <implementedInterfaces />
- </inheritance>
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </enumeration>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='delegate']">
- <delegate>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="MulticastDelegate" namespace="System" commentId="T:System.MulticastDelegate" />
- <implementedInterfaces />
- </inheritance>
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- </delegate>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='interface']">
- <interface>
- <frameworks />
- <xsl:call-template name="writeTypeIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeTypeAttributes" />
- <inheritance>
- <baseType name="" namespace="" commentId="" />
- <implementedInterfaces />
- </inheritance>
- <xsl:apply-templates select="templates" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMembers" />
- </interface>
- </xsl:template>
-
-
- <!-- member entries -->
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='field']">
- <field>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:variable name="type" select="key('index',containers/type/@api)" />
- <inheritance doesOverride="false" isInherited="false" doesHide="false">
- <baseMember name="{apidata/@name}" commentId="{@id}">
- <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- </baseMember>
- </inheritance>
-
- <xsl:call-template name="writeMemberAccess" />
- <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false">
- <typeReference name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" />
- <customModifiers />
- <arrayDefinitions />
- </value>
- </field>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='method']">
- <method>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="memberdata/@overload='true'">
- <xsl:text>true</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <xsl:attribute name="hasVarArgs">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="isExplicitInterfaceImpl">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='property']">
- <property>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="memberdata/@overload='true'">
- <xsl:text>true</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>false</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:if test="propertydata/@get='true'">
- <propertyGet>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity">
- <!-- <xsl:with-param name="memberName" select="concat('get_',apidata/@name)" /> -->
- </xsl:call-template>
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </propertyGet>
- </xsl:if>
- <xsl:if test="propertydata/@set='true'">
-
- </xsl:if>
- <xsl:call-template name="writePropertyAccess" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeValue" />
- </property>
- </xsl:template>
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='event']">
- <event>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <comments />
- <xsl:call-template name="writeCustomAttributes" />
- <xsl:call-template name="writeMemberInheritance" />
- <eventAdd>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </eventAdd>
- <eventRemove>
- <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false">
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeMethodAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeReturnValue" />
- <explicitImplRefs />
- <comments />
- </method>
- </eventRemove>
- <xsl:call-template name="writeEventAccess" />
- <eventHandler name="" namespace="" commentId="{eventhandler/type/@api}" />
- </event>
- </xsl:template>
-
-
- <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='constructor']">
- <constructor>
- <xsl:attribute name="isOverload">
- <xsl:choose>
- <xsl:when test="false()"><xsl:text>true</xsl:text></xsl:when>
- <xsl:otherwise><xsl:text>false</xsl:text></xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- <frameworks />
- <xsl:call-template name="writeMemberIdentity" />
- <xsl:call-template name="writeSource" />
- <xsl:call-template name="writeConstructorAccess" />
- <xsl:call-template name="writeMemberInheritance" />
- <xsl:call-template name="writeParameters" />
- <xsl:call-template name="writeCustomAttributes" />
- <PermissionSetAttributes />
- <comments />
- </constructor>
- </xsl:template>
-
- <xsl:template match="attribute">
- <CustomAttribute>
- <TypeRef name="{key('index',type/@api)/apidata/@name}" namespace="{key('index',key('index',type/@api)/containers/containingNamespace/@api)/apidata/@name}" commendId="{type/@api}" />
- <CustomAttributeNamedValues />
- <CustomattributeConstructor />
- </CustomAttribute>
- </xsl:template>
-
- <xsl:template name="typeIdentity">
- <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" />
- </xsl:template>
-
- <xsl:template name="memberIdentity">
- <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" />
- </xsl:template>
-
- <xsl:template name="source">
- <source assembly="{containers/library/@assembly}" module="{containers/library/@module}.dll" />
- </xsl:template>
-
- <xsl:template match="templates">
- <genericTypeParameters>
- <xsl:for-each select="template">
- <genericTypeParameter name="{@name}">
- <constraints />
- </genericTypeParameter>
- </xsl:for-each>
- </genericTypeParameters>
- </xsl:template>
-
- <xsl:template name="typeReference">
- <xsl:attribute name="pointerIndirections">
- <xsl:value-of select="count(pointerTo)" />
- </xsl:attribute>
- <xsl:attribute name="byRef">
- <xsl:value-of select="type/@ref" />
- </xsl:attribute>
- <xsl:attribute name="pinned">
- <xsl:text>false</xsl:text>
- </xsl:attribute>
- <typeReference name="{key('index',.//type[1]/@api)/apidata/@name}" namespace="{key('index',key('index',.//type[1]/@api)/containers/namespace/@api)/apidata/@name}" commendId="{.//type[1]/@api}" />
- <customModifiers />
- <arrayDefinitions>
- <xsl:if test="arrayOf">
- <xsl:attribute name="rank">
- <xsl:value-of select="arrayOf/@rank" />
- </xsl:attribute>
- <dimensions />
- </xsl:if>
- </arrayDefinitions>
- </xsl:template>
-
- <xsl:template name="visibility">
- <xsl:param name="visibility" />
- <xsl:attribute name="visibility">
- <xsl:choose>
- <xsl:when test="$visibility='public'">
- <xsl:text>Public</xsl:text>
- </xsl:when>
- <xsl:when test="$visibility='family'">
- <xsl:text>Family</xsl:text>
- </xsl:when>
- </xsl:choose>
- </xsl:attribute>
- </xsl:template>
-
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <cDocMLDocument> + <content> + <assemblies> + <xsl:apply-templates select="/reflection/assemblies/assembly" /> + </assemblies> + <namespaces> + <xsl:apply-templates select="/reflection/apis/api[apidata/@group='namespace']" /> + </namespaces> + </content> + <idMap> + <xsl:for-each select="/reflection/apis/api[apidata/@group='namespace']"> + <entity namespaceName="{apidata/@name}" typeName="" memberName="" commentId="{@id}" textId="" /> + </xsl:for-each> + <xsl:for-each select="/reflection/apis/api[apidata/@group='type']"> + <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" /> + </xsl:for-each> + <xsl:for-each select="/reflection/apis/api[apidata/@group='member']"> + <entity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" /> + </xsl:for-each> + </idMap> + <rMap> + <type namespace="System" name="Object" commentId="T:Sytem.Object"> + <xsl:attribute name="external"> + <xsl:choose> + <xsl:when test="/reflection/apis/api[@id='T:System.Object']">false</xsl:when> + <xsl:otherwise>true</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <type namespace="System" name="ValueType" commentId="T:System.ValueType"> + <xsl:attribute name="external"> + <xsl:choose> + <xsl:when test="/reflection/apis/api[@id='T:System.ValueType']">false</xsl:when> + <xsl:otherwise>true</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='structure']"> + <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" /> + </xsl:for-each> + </type> + <xsl:for-each select="/reflection/apis/api[apidata/@subgroup='class']"> + <xsl:if test="not(@id='T:System.Object' or @id='T:System.ValueType')"> + <type namespace="{key('index',containers/namespace/@api)/apidata/@name}" name="{apidata/@name}" commentId="{@id}" external="false" /> + </xsl:if> + </xsl:for-each> + </type> + </rMap> + + </cDocMLDocument> + </xsl:template> + + <!-- utility templates --> + + <xsl:template name="writeIdentity"> + <xsl:param name="namespaceName" /> + <xsl:param name="typeName" /> + <xsl:param name="memberName" /> + <xsl:param name="commentId" select="@id|@api" /> + <xsl:param name="textId" /> + <identity namespaceName="{$namespaceName}" typeName="{$typeName}" memberName="{$memberName}" commentId="{$commentId}" textId="{$textId}" /> + </xsl:template> + + <xsl:template name="writeTypeIdentity"> + <xsl:call-template name="writeIdentity"> + <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" /> + <xsl:with-param name="typeName" select="apidata/@name" /> + </xsl:call-template> + </xsl:template> + + <xsl:template name="writeMemberIdentity"> + <xsl:call-template name="writeIdentity"> + <xsl:with-param name="namespaceName" select="key('index',containers/namespace/@api)/apidata/@name" /> + <xsl:with-param name="typeName" select="key('index',containers/type/@api)/apidata/@name" /> + <xsl:with-param name="memberName" select="apidata/@name" /> + </xsl:call-template> + </xsl:template> + + + <xsl:template name="writeSource"> + <xsl:param name="assembly" select="containers/library/@assembly" /> + <xsl:param name="module" select="containers/library/@module" /> + <source assembly="{$assembly}" module="{$module}" /> + </xsl:template> + + <xsl:template name="writeTypeAttributes"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="classLayout" select="string('AutoLayout')" /> + <xsl:param name="abstract"> + <xsl:choose> + <xsl:when test="typedata/@abstract"> + <xsl:value-of select="typedata/@abstract" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="sealed"> + <xsl:choose> + <xsl:when test="typedata/@sealed"> + <xsl:value-of select="typedata/@sealed" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="specialName" select="string('false')" /> + <attributes visibility="{$visibility}" classLayout="{$classLayout}" abstract="{$abstract}" sealed="{$sealed}" specialName="{$specialName}" import="false" stringFormat="Ansi" beforeFieldInitialization="false" runtimeSpecialName="false" /> + </xsl:template> + + <xsl:template name="writeMemberAccess"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="static"> + <xsl:choose> + <xsl:when test="memberdata/@static"> + <xsl:value-of select="memberdata/@static" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="declaringType" select="containers/type/@api" /> + <xsl:param name="specialName" select="string('false')" /> + <xsl:param name="runtimeSpecialName" select="string('false')"/> + <xsl:param name="hasDefaultValue" select="string('false')" /> + <xsl:param name="hasMarshallingInformation" select="string('false')" /> + <xsl:param name="hasRelativeVirtualAddress" select="string('false')" /> + <xsl:param name="isInitializedOnly" select="fielddata/@initonly" /> + <xsl:param name="isLiteral" select="fielddata/@literal" /> + <xsl:param name="isNotSerialized" select="string('false')" /> + <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" hasDefaultValue="{$hasDefaultValue}" hasMarshallingInformation="{$hasMarshallingInformation}" hasRelativeVirtualAddress="{$hasRelativeVirtualAddress}" isInitializedOnly="{$isInitializedOnly}" isLiteral="{$isLiteral}" isNotSerialized="{$isNotSerialized}" isPInvokeImplementation="false" /> + </xsl:template> + + <xsl:template name="writeMethodAccess"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="static"> + <xsl:choose> + <xsl:when test="memberdata/@static"> + <xsl:value-of select="memberdata/@static" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="declaringType" select="containers/type/@api" /> + <xsl:param name="specialName"> + <xsl:choose> + <xsl:when test="memberdata/@special"> + <xsl:value-of select="memberdata/@special" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="runtimeSpecialName" select="string('false')"/> + <xsl:param name="abstract"> + <xsl:choose> + <xsl:when test="proceduredata/@abstract"> + <xsl:value-of select="proceduredata/@abstract" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="virtual"> + <xsl:choose> + <xsl:when test="proceduredata/@virtual"> + <xsl:value-of select="proceduredata/@virtual" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="final"> + <xsl:choose> + <xsl:when test="proceduredata/@final"> + <xsl:value-of select="proceduredata/@final" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="vtable" select="string('reuseSlot')" /> + <xsl:param name="callingConvention" select="string('HasThis')" /> + <xsl:param name="pInvokeImplementation" select="string('false')" /> + <xsl:param name="hideBySignature" select="string('true')" /> + <xsl:param name="hasSecurity" select="string('false')" /> + <xsl:param name="requiresSecurityObject" select="string('false')" /> + <xsl:param name="isUnmanagedExport" select="string('false')" /> + <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" vtable="{$vtable}" callingConvention="{$callingConvention}" pInvokeImplementation="{$pInvokeImplementation}" hideBySignature="{$hideBySignature}" hasSecurity="{$hasSecurity}" requiresSecurityObject="{$requiresSecurityObject}" isUnmanagedExport="{$isUnmanagedExport}" /> + </xsl:template> + + <xsl:template name="writePropertyAccess"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="static"> + <xsl:choose> + <xsl:when test="memberdata/@static"> + <xsl:value-of select="memberdata/@static" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="declaringType" select="containers/type/@api" /> + <xsl:param name="specialName"> + <xsl:choose> + <xsl:when test="memberdata/@special"> + <xsl:value-of select="memberdata/@special" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="runtimeSpecialName" select="string('false')"/> + <xsl:param name="abstract"> + <xsl:choose> + <xsl:when test="proceduredata/@abstract"> + <xsl:value-of select="proceduredata/@abstract" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="virtual"> + <xsl:choose> + <xsl:when test="proceduredata/@virtual"> + <xsl:value-of select="proceduredata/@virtual" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="final"> + <xsl:choose> + <xsl:when test="proceduredata/@final"> + <xsl:value-of select="proceduredata/@final" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="readable" select="propertydata/@get" /> + <xsl:param name="writeable" select="string('false')" /> + <xsl:param name="hasDefaultValue" select="string('false')" /> + <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" readable="{$readable}" writeable="{$writeable}" hasDefaultValue="{$hasDefaultValue}" /> + </xsl:template> + + <xsl:template name="writeEventAccess"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="static"> + <xsl:choose> + <xsl:when test="memberdata/@static"> + <xsl:value-of select="memberdata/@static" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="declaringType" select="containers/type/@api" /> + <xsl:param name="specialName"> + <xsl:choose> + <xsl:when test="memberdata/@special"> + <xsl:value-of select="memberdata/@special" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="runtimeSpecialName" select="string('false')"/> + <xsl:param name="abstract"> + <xsl:choose> + <xsl:when test="proceduredata/@abstract"> + <xsl:value-of select="proceduredata/@abstract" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="virtual"> + <xsl:choose> + <xsl:when test="proceduredata/@virtual"> + <xsl:value-of select="proceduredata/@virtual" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="final"> + <xsl:choose> + <xsl:when test="proceduredata/@final"> + <xsl:value-of select="proceduredata/@final" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" abstract="{$abstract}" virtual="{$virtual}" final="{$final}" /> + </xsl:template> + + <xsl:template name="writeConstructorAccess"> + <xsl:param name="visibility" select="string('Public')" /> + <xsl:param name="static"> + <xsl:choose> + <xsl:when test="memberdata/@static"> + <xsl:value-of select="memberdata/@static" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="declaringType" select="containers/type/@api" /> + <xsl:param name="specialName"> + <xsl:choose> + <xsl:when test="memberdata/@special"> + <xsl:value-of select="memberdata/@special" /> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:param> + <xsl:param name="runtimeSpecialName" select="string('false')"/> + <access visibility="{$visibility}" static="{$static}" declaringType="{$declaringType}" specialName="{$specialName}" runtimeSpecialName="{$runtimeSpecialName}" /> + </xsl:template> + + <xsl:template name="writeMemberInheritance"> + <xsl:choose> + <xsl:when test="overrides"> + <inheritance doesOverride="true" isInherited="false" doesHide="false"> + <baseMember name="{key('index',overrides/member/@api)/apidata/@name}" commentId="{overrides/member/@api}"> + <type name="{key('index',overrides/member/type/@api)/apidata/@name}" namespace="{key('index',key('index',overrides/member/type/@api)/containers/namespace/@api)/apidata/@name}" commentId="{overrides/member/type/@api}" /> + </baseMember> + </inheritance> + </xsl:when> + <xsl:otherwise> + <inheritance doesOverride="false" isInherited="false" doesHide="false"> + <baseMember name="{apidata/@name}" commentId="{@id}"> + <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" /> + </baseMember> + </inheritance> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template name="writeImplementedInterfaces"> + <implementedInterfaces> + <xsl:for-each select="implements/type"> + <interface name="{key('index',@api)/apidata/@name}" namespace="{key('index',key('index',@api)/containers/namespace/@api)/apidata/@name}" commentId="{@api}" > + <xsl:if test="specialization"> + <parameters> + <xsl:for-each select="specialization/*"> + <parameter pointerIndirections="0" byRef="false" pinned="false" sentinel="false"> + <xsl:apply-templates select="(descendant-or-self::type | descendant-or-self::template)[1]" /> + </parameter> + </xsl:for-each> + </parameters> + </xsl:if> + </interface> + </xsl:for-each> + </implementedInterfaces> + </xsl:template> + + <xsl:template name="writeMembers"> + <xsl:param name="type" select="@id" /> + <members> +<!-- + <fields /> + <constructors /> + <methods /> + <properties /> + <events /> +--> + + <fields> + <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='field' and containers/type/@api=$type]" /> + </fields> + <constructors> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='constructor']" /> + </constructors> + <methods> + <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='method' and containers/type/@api=$type]" /> + </methods> + <properties> + <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='property' and containers/type/@api=$type]" /> + </properties> + <events> + <xsl:apply-templates select="(key('index',elements/element/@api) | elements/element)[apidata/@subgroup='event' and containers/type/@api=$type]" /> + </events> + + </members> + </xsl:template> + + <xsl:template name="writeCustomAttributes"> + <customAttributes /> + </xsl:template> + + <xsl:template name="writeParameters"> + <parameters> + <xsl:for-each select="parameters/parameter"> + <parameter name="{@name}" in="false" out="false" optional="false" retval="false" params="false"> + <parameterTypeReference pointerIndirections="0" byRef="false" pinned="false" sentinel="false"> + <xsl:apply-templates select="(.//type | .//template)[1]" /> + </parameterTypeReference> + </parameter> + </xsl:for-each> + </parameters> + </xsl:template> + + <xsl:template name="writeReturnValue"> + <returnValue pointerIndirections="0" byRef="false" pinned="false" sentinel="false"> + <xsl:choose> + <xsl:when test="returns"> + <xsl:apply-templates select="(returns//type | returns//template)[1]" /> + </xsl:when> + <xsl:otherwise> + <typeReference name="Void" namespace="System" commentId="T:System.Void" /> + <customModifiers /> + <arrayDefinitions /> + </xsl:otherwise> + </xsl:choose> + </returnValue> + </xsl:template> + + <xsl:template name="writeValue"> + <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false"> + <xsl:choose> + <xsl:when test="returns"> + <xsl:apply-templates select="(returns//type | returns//template)[1]" /> + </xsl:when> + <xsl:otherwise> + <typeReference name="Void" namespace="System" commentId="T:System.Void" /> + <customModifiers /> + <arrayDefinitions /> + </xsl:otherwise> + </xsl:choose> + </value> + </xsl:template> + + <xsl:template match="type"> + <typeReference name="" namespace="" commentId="{@api}" /> + <customModifiers /> + <arrayDefinitions /> + </xsl:template> + + <xsl:template match="template"> + <typeReference name="{@name}" index="{@index}" target="Type" /> + <customModifiers /> + <arrayDefinitions /> + </xsl:template> + + <xsl:template match="templates"> + <genericTypeParameters> + <xsl:for-each select="template"> + <genericTypeParameter name="{@name}"> + <constraints /> + </genericTypeParameter> + </xsl:for-each> + </genericTypeParameters> + </xsl:template> + + <!-- api entities --> + + <xsl:template match="assembly"> + <assembly> + <attributes name="{@name}" hashAlgorithm="SHA" culture="" sideBySideCompatible="true" retargetable="false" enableJitCompileTracking="false" enableJitCompileOptimizer="false" /> + <version majorVersion="2" minorVersion="0" buildNumber="0" revisionNumber="0" /> + <operatingSystems /> + <processors /> + <xsl:call-template name="writeCustomAttributes" /> + <modules /> + <assemblyReferences /> + <files /> + <manifestResources /> + </assembly> + </xsl:template> + + <xsl:template match="api[apidata/@group='namespace']"> + <namespace> + <frameworks /> + <xsl:call-template name="writeIdentity"> + <xsl:with-param name="namespaceName" select="apidata/@name" /> + </xsl:call-template> + <xsl:call-template name="writeSource" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='enumeration']" /> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='structure']" /> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='delegate']" /> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='interface']" /> + <xsl:apply-templates select="key('index',elements/element/@api)[apidata/@subgroup='class']" /> + </namespace> + </xsl:template> + + <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='class']"> + <class> + <frameworks /> + <xsl:call-template name="writeTypeIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeTypeAttributes" /> + <inheritance> + <baseType name="Object" namespace="System" commentId="T:System.Object" /> + <xsl:call-template name="writeImplementedInterfaces" /> + </inheritance> + <xsl:apply-templates select="templates" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMembers"> + <xsl:with-param name="type" select="@id" /> + </xsl:call-template> + <PermissionSetAttributes /> + </class> + </xsl:template> + + <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='structure']"> + <structure> + <frameworks /> + <xsl:call-template name="writeTypeIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="typeIdentity" /> + <xsl:call-template name="writeTypeAttributes"> + <xsl:with-param name="classLayout">SequentialLayout</xsl:with-param> + </xsl:call-template> + <inheritance> + <baseType name="ValueType" namespace="System" commentId="T:System.ValueType" /> + <xsl:call-template name="writeImplementedInterfaces" /> + </inheritance> + <xsl:apply-templates select="templates" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMembers" /> + </structure> + </xsl:template> + + + <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='enumeration']"> + <enumeration> + <frameworks /> + <xsl:call-template name="writeTypeIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeTypeAttributes" /> + <inheritance> + <baseType name="Enum" namespace="System" commentId="T:System.Enum" /> + <implementedInterfaces /> + </inheritance> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMembers" /> + </enumeration> + </xsl:template> + + <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='delegate']"> + <delegate> + <frameworks /> + <xsl:call-template name="writeTypeIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeTypeAttributes" /> + <inheritance> + <baseType name="MulticastDelegate" namespace="System" commentId="T:System.MulticastDelegate" /> + <implementedInterfaces /> + </inheritance> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMembers" /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeReturnValue" /> + </delegate> + </xsl:template> + + <xsl:template match="api[apidata/@group='type' and apidata/@subgroup='interface']"> + <interface> + <frameworks /> + <xsl:call-template name="writeTypeIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeTypeAttributes" /> + <inheritance> + <baseType name="" namespace="" commentId="" /> + <implementedInterfaces /> + </inheritance> + <xsl:apply-templates select="templates" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMembers" /> + </interface> + </xsl:template> + + + <!-- member entries --> + + <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='field']"> + <field> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:variable name="type" select="key('index',containers/type/@api)" /> + <inheritance doesOverride="false" isInherited="false" doesHide="false"> + <baseMember name="{apidata/@name}" commentId="{@id}"> + <type name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" /> + </baseMember> + </inheritance> + + <xsl:call-template name="writeMemberAccess" /> + <value pointerIndirections="0" byRef="false" pinned="false" sentinel="false"> + <typeReference name="{key('index',containers/type/@api)/apidata/@name}" namespace="{key('index',containers/namespace/@api)/apidata/@name}" commentId="{containers/type/@api}" /> + <customModifiers /> + <arrayDefinitions /> + </value> + </field> + </xsl:template> + + <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='method']"> + <method> + <xsl:attribute name="isOverload"> + <xsl:choose> + <xsl:when test="memberdata/@overload='true'"> + <xsl:text>true</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:attribute name="hasVarArgs"> + <xsl:text>false</xsl:text> + </xsl:attribute> + <xsl:attribute name="isExplicitInterfaceImpl"> + <xsl:text>false</xsl:text> + </xsl:attribute> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeMethodAccess" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:call-template name="writeCustomAttributes" /> + <PermissionSetAttributes /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeReturnValue" /> + <explicitImplRefs /> + <comments /> + </method> + </xsl:template> + + <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='property']"> + <property> + <xsl:attribute name="isOverload"> + <xsl:choose> + <xsl:when test="memberdata/@overload='true'"> + <xsl:text>true</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>false</xsl:text> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:if test="propertydata/@get='true'"> + <propertyGet> + <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false"> + <frameworks /> + <xsl:call-template name="writeMemberIdentity"> + <!-- <xsl:with-param name="memberName" select="concat('get_',apidata/@name)" /> --> + </xsl:call-template> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeMethodAccess" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:call-template name="writeCustomAttributes" /> + <PermissionSetAttributes /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeReturnValue" /> + <explicitImplRefs /> + <comments /> + </method> + </propertyGet> + </xsl:if> + <xsl:if test="propertydata/@set='true'"> + + </xsl:if> + <xsl:call-template name="writePropertyAccess" /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeValue" /> + </property> + </xsl:template> + + <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='event']"> + <event> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <comments /> + <xsl:call-template name="writeCustomAttributes" /> + <xsl:call-template name="writeMemberInheritance" /> + <eventAdd> + <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false"> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeMethodAccess" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:call-template name="writeCustomAttributes" /> + <PermissionSetAttributes /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeReturnValue" /> + <explicitImplRefs /> + <comments /> + </method> + </eventAdd> + <eventRemove> + <method isOverload="false" hasVarArgs="false" isExplicitInterfaceImpl="false"> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeMethodAccess" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:call-template name="writeCustomAttributes" /> + <PermissionSetAttributes /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeReturnValue" /> + <explicitImplRefs /> + <comments /> + </method> + </eventRemove> + <xsl:call-template name="writeEventAccess" /> + <eventHandler name="" namespace="" commentId="{eventhandler/type/@api}" /> + </event> + </xsl:template> + + + <xsl:template match="*[apidata/@group='member' and apidata/@subgroup='constructor']"> + <constructor> + <xsl:attribute name="isOverload"> + <xsl:choose> + <xsl:when test="false()"><xsl:text>true</xsl:text></xsl:when> + <xsl:otherwise><xsl:text>false</xsl:text></xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <frameworks /> + <xsl:call-template name="writeMemberIdentity" /> + <xsl:call-template name="writeSource" /> + <xsl:call-template name="writeConstructorAccess" /> + <xsl:call-template name="writeMemberInheritance" /> + <xsl:call-template name="writeParameters" /> + <xsl:call-template name="writeCustomAttributes" /> + <PermissionSetAttributes /> + <comments /> + </constructor> + </xsl:template> + + <xsl:template match="attribute"> + <CustomAttribute> + <TypeRef name="{key('index',type/@api)/apidata/@name}" namespace="{key('index',key('index',type/@api)/containers/containingNamespace/@api)/apidata/@name}" commendId="{type/@api}" /> + <CustomAttributeNamedValues /> + <CustomattributeConstructor /> + </CustomAttribute> + </xsl:template> + + <xsl:template name="typeIdentity"> + <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{apidata/@name}" memberName="" commentId="{@id}" textId="" /> + </xsl:template> + + <xsl:template name="memberIdentity"> + <identity namespaceName="{key('index',containers/namespace/@api)/apidata/@name}" typeName="{key('index',containers/type/@api)/apidata/@name}" memberName="{apidata/@name}" commentId="{@id}" textId="" /> + </xsl:template> + + <xsl:template name="source"> + <source assembly="{containers/library/@assembly}" module="{containers/library/@module}.dll" /> + </xsl:template> + + <xsl:template match="templates"> + <genericTypeParameters> + <xsl:for-each select="template"> + <genericTypeParameter name="{@name}"> + <constraints /> + </genericTypeParameter> + </xsl:for-each> + </genericTypeParameters> + </xsl:template> + + <xsl:template name="typeReference"> + <xsl:attribute name="pointerIndirections"> + <xsl:value-of select="count(pointerTo)" /> + </xsl:attribute> + <xsl:attribute name="byRef"> + <xsl:value-of select="type/@ref" /> + </xsl:attribute> + <xsl:attribute name="pinned"> + <xsl:text>false</xsl:text> + </xsl:attribute> + <typeReference name="{key('index',.//type[1]/@api)/apidata/@name}" namespace="{key('index',key('index',.//type[1]/@api)/containers/namespace/@api)/apidata/@name}" commendId="{.//type[1]/@api}" /> + <customModifiers /> + <arrayDefinitions> + <xsl:if test="arrayOf"> + <xsl:attribute name="rank"> + <xsl:value-of select="arrayOf/@rank" /> + </xsl:attribute> + <dimensions /> + </xsl:if> + </arrayDefinitions> + </xsl:template> + + <xsl:template name="visibility"> + <xsl:param name="visibility" /> + <xsl:attribute name="visibility"> + <xsl:choose> + <xsl:when test="$visibility='public'"> + <xsl:text>Public</xsl:text> + </xsl:when> + <xsl:when test="$visibility='family'"> + <xsl:text>Family</xsl:text> + </xsl:when> + </xsl:choose> + </xsl:attribute> + </xsl:template> + </xsl:stylesheet>
\ No newline at end of file diff --git a/tools/Sandcastle/ProductionTransforms/ReflectionToChmIndex.xsl b/tools/Sandcastle/ProductionTransforms/ReflectionToChmIndex.xsl index 6e7aa70..c6dc44e 100644 --- a/tools/Sandcastle/ProductionTransforms/ReflectionToChmIndex.xsl +++ b/tools/Sandcastle/ProductionTransforms/ReflectionToChmIndex.xsl @@ -1,77 +1,77 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output method="text" encoding="iso-8859-1" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <xsl:text><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML/EN">
</xsl:text>
- <xsl:text><HTML>
</xsl:text>
- <xsl:text> <BODY>
</xsl:text>
- <xsl:text> <UL>
</xsl:text>
-
- <xsl:apply-templates select="/reflection/apis/api"/>
-
- <xsl:text> </UL>
</xsl:text>
- <xsl:text> </BODY>
</xsl:text>
- <xsl:text></HTML>
</xsl:text>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='namespace']">
- <xsl:call-template name="createIndexEntry">
- <xsl:with-param name="text" select="concat(apidata/@name,' namespace')" />
- <xsl:with-param name="file" select="file/@name" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='type']">
- <xsl:variable name="namespace" select="key('index',containers/namespace/@api)/apidata/@name" />
- <xsl:call-template name="createIndexEntry">
- <xsl:with-param name="text" select="concat(apidata/@name,' ',apidata/@subgroup)" />
- <xsl:with-param name="file" select="file/@name" />
- </xsl:call-template>
- <xsl:call-template name="createIndexEntry">
- <xsl:with-param name="text" select="concat($namespace,'.',apidata/@name,' ',apidata/@subgroup)" />
- <xsl:with-param name="file" select="file/@name" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="api[apidata/@group='member' and topicdata/@notopic !='']" >
- <xsl:variable name="type" select="key('index',containers/type/@api)" />
- <xsl:if test="not(apidata/@subgroup='constructor')">
- <xsl:call-template name="createIndexEntry">
- <xsl:with-param name="text">
- <xsl:value-of select="concat(apidata/@name,' ',apidata/@subgroup)" />
- </xsl:with-param>
- <xsl:with-param name="file" select="file/@name" />
- </xsl:call-template>
- </xsl:if>
- <xsl:call-template name="createIndexEntry">
- <xsl:with-param name="text">
- <xsl:choose>
- <xsl:when test="apidata/@subgroup='constructor'">
- <xsl:value-of select="concat($type/apidata/@name,' ',$type/apidata/@subgroup,', constructor')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat($type/apidata/@name,'.',apidata/@name,' ',apidata/@subgroup)" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:with-param>
- <xsl:with-param name="file" select="file/@name" />
- </xsl:call-template>
- </xsl:template>
-
- <xsl:template match="api" />
-
- <xsl:template name="createIndexEntry">
- <xsl:param name="text" />
- <xsl:param name="file" />
- <xsl:text> <LI><OBJECT type="text/sitemap">
</xsl:text>
- <xsl:text> <param name="Name" value="</xsl:text><xsl:value-of select="$text" /><xsl:text>">
</xsl:text>
- <xsl:text> <param name="Local" value="html/</xsl:text><xsl:value-of select="$file" /><xsl:text>.htm">
</xsl:text>
- <xsl:text> </OBJECT><LI>
</xsl:text>
-
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output method="text" encoding="iso-8859-1" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <xsl:text><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML/EN">
</xsl:text> + <xsl:text><HTML>
</xsl:text> + <xsl:text> <BODY>
</xsl:text> + <xsl:text> <UL>
</xsl:text> + + <xsl:apply-templates select="/reflection/apis/api"/> + + <xsl:text> </UL>
</xsl:text> + <xsl:text> </BODY>
</xsl:text> + <xsl:text></HTML>
</xsl:text> + </xsl:template> + + <xsl:template match="api[apidata/@group='namespace']"> + <xsl:call-template name="createIndexEntry"> + <xsl:with-param name="text" select="concat(apidata/@name,' namespace')" /> + <xsl:with-param name="file" select="file/@name" /> + </xsl:call-template> + </xsl:template> + + <xsl:template match="api[apidata/@group='type']"> + <xsl:variable name="namespace" select="key('index',containers/namespace/@api)/apidata/@name" /> + <xsl:call-template name="createIndexEntry"> + <xsl:with-param name="text" select="concat(apidata/@name,' ',apidata/@subgroup)" /> + <xsl:with-param name="file" select="file/@name" /> + </xsl:call-template> + <xsl:call-template name="createIndexEntry"> + <xsl:with-param name="text" select="concat($namespace,'.',apidata/@name,' ',apidata/@subgroup)" /> + <xsl:with-param name="file" select="file/@name" /> + </xsl:call-template> + </xsl:template> + + <xsl:template match="api[apidata/@group='member' and topicdata/@notopic !='']" > + <xsl:variable name="type" select="key('index',containers/type/@api)" /> + <xsl:if test="not(apidata/@subgroup='constructor')"> + <xsl:call-template name="createIndexEntry"> + <xsl:with-param name="text"> + <xsl:value-of select="concat(apidata/@name,' ',apidata/@subgroup)" /> + </xsl:with-param> + <xsl:with-param name="file" select="file/@name" /> + </xsl:call-template> + </xsl:if> + <xsl:call-template name="createIndexEntry"> + <xsl:with-param name="text"> + <xsl:choose> + <xsl:when test="apidata/@subgroup='constructor'"> + <xsl:value-of select="concat($type/apidata/@name,' ',$type/apidata/@subgroup,', constructor')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat($type/apidata/@name,'.',apidata/@name,' ',apidata/@subgroup)" /> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + <xsl:with-param name="file" select="file/@name" /> + </xsl:call-template> + </xsl:template> + + <xsl:template match="api" /> + + <xsl:template name="createIndexEntry"> + <xsl:param name="text" /> + <xsl:param name="file" /> + <xsl:text> <LI><OBJECT type="text/sitemap">
</xsl:text> + <xsl:text> <param name="Name" value="</xsl:text><xsl:value-of select="$text" /><xsl:text>">
</xsl:text> + <xsl:text> <param name="Local" value="html/</xsl:text><xsl:value-of select="$file" /><xsl:text>.htm">
</xsl:text> + <xsl:text> </OBJECT><LI>
</xsl:text> + + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/ReflectionToChmProject.xsl b/tools/Sandcastle/ProductionTransforms/ReflectionToChmProject.xsl index cde5a36..8150923 100644 --- a/tools/Sandcastle/ProductionTransforms/ReflectionToChmProject.xsl +++ b/tools/Sandcastle/ProductionTransforms/ReflectionToChmProject.xsl @@ -1,47 +1,47 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:param name="project" select="string('test')" />
-
- <xsl:output method="text" encoding="iso-8859-1" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:variable name="topic">
- <xsl:choose>
- <xsl:when test="/reflection/apis/api[apidata/@group='root']">
- <xsl:value-of select="/reflection/apis/api[apidata/@group='root'][1]/file/@name"/>
- </xsl:when>
- <xsl:when test="/reflection/apis/api[apidata/@group='namespace']">
- <xsl:value-of select="/reflection/apis/api[apidata/@group='namespace'][1]/file/@name"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="/reflection/apis/api[apidata/@group='type'][1]/file/@name"/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
-
- <xsl:template match="/">
- <xsl:text>[OPTIONS]
</xsl:text>
- <xsl:text>Compatibility=1.1 or later
</xsl:text>
- <xsl:text>Compiled file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.chm
</xsl:text>
- <xsl:text>Contents file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.hhc
</xsl:text>
- <xsl:text>Index file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.hhk
</xsl:text>
- <xsl:text>Default Topic=html/</xsl:text><xsl:value-of select="$topic" /><xsl:text>.htm
</xsl:text>
- <!-- <xsl:text>Display compile progress=No
</xsl:text> -->
- <xsl:text>Full-text search=Yes
</xsl:text>
- <xsl:text>Language=0x409 English (United States)
</xsl:text>
- <xsl:text>Title=</xsl:text><xsl:value-of select="$project" /><xsl:text>
</xsl:text>
-
- <xsl:text>[FILES]
</xsl:text>
- <xsl:text>icons\*.gif
</xsl:text>
- <xsl:text>art\*.gif
</xsl:text>
- <xsl:text>media\*.gif
</xsl:text>
- <xsl:text>scripts\*.js
</xsl:text>
- <xsl:text>styles\*.css
</xsl:text>
- <xsl:text>html\*.htm
</xsl:text>
-
- <xsl:text>[INFOTYPES]
</xsl:text>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:param name="project" select="string('test')" /> + + <xsl:output method="text" encoding="iso-8859-1" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:variable name="topic"> + <xsl:choose> + <xsl:when test="/reflection/apis/api[apidata/@group='root']"> + <xsl:value-of select="/reflection/apis/api[apidata/@group='root'][1]/file/@name"/> + </xsl:when> + <xsl:when test="/reflection/apis/api[apidata/@group='namespace']"> + <xsl:value-of select="/reflection/apis/api[apidata/@group='namespace'][1]/file/@name"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="/reflection/apis/api[apidata/@group='type'][1]/file/@name"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + + <xsl:template match="/"> + <xsl:text>[OPTIONS]
</xsl:text> + <xsl:text>Compatibility=1.1 or later
</xsl:text> + <xsl:text>Compiled file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.chm
</xsl:text> + <xsl:text>Contents file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.hhc
</xsl:text> + <xsl:text>Index file=</xsl:text><xsl:value-of select="$project" /><xsl:text>.hhk
</xsl:text> + <xsl:text>Default Topic=html/</xsl:text><xsl:value-of select="$topic" /><xsl:text>.htm
</xsl:text> + <!-- <xsl:text>Display compile progress=No
</xsl:text> --> + <xsl:text>Full-text search=Yes
</xsl:text> + <xsl:text>Language=0x409 English (United States)
</xsl:text> + <xsl:text>Title=</xsl:text><xsl:value-of select="$project" /><xsl:text>
</xsl:text> + + <xsl:text>[FILES]
</xsl:text> + <xsl:text>icons\*.gif
</xsl:text> + <xsl:text>art\*.gif
</xsl:text> + <xsl:text>media\*.gif
</xsl:text> + <xsl:text>scripts\*.js
</xsl:text> + <xsl:text>styles\*.css
</xsl:text> + <xsl:text>html\*.htm
</xsl:text> + + <xsl:text>[INFOTYPES]
</xsl:text> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/ReflectionToManifest.xsl b/tools/Sandcastle/ProductionTransforms/ReflectionToManifest.xsl index b12d480..3d13ab9 100644 --- a/tools/Sandcastle/ProductionTransforms/ReflectionToManifest.xsl +++ b/tools/Sandcastle/ProductionTransforms/ReflectionToManifest.xsl @@ -1,21 +1,21 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" />
-
- <xsl:key name="index" match="/reflection/apis/api" use="@id" />
-
- <xsl:template match="/">
- <topics>
- <xsl:apply-templates select="/reflection/apis/api" />
- </topics>
- </xsl:template>
-
- <!-- namespace and member topics -->
- <xsl:template match="api">
- <xsl:if test="not(topicdata/@notopic)">
- <topic id="{@id}" />
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" /> + + <xsl:key name="index" match="/reflection/apis/api" use="@id" /> + + <xsl:template match="/"> + <topics> + <xsl:apply-templates select="/reflection/apis/api" /> + </topics> + </xsl:template> + + <!-- namespace and member topics --> + <xsl:template match="api"> + <xsl:if test="not(topicdata/@notopic)"> + <topic id="{@id}" /> + </xsl:if> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/TocToChmContents.xsl b/tools/Sandcastle/ProductionTransforms/TocToChmContents.xsl index 82e034a..0c6a17e 100644 --- a/tools/Sandcastle/ProductionTransforms/TocToChmContents.xsl +++ b/tools/Sandcastle/ProductionTransforms/TocToChmContents.xsl @@ -1,79 +1,79 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Doc Studio Contents to HTML Help Compiler Contents Transform
-
- Invoke with: xsltransform TocToChmContents.xsl toc.xml [/arg:html=html-dir] /out:output.hhc
-
- - comments - specifies the directory where the HTML files are stored.
-
- NOTE: The output looks like HTML, but it isn't. Whitespace is significant.
--->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:msxsl="urn:schemas-microsoft-com:xslt"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5">
-
- <msxsl:script language="C#" implements-prefix="ddue">
- <msxsl:using namespace="System.Xml" />
- <msxsl:using namespace="System.Xml.XPath" />
- <![CDATA[
- public static string getTitle(string fileName) {
- XPathDocument doc = new XPathDocument(fileName);
- XPathNavigator node = doc.CreateNavigator().SelectSingleNode("/html/head/title");
- if (node != null)
- return node.Value;
- else
- return String.Empty;
- }
- ]]>
- </msxsl:script>
-
-
- <xsl:param name="html" select="string('Output/html')"/>
-
- <xsl:output method="text" encoding="utf-8"/>
-
- <xsl:template match="/">
- <xsl:text><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML/EN">
</xsl:text>
- <xsl:text><HTML>
</xsl:text>
- <xsl:text> <BODY>
</xsl:text>
- <xsl:apply-templates select="topics"/>
- <xsl:text> </BODY>
</xsl:text>
- <xsl:text></HTML>
</xsl:text>
- </xsl:template>
-
- <xsl:template match="topics">
- <xsl:call-template name="parentNode"/>
- </xsl:template>
-
- <xsl:template name="parentNode">
- <xsl:if test="topic">
- <xsl:call-template name="indent"/>
- <xsl:text><UL>
</xsl:text>
- <xsl:apply-templates select="topic"/>
- <xsl:call-template name="indent"/>
- <xsl:text></UL>
</xsl:text>
- </xsl:if>
- </xsl:template>
-
- <xsl:template match="topic">
- <xsl:call-template name="indent"/>
- <xsl:text><![CDATA[<LI><OBJECT type="text/sitemap">]]>
</xsl:text>
- <xsl:call-template name="indent"/>
- <xsl:text> <param name="Name" value="</xsl:text>
- <xsl:value-of select="ddue:getTitle(concat($html,'/', @file, '.htm'))"/>
- <xsl:text>">
</xsl:text>
- <xsl:call-template name="indent"/>
- <xsl:text> <param name="Local" value="html\</xsl:text>
- <xsl:value-of select="@file"/>
- <xsl:text>.htm">
</xsl:text>
- <xsl:call-template name="indent"/>
- <xsl:text><![CDATA[</OBJECT></LI>]]>
</xsl:text>
-
- <xsl:call-template name="parentNode"/>
- </xsl:template>
-
- <xsl:template name="indent"><xsl:for-each select="ancestor::*"><xsl:text>  </xsl:text></xsl:for-each></xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?> + +<!-- Doc Studio Contents to HTML Help Compiler Contents Transform + + Invoke with: xsltransform TocToChmContents.xsl toc.xml [/arg:html=html-dir] /out:output.hhc + + - comments - specifies the directory where the HTML files are stored. + + NOTE: The output looks like HTML, but it isn't. Whitespace is significant. +--> + +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:msxsl="urn:schemas-microsoft-com:xslt" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"> + + <msxsl:script language="C#" implements-prefix="ddue"> + <msxsl:using namespace="System.Xml" /> + <msxsl:using namespace="System.Xml.XPath" /> + <![CDATA[ + public static string getTitle(string fileName) { + XPathDocument doc = new XPathDocument(fileName); + XPathNavigator node = doc.CreateNavigator().SelectSingleNode("/html/head/title"); + if (node != null) + return node.Value; + else + return String.Empty; + } + ]]> + </msxsl:script> + + + <xsl:param name="html" select="string('Output/html')"/> + + <xsl:output method="text" encoding="utf-8"/> + + <xsl:template match="/"> + <xsl:text><!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML/EN">
</xsl:text> + <xsl:text><HTML>
</xsl:text> + <xsl:text> <BODY>
</xsl:text> + <xsl:apply-templates select="topics"/> + <xsl:text> </BODY>
</xsl:text> + <xsl:text></HTML>
</xsl:text> + </xsl:template> + + <xsl:template match="topics"> + <xsl:call-template name="parentNode"/> + </xsl:template> + + <xsl:template name="parentNode"> + <xsl:if test="topic"> + <xsl:call-template name="indent"/> + <xsl:text><UL>
</xsl:text> + <xsl:apply-templates select="topic"/> + <xsl:call-template name="indent"/> + <xsl:text></UL>
</xsl:text> + </xsl:if> + </xsl:template> + + <xsl:template match="topic"> + <xsl:call-template name="indent"/> + <xsl:text><![CDATA[<LI><OBJECT type="text/sitemap">]]>
</xsl:text> + <xsl:call-template name="indent"/> + <xsl:text> <param name="Name" value="</xsl:text> + <xsl:value-of select="ddue:getTitle(concat($html,'/', @file, '.htm'))"/> + <xsl:text>">
</xsl:text> + <xsl:call-template name="indent"/> + <xsl:text> <param name="Local" value="html\</xsl:text> + <xsl:value-of select="@file"/> + <xsl:text>.htm">
</xsl:text> + <xsl:call-template name="indent"/> + <xsl:text><![CDATA[</OBJECT></LI>]]>
</xsl:text> + + <xsl:call-template name="parentNode"/> + </xsl:template> + + <xsl:template name="indent"><xsl:for-each select="ancestor::*"><xsl:text>  </xsl:text></xsl:for-each></xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/TocToHxsContents.xsl b/tools/Sandcastle/ProductionTransforms/TocToHxsContents.xsl index 44a4484..5fa6ce1 100644 --- a/tools/Sandcastle/ProductionTransforms/TocToHxsContents.xsl +++ b/tools/Sandcastle/ProductionTransforms/TocToHxsContents.xsl @@ -1,54 +1,54 @@ -<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1">
-
- <xsl:output indent="yes" encoding="UTF-8" doctype-system="MS-Help://Hx/Resources/HelpTOC.dtd" />
-
- <xsl:param name="segregated" />
- <xsl:param name="includeIds" />
-
- <xsl:template match="/">
- <HelpTOC DTDVersion="1.0">
- <xsl:apply-templates select="/topics" />
- </HelpTOC>
- </xsl:template>
-
- <xsl:template match="topic">
- <HelpTOCNode>
- <xsl:if test="boolean($includeIds)">
- <xsl:attribute name="Id">
- <xsl:value-of select="@id"/>
- </xsl:attribute>
- </xsl:if>
- <xsl:choose>
- <xsl:when test="@file">
- <xsl:attribute name="Url">
- <xsl:choose>
- <xsl:when test="boolean($segregated)">
- <xsl:value-of select="concat('ms-help:/../',@project,'/html/',@file,'.htm')" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="concat('html\',@file,'.htm')" />
- </xsl:otherwise>
- </xsl:choose>
- </xsl:attribute>
- </xsl:when>
- <xsl:otherwise>
- <xsl:attribute name="Title">
- <xsl:value-of select="@id" />
- </xsl:attribute>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:apply-templates />
- </HelpTOCNode>
- </xsl:template>
-
- <xsl:template match="stoc">
- <HelpTOCNode NodeType="TOC" Url="{@project}" />
- </xsl:template>
-
- <xsl:template match="stopic">
- <HelpTOCNode Url="ms-help:/../{@project}/html/{@file}.htm" Id="{@id}">
- <xsl:apply-templates />
- </HelpTOCNode>
- </xsl:template>
-</xsl:stylesheet>
+<?xml version="1.0"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.1"> + + <xsl:output indent="yes" encoding="UTF-8" doctype-system="MS-Help://Hx/Resources/HelpTOC.dtd" /> + + <xsl:param name="segregated" /> + <xsl:param name="includeIds" /> + + <xsl:template match="/"> + <HelpTOC DTDVersion="1.0"> + <xsl:apply-templates select="/topics" /> + </HelpTOC> + </xsl:template> + + <xsl:template match="topic"> + <HelpTOCNode> + <xsl:if test="boolean($includeIds)"> + <xsl:attribute name="Id"> + <xsl:value-of select="@id"/> + </xsl:attribute> + </xsl:if> + <xsl:choose> + <xsl:when test="@file"> + <xsl:attribute name="Url"> + <xsl:choose> + <xsl:when test="boolean($segregated)"> + <xsl:value-of select="concat('ms-help:/../',@project,'/html/',@file,'.htm')" /> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="concat('html\',@file,'.htm')" /> + </xsl:otherwise> + </xsl:choose> + </xsl:attribute> + </xsl:when> + <xsl:otherwise> + <xsl:attribute name="Title"> + <xsl:value-of select="@id" /> + </xsl:attribute> + </xsl:otherwise> + </xsl:choose> + <xsl:apply-templates /> + </HelpTOCNode> + </xsl:template> + + <xsl:template match="stoc"> + <HelpTOCNode NodeType="TOC" Url="{@project}" /> + </xsl:template> + + <xsl:template match="stopic"> + <HelpTOCNode Url="ms-help:/../{@project}/html/{@file}.htm" Id="{@id}"> + <xsl:apply-templates /> + </HelpTOCNode> + </xsl:template> +</xsl:stylesheet> diff --git a/tools/Sandcastle/ProductionTransforms/Vs2005TocToDsToc.xsl b/tools/Sandcastle/ProductionTransforms/Vs2005TocToDsToc.xsl index 2868a29..5c01d49 100644 --- a/tools/Sandcastle/ProductionTransforms/Vs2005TocToDsToc.xsl +++ b/tools/Sandcastle/ProductionTransforms/Vs2005TocToDsToc.xsl @@ -1,41 +1,41 @@ -<?xml version="1.0" encoding="utf-8"?>
-
-<!-- This transform turns a mref TOC produced by CreateVSToc.xsl into a format suitable for TocToSitemap.xsl
- We're also using this step to resolve topic titles and urls.
-
- Invoke with:
- xsltransform /xsl:FixMrefToc.xsl /arg:topicInfo=topic-info-dir /out:mreftoc.xml
--->
-
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5">
-
- <xsl:param name="topicInfo" select="'Temp\TopicInfo'"/>
-
- <xsl:output indent="yes" encoding="utf-8"/>
-
- <xsl:namespace-alias stylesheet-prefix="ddue" result-prefix="#default"/>
-
- <xsl:template match="/topics">
- <tableOfContents>
- <xsl:apply-templates/>
- </tableOfContents>
- </xsl:template>
-
- <xsl:template match="topic">
- <topic>
- <xsl:attribute name="id">
- <xsl:value-of select="@file"/>
- </xsl:attribute>
- <xsl:attribute name="url">
- <xsl:value-of select="document(concat($topicInfo, '/', @file, '.xml'))//pageUrl[1]"/>
- </xsl:attribute>
- <xsl:attribute name="title">
- <xsl:value-of select="document(concat($topicInfo, '/', @file, '.xml'))//title[1]"/>
- </xsl:attribute>
- <xsl:apply-templates/>
- </topic>
- </xsl:template>
-
-</xsl:stylesheet>
+<?xml version="1.0" encoding="utf-8"?> + +<!-- This transform turns a mref TOC produced by CreateVSToc.xsl into a format suitable for TocToSitemap.xsl + We're also using this step to resolve topic titles and urls. + + Invoke with: + xsltransform /xsl:FixMrefToc.xsl /arg:topicInfo=topic-info-dir /out:mreftoc.xml +--> + +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"> + + <xsl:param name="topicInfo" select="'Temp\TopicInfo'"/> + + <xsl:output indent="yes" encoding="utf-8"/> + + <xsl:namespace-alias stylesheet-prefix="ddue" result-prefix="#default"/> + + <xsl:template match="/topics"> + <tableOfContents> + <xsl:apply-templates/> + </tableOfContents> + </xsl:template> + + <xsl:template match="topic"> + <topic> + <xsl:attribute name="id"> + <xsl:value-of select="@file"/> + </xsl:attribute> + <xsl:attribute name="url"> + <xsl:value-of select="document(concat($topicInfo, '/', @file, '.xml'))//pageUrl[1]"/> + </xsl:attribute> + <xsl:attribute name="title"> + <xsl:value-of select="document(concat($topicInfo, '/', @file, '.xml'))//title[1]"/> + </xsl:attribute> + <xsl:apply-templates/> + </topic> + </xsl:template> + +</xsl:stylesheet> diff --git a/tools/Sandcastle/Schemas/Authoring/__internal.xsd b/tools/Sandcastle/Schemas/Authoring/__internal.xsd index 7a278df..a8bea4f 100644 --- a/tools/Sandcastle/Schemas/Authoring/__internal.xsd +++ b/tools/Sandcastle/Schemas/Authoring/__internal.xsd @@ -1,98 +1,98 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/internal"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema defines elements that are used to mark
- items in another schema with extra information. These
- elements can be put into annotation/appinfo sections.
- </documentation>
- </annotation>
-
- <element name="localizable">
- <annotation>
- <documentation>
- Describes the localizability of the text content
- in the element to which this tag has been applied.
- This tag has nothing to say about child elements of the
- element to which this tag has been applied.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="token">
- <enumeration value="true">
- <annotation>
- <documentation>
- The element contains text and that text
- needs to be considered for localization.
- </documentation>
- </annotation>
- </enumeration>
- <enumeration value="false">
- <annotation>
- <documentation>
- The element contains text but that text
- does not need to be considered for localization.
- </documentation>
- </annotation>
- </enumeration>
- <enumeration value="n/a">
- <annotation>
- <documentation>
- The element does not contain text, so there is nothing that
- can be localized.
- </documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
- </element>
-
- <element name="type">
- <annotation>
- <documentation>
- Describes the general use of an element within the
- document.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="token">
- <enumeration value="section">
- <annotation>
- <documentation>
- The element defines a section of a document.
- </documentation>
- </annotation>
- </enumeration>
- <enumeration value="structure">
- <annotation>
- <documentation>
- The element provides some structure in the context of its parent section.
- </documentation>
- </annotation>
- </enumeration>
- <enumeration value="paragraph">
- <annotation>
- <documentation>
- The element is equivalent to a paragraph.
- </documentation>
- </annotation>
- </enumeration>
- <enumeration value="character">
- <annotation>
- <documentation>
- The element contains one or more characters within a paragraph.
- </documentation>
- </annotation>
- </enumeration>
- </restriction>
- </simpleType>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/internal" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema defines elements that are used to mark + items in another schema with extra information. These + elements can be put into annotation/appinfo sections. + </documentation> + </annotation> + + <element name="localizable"> + <annotation> + <documentation> + Describes the localizability of the text content + in the element to which this tag has been applied. + This tag has nothing to say about child elements of the + element to which this tag has been applied. + </documentation> + </annotation> + <simpleType> + <restriction base="token"> + <enumeration value="true"> + <annotation> + <documentation> + The element contains text and that text + needs to be considered for localization. + </documentation> + </annotation> + </enumeration> + <enumeration value="false"> + <annotation> + <documentation> + The element contains text but that text + does not need to be considered for localization. + </documentation> + </annotation> + </enumeration> + <enumeration value="n/a"> + <annotation> + <documentation> + The element does not contain text, so there is nothing that + can be localized. + </documentation> + </annotation> + </enumeration> + </restriction> + </simpleType> + </element> + + <element name="type"> + <annotation> + <documentation> + Describes the general use of an element within the + document. + </documentation> + </annotation> + <simpleType> + <restriction base="token"> + <enumeration value="section"> + <annotation> + <documentation> + The element defines a section of a document. + </documentation> + </annotation> + </enumeration> + <enumeration value="structure"> + <annotation> + <documentation> + The element provides some structure in the context of its parent section. + </documentation> + </annotation> + </enumeration> + <enumeration value="paragraph"> + <annotation> + <documentation> + The element is equivalent to a paragraph. + </documentation> + </annotation> + </enumeration> + <enumeration value="character"> + <annotation> + <documentation> + The element contains one or more characters within a paragraph. + </documentation> + </annotation> + </enumeration> + </restriction> + </simpleType> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/base.xsd b/tools/Sandcastle/Schemas/Authoring/base.xsd index dfb8e92..f9f248a 100644 --- a/tools/Sandcastle/Schemas/Authoring/base.xsd +++ b/tools/Sandcastle/Schemas/Authoring/base.xsd @@ -1,220 +1,220 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema defines attributes and simpleTypes that can be referenced
- from any other part of Maml.
- </documentation>
- </annotation>
-
- <import schemaLocation="xlink.xsd" namespace="http://www.w3.org/1999/xlink"/>
-
- <!-- simpleType declarations -->
- <simpleType name="mediaFileFormatsType">
- <annotation>
- <documentation>
- The mediaFileFormatsType simpleType provides a list of commonly
- used media formats.
- </documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="asx"/>
- <enumeration value="bmp"/>
- <enumeration value="eps"/>
- <enumeration value="flash"/>
- <enumeration value="gif"/>
- <enumeration value="png"/>
- <enumeration value="jpeg"/>
- <enumeration value="shockwave"/>
- <enumeration value="quicktime"/>
- <enumeration value="wma"/>
- <enumeration value="wmf"/>
- <enumeration value="mpeg"/>
- <enumeration value="mp3"/>
- <enumeration value="other"/>
- </restriction>
- </simpleType>
-
- <simpleType name="alertTypesType">
- <annotation>
- <documentation>
- The alertTypesType simpleType provides a list of the various types
- of alerts that can be used to describe alerts.
- </documentation>
- </annotation>
- <restriction base="string">
- <enumeration value="note"/>
- <enumeration value="caution"/>
- <enumeration value="important"/>
- <enumeration value="tip"/>
- <enumeration value="warning"/>
- <enumeration value="security note"/>
- <enumeration value="visual basic note"/>
- <enumeration value="visual c# note"/>
- <enumeration value="visual c++ note"/>
- <enumeration value="visual j# note"/>
- </restriction>
- </simpleType>
-
- <simpleType name="devLanguagesType">
- <restriction base="token">
- <enumeration value="cpp" />
- <enumeration value="vb" />
- <enumeration value="vbs" />
- <enumeration value="js" />
- <enumeration value="c#" />
- <enumeration value="j#" />
- <enumeration value="jscript#" />
- <enumeration value="cpp#"/>
- <enumeration value="vb#" />
- <enumeration value="xml"/>
- <enumeration value="html" />
- <!--<enumeration value="other"/>-->
- <!--<enumeration value="other#"/>-->
- <!-- the following 3 were entered for DDUELocTools bug 1858 -->
- <enumeration value="unstlib"/>
- <enumeration value="minterastlib"/>
- <enumeration value="mintraastlib"/>
- <!-- CAS: added the following for DDUE -->
- <enumeration value="vb-c#"/>
- <enumeration value="jscript"/>
- <enumeration value="scr"/>
- </restriction>
- </simpleType>
-
- <!-- attribute declarations -->
- <attributeGroup name="contentFlavourGroup">
- <annotation>
- <documentation>
- The contentFlavourGroup attribute group provides a set of attributes for describing the
- general flavour of content.
- </documentation>
- </annotation>
-
- <attribute name="language" type="token">
- <annotation>
- <documentation>
- The language attribute describes the natural language of a particular part of a document.
- </documentation>
- <documentation>
- This attribute should eventually use a simpleType that provides the list of natural languages.
- </documentation>
- </annotation>
- </attribute>
-
- <attribute name="userLevel" type="token">
- <annotation>
- <documentation>
- The userLevel attribute describes the level of user that is appropriate for a
- particular part of a document. The level may map to personas or to levels of
- knowledge.
- </documentation>
- </annotation>
- </attribute>
-
- <attribute name="technology" type="token">
- <annotation>
- <documentation>
- The technology attribute describes one or more technologies to which the
- content applies.
- </documentation>
- </annotation>
- </attribute>
-
- <attribute name="textType" default="normal">
- <annotation>
- <documentation>
- The class attribute is used to select the type of content.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="token">
- <enumeration value="normal" />
- <enumeration value="overview" />
- <enumeration value="prescriptive" />
- <enumeration value="abstract" />
- <enumeration value="conclusion"/>
- <enumeration value="legal"/>
- <enumeration value="prerequisite"/>
- <enumeration value="advertisement"/>
- </restriction>
- </simpleType>
- </attribute>
- </attributeGroup>
-
- <simpleType name="conditionStringType">
- <restriction base="anyURI">
- </restriction>
- </simpleType>
-
- <attributeGroup name="addressAttributeGroup">
- <attribute name="address" type="ID">
- <annotation>
- <documentation>
- The address attribute describes the attached content with a unique ID/GUID/URI that
- can be referenced for sharing, hyperlinking or other purposes.
- </documentation>
- </annotation>
- </attribute>
- </attributeGroup>
-
- <attributeGroup name="contentIdentificationSharingAndConditionGroup">
- <annotation>
- <documentation>
- The contentIdentificationSharingAndConditionGroup provides a set of attributes for
- identifying content and for marking it for sharing and conditional filtering.
- </documentation>
- </annotation>
-
- <attributeGroup ref="maml:addressAttributeGroup"/>
-
- <!--<attribute name="condition" type="maml:conditionStringType">
- <annotation>
- <documentation>
- The value of this attribute is a reference to a condition set that holds one
- or more conditions that must be met if the element to which this attribute is applied
- is to be considered 'relevant'. (Relevance may be a build-time or a run-time concept).
- </documentation>
- </annotation>
- </attribute>-->
-
- </attributeGroup>
-
- <attributeGroup name="linkingGroup">
- <attribute ref="xlink:href"/>
- </attributeGroup>
-
- <!-- complexType declarations -->
- <complexType name="textType">
- <annotation>
- <documentation>
- This type includes the common attributes and allows character data.
- </documentation>
- </annotation>
- <simpleContent>
- <extension base="normalizedString">
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </extension>
- </simpleContent>
- </complexType>
-
- <complexType name="emptyType">
- <annotation>
- <documentation>
- The emptyType type is intended for empty element w/o attributes.
- There is no schema type for empty.
- </documentation>
- </annotation>
- </complexType>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + xmlns:xlink="http://www.w3.org/1999/xlink" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema defines attributes and simpleTypes that can be referenced + from any other part of Maml. + </documentation> + </annotation> + + <import schemaLocation="xlink.xsd" namespace="http://www.w3.org/1999/xlink"/> + + <!-- simpleType declarations --> + <simpleType name="mediaFileFormatsType"> + <annotation> + <documentation> + The mediaFileFormatsType simpleType provides a list of commonly + used media formats. + </documentation> + </annotation> + <restriction base="token"> + <enumeration value="asx"/> + <enumeration value="bmp"/> + <enumeration value="eps"/> + <enumeration value="flash"/> + <enumeration value="gif"/> + <enumeration value="png"/> + <enumeration value="jpeg"/> + <enumeration value="shockwave"/> + <enumeration value="quicktime"/> + <enumeration value="wma"/> + <enumeration value="wmf"/> + <enumeration value="mpeg"/> + <enumeration value="mp3"/> + <enumeration value="other"/> + </restriction> + </simpleType> + + <simpleType name="alertTypesType"> + <annotation> + <documentation> + The alertTypesType simpleType provides a list of the various types + of alerts that can be used to describe alerts. + </documentation> + </annotation> + <restriction base="string"> + <enumeration value="note"/> + <enumeration value="caution"/> + <enumeration value="important"/> + <enumeration value="tip"/> + <enumeration value="warning"/> + <enumeration value="security note"/> + <enumeration value="visual basic note"/> + <enumeration value="visual c# note"/> + <enumeration value="visual c++ note"/> + <enumeration value="visual j# note"/> + </restriction> + </simpleType> + + <simpleType name="devLanguagesType"> + <restriction base="token"> + <enumeration value="cpp" /> + <enumeration value="vb" /> + <enumeration value="vbs" /> + <enumeration value="js" /> + <enumeration value="c#" /> + <enumeration value="j#" /> + <enumeration value="jscript#" /> + <enumeration value="cpp#"/> + <enumeration value="vb#" /> + <enumeration value="xml"/> + <enumeration value="html" /> + <!--<enumeration value="other"/>--> + <!--<enumeration value="other#"/>--> + <!-- the following 3 were entered for DDUELocTools bug 1858 --> + <enumeration value="unstlib"/> + <enumeration value="minterastlib"/> + <enumeration value="mintraastlib"/> + <!-- CAS: added the following for DDUE --> + <enumeration value="vb-c#"/> + <enumeration value="jscript"/> + <enumeration value="scr"/> + </restriction> + </simpleType> + + <!-- attribute declarations --> + <attributeGroup name="contentFlavourGroup"> + <annotation> + <documentation> + The contentFlavourGroup attribute group provides a set of attributes for describing the + general flavour of content. + </documentation> + </annotation> + + <attribute name="language" type="token"> + <annotation> + <documentation> + The language attribute describes the natural language of a particular part of a document. + </documentation> + <documentation> + This attribute should eventually use a simpleType that provides the list of natural languages. + </documentation> + </annotation> + </attribute> + + <attribute name="userLevel" type="token"> + <annotation> + <documentation> + The userLevel attribute describes the level of user that is appropriate for a + particular part of a document. The level may map to personas or to levels of + knowledge. + </documentation> + </annotation> + </attribute> + + <attribute name="technology" type="token"> + <annotation> + <documentation> + The technology attribute describes one or more technologies to which the + content applies. + </documentation> + </annotation> + </attribute> + + <attribute name="textType" default="normal"> + <annotation> + <documentation> + The class attribute is used to select the type of content. + </documentation> + </annotation> + <simpleType> + <restriction base="token"> + <enumeration value="normal" /> + <enumeration value="overview" /> + <enumeration value="prescriptive" /> + <enumeration value="abstract" /> + <enumeration value="conclusion"/> + <enumeration value="legal"/> + <enumeration value="prerequisite"/> + <enumeration value="advertisement"/> + </restriction> + </simpleType> + </attribute> + </attributeGroup> + + <simpleType name="conditionStringType"> + <restriction base="anyURI"> + </restriction> + </simpleType> + + <attributeGroup name="addressAttributeGroup"> + <attribute name="address" type="ID"> + <annotation> + <documentation> + The address attribute describes the attached content with a unique ID/GUID/URI that + can be referenced for sharing, hyperlinking or other purposes. + </documentation> + </annotation> + </attribute> + </attributeGroup> + + <attributeGroup name="contentIdentificationSharingAndConditionGroup"> + <annotation> + <documentation> + The contentIdentificationSharingAndConditionGroup provides a set of attributes for + identifying content and for marking it for sharing and conditional filtering. + </documentation> + </annotation> + + <attributeGroup ref="maml:addressAttributeGroup"/> + + <!--<attribute name="condition" type="maml:conditionStringType"> + <annotation> + <documentation> + The value of this attribute is a reference to a condition set that holds one + or more conditions that must be met if the element to which this attribute is applied + is to be considered 'relevant'. (Relevance may be a build-time or a run-time concept). + </documentation> + </annotation> + </attribute>--> + + </attributeGroup> + + <attributeGroup name="linkingGroup"> + <attribute ref="xlink:href"/> + </attributeGroup> + + <!-- complexType declarations --> + <complexType name="textType"> + <annotation> + <documentation> + This type includes the common attributes and allows character data. + </documentation> + </annotation> + <simpleContent> + <extension base="normalizedString"> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </extension> + </simpleContent> + </complexType> + + <complexType name="emptyType"> + <annotation> + <documentation> + The emptyType type is intended for empty element w/o attributes. + There is no schema type for empty. + </documentation> + </annotation> + </complexType> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/baseConditional.xsd b/tools/Sandcastle/Schemas/Authoring/baseConditional.xsd index b0ee03a..957d612 100644 --- a/tools/Sandcastle/Schemas/Authoring/baseConditional.xsd +++ b/tools/Sandcastle/Schemas/Authoring/baseConditional.xsd @@ -1,234 +1,234 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema
- xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- blockDefault="#all"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- xml:lang="en"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema describes MAML, the Microsoft Assistance Markup Language.
- MAML is intended for software documentation. In particular, it is
- intended to accomodate the needs of Microsoft documentation.
- </documentation>
- <documentation>
- The schema is broken into three main areas: end user, developer and
- IT Pro. These areas adequaltely categorize Microsoft
- documentation.
- </documentation>
- <documentation>
- The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
- Each backwards-incompatible revision to Maml will require that the date fields be appropriately
- incremented in uri of the updated version of the Maml schema.
- </documentation>
- </annotation>
-
- <annotation>
- <documentation>
- This portion of the schema was created by alexstoc in April 2003.
- </documentation>
- </annotation>
-
- <include schemaLocation="base.xsd"/>
-
- <complexType name="programmingLanguageType" mixed="false">
- <simpleContent>
- <extension base="maml:devLanguagesType"/>
- </simpleContent>
- </complexType>
-
- <element name="programmingLanguage" type="maml:programmingLanguageType">
- <annotation>
- <documentation>
- This element is used to hold a programming language.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <simpleType name="operatingSystemsStringType">
- <restriction base="token">
- <enumeration value="Win95"/> <!--Windows 95-->
- <enumeration value="Win98"/> <!--Windows 98-->
- <enumeration value="Win98Se"/> <!--Windows 98 Second Edition-->
- <enumeration value="WinMe"/> <!--Windows Millennium Edition-->
- <enumeration value="WinNt4Server"/> <!--Windows NT Server 4.0-->
- <enumeration value="WinNt4Workstation"/> <!--Windows NT Workstation 4.0-->
- <enumeration value="Win2kProfessional"/> <!--Windows 2000 Professional-->
- <enumeration value="Win2kServer"/> <!--Windows 2000 Server-->
- <enumeration value="Win2kAdvanced"/> <!--Windows 2000 Advanced Server-->
- <enumeration value="Win2kDatacenter"/> <!--Windows 2000 Datacenter Server-->
- <enumeration value="Win2kServerApplianceKit"/> <!--Windows 2000 with Server Appliance Kit-->
- <enumeration value="WinXpHome"/> <!--Windows XP Home Edition-->
- <enumeration value="WinXpProfessional"/> <!--Windows XP Professional-->
- <enumeration value="WinXpMediaCenter"/> <!--Windows XP Media Center-->
- <enumeration value="WinXpTablet"/> <!--Windows XP Tablet PC-->
- <enumeration value="WinXpEmbedded"/> <!--Windows XP Embedded-->
- <enumeration value="Win2003Server"/> <!--Windows Server 2003-->
- <!--<enumeration value="WinCeDotNet"/> --> <!--Windows CE .NET-->
- <enumeration value="NETCF"/> <!--Windows CE .NET-->
- </restriction>
- </simpleType>
-
- <simpleType name="operatingSystemFamiliesStringType">
- <restriction base="token">
- <enumeration value="Win9xFamily"/> <!--Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition-->
- <enumeration value="WinNt4Family"/> <!--Windows NT Server 4.0, Windows NT Workstation 4.0-->
- <enumeration value="Win2kFamily"/> <!--Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server-->
- <enumeration value="WinXpFamily"/> <!--Windows XP Home Edition, Windows XP Professional, Windows XP Media Center, Windows XP Tablet PC-->
- <!--<enumeration value="WinCeFamily"/> --> <!--Windows CE .NET (and previous versions)-->
- </restriction>
- </simpleType>
-
- <simpleType name="platformStringType">
- <union memberTypes="maml:operatingSystemsStringType maml:operatingSystemFamiliesStringType">
- <simpleType>
- <restriction base="token">
- <enumeration value="EcmaCli"/> <!--Common Language Infrastructure (CLI) Standard-->
- </restriction>
- </simpleType>
- </union>
- </simpleType>
-
- <complexType name="platformType" mixed="false">
- <simpleContent>
- <extension base="maml:platformStringType"/>
- </simpleContent>
- </complexType>
-
- <element name="platform" type="maml:platformType">
- <annotation>
- <documentation>
- This element holds the identifier for a platform (such as an operating system version).
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <simpleType name="legacyPlatformStringType">
- <restriction base="token">
- <enumeration value="Win"/>
- <enumeration value="Mac"/>
- </restriction>
- </simpleType>
-
- <complexType name="legacyPlatformType" mixed="false">
- <simpleContent>
- <extension base="maml:legacyPlatformStringType"/>
- </simpleContent>
- </complexType>
-
- <element name="legacyPlatform" type="maml:legacyPlatformType">
- <annotation>
- <documentation>
- This element holds the identifier for a platform used in conditional markup.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <simpleType name="legacyMediumStringType">
- <restriction base="token">
- <enumeration value="CD"/>
- <enumeration value="Online"/>
- <enumeration value="Print"/>
- <enumeration value="VSonly"/>
- <enumeration value="SDKonly"/>
- </restriction>
- </simpleType>
-
- <complexType name="legacyMediumType" mixed="false">
- <simpleContent>
- <extension base="maml:legacyMediumStringType"/>
- </simpleContent>
- </complexType>
-
- <element name="legacyMedium" type="maml:legacyMediumType">
- <annotation>
- <documentation>
- This element holds the identifier for a medium used in conditional markup.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <simpleType name="legacyUserDefinedStringType">
- <restriction base="token">
- <enumeration value="Ent"/>
- <enumeration value="Pro"/>
- <enumeration value="Std"/>
- <enumeration value="Comment"/>
- <enumeration value="Rad"/>
- <enumeration value="Net"/>
- <enumeration value="None"/>
- <enumeration value="Jsharp"/>
- <enumeration value="Vb"/>
- <enumeration value="Cplus"/>
- <enumeration value="Csharp"/>
- <enumeration value="Office"/>
- <enumeration value="VS"/>
- <enumeration value="SqlServer"/>
- <enumeration value="Js7"/>
- <enumeration value="Js7net"/>
- <enumeration value="Vblr7"/>
- <enumeration value="Vblr7net"/>
- </restriction>
- </simpleType>
-
- <complexType name="legacyUserDefinedType" mixed="false">
- <simpleContent>
- <extension base="maml:legacyUserDefinedStringType"/>
- </simpleContent>
- </complexType>
-
- <element name="legacyUserDefined" type="maml:legacyUserDefinedType">
- <annotation>
- <documentation>
- This element holds the identifier for a user-defined condition used in conditional markup.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="platformsType" mixed="false">
- <sequence>
- <element ref="maml:platform" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="platforms" type="maml:platformsType">
- <annotation>
- <documentation>
- This element is a collection of platform elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
-
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + blockDefault="#all" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xml:lang="en" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema describes MAML, the Microsoft Assistance Markup Language. + MAML is intended for software documentation. In particular, it is + intended to accomodate the needs of Microsoft documentation. + </documentation> + <documentation> + The schema is broken into three main areas: end user, developer and + IT Pro. These areas adequaltely categorize Microsoft + documentation. + </documentation> + <documentation> + The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5. + Each backwards-incompatible revision to Maml will require that the date fields be appropriately + incremented in uri of the updated version of the Maml schema. + </documentation> + </annotation> + + <annotation> + <documentation> + This portion of the schema was created by alexstoc in April 2003. + </documentation> + </annotation> + + <include schemaLocation="base.xsd"/> + + <complexType name="programmingLanguageType" mixed="false"> + <simpleContent> + <extension base="maml:devLanguagesType"/> + </simpleContent> + </complexType> + + <element name="programmingLanguage" type="maml:programmingLanguageType"> + <annotation> + <documentation> + This element is used to hold a programming language. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <simpleType name="operatingSystemsStringType"> + <restriction base="token"> + <enumeration value="Win95"/> <!--Windows 95--> + <enumeration value="Win98"/> <!--Windows 98--> + <enumeration value="Win98Se"/> <!--Windows 98 Second Edition--> + <enumeration value="WinMe"/> <!--Windows Millennium Edition--> + <enumeration value="WinNt4Server"/> <!--Windows NT Server 4.0--> + <enumeration value="WinNt4Workstation"/> <!--Windows NT Workstation 4.0--> + <enumeration value="Win2kProfessional"/> <!--Windows 2000 Professional--> + <enumeration value="Win2kServer"/> <!--Windows 2000 Server--> + <enumeration value="Win2kAdvanced"/> <!--Windows 2000 Advanced Server--> + <enumeration value="Win2kDatacenter"/> <!--Windows 2000 Datacenter Server--> + <enumeration value="Win2kServerApplianceKit"/> <!--Windows 2000 with Server Appliance Kit--> + <enumeration value="WinXpHome"/> <!--Windows XP Home Edition--> + <enumeration value="WinXpProfessional"/> <!--Windows XP Professional--> + <enumeration value="WinXpMediaCenter"/> <!--Windows XP Media Center--> + <enumeration value="WinXpTablet"/> <!--Windows XP Tablet PC--> + <enumeration value="WinXpEmbedded"/> <!--Windows XP Embedded--> + <enumeration value="Win2003Server"/> <!--Windows Server 2003--> + <!--<enumeration value="WinCeDotNet"/> --> <!--Windows CE .NET--> + <enumeration value="NETCF"/> <!--Windows CE .NET--> + </restriction> + </simpleType> + + <simpleType name="operatingSystemFamiliesStringType"> + <restriction base="token"> + <enumeration value="Win9xFamily"/> <!--Windows 95, Windows 98, Windows 98 Second Edition, Windows Millennium Edition--> + <enumeration value="WinNt4Family"/> <!--Windows NT Server 4.0, Windows NT Workstation 4.0--> + <enumeration value="Win2kFamily"/> <!--Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server, Windows 2000 Datacenter Server--> + <enumeration value="WinXpFamily"/> <!--Windows XP Home Edition, Windows XP Professional, Windows XP Media Center, Windows XP Tablet PC--> + <!--<enumeration value="WinCeFamily"/> --> <!--Windows CE .NET (and previous versions)--> + </restriction> + </simpleType> + + <simpleType name="platformStringType"> + <union memberTypes="maml:operatingSystemsStringType maml:operatingSystemFamiliesStringType"> + <simpleType> + <restriction base="token"> + <enumeration value="EcmaCli"/> <!--Common Language Infrastructure (CLI) Standard--> + </restriction> + </simpleType> + </union> + </simpleType> + + <complexType name="platformType" mixed="false"> + <simpleContent> + <extension base="maml:platformStringType"/> + </simpleContent> + </complexType> + + <element name="platform" type="maml:platformType"> + <annotation> + <documentation> + This element holds the identifier for a platform (such as an operating system version). + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <simpleType name="legacyPlatformStringType"> + <restriction base="token"> + <enumeration value="Win"/> + <enumeration value="Mac"/> + </restriction> + </simpleType> + + <complexType name="legacyPlatformType" mixed="false"> + <simpleContent> + <extension base="maml:legacyPlatformStringType"/> + </simpleContent> + </complexType> + + <element name="legacyPlatform" type="maml:legacyPlatformType"> + <annotation> + <documentation> + This element holds the identifier for a platform used in conditional markup. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <simpleType name="legacyMediumStringType"> + <restriction base="token"> + <enumeration value="CD"/> + <enumeration value="Online"/> + <enumeration value="Print"/> + <enumeration value="VSonly"/> + <enumeration value="SDKonly"/> + </restriction> + </simpleType> + + <complexType name="legacyMediumType" mixed="false"> + <simpleContent> + <extension base="maml:legacyMediumStringType"/> + </simpleContent> + </complexType> + + <element name="legacyMedium" type="maml:legacyMediumType"> + <annotation> + <documentation> + This element holds the identifier for a medium used in conditional markup. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <simpleType name="legacyUserDefinedStringType"> + <restriction base="token"> + <enumeration value="Ent"/> + <enumeration value="Pro"/> + <enumeration value="Std"/> + <enumeration value="Comment"/> + <enumeration value="Rad"/> + <enumeration value="Net"/> + <enumeration value="None"/> + <enumeration value="Jsharp"/> + <enumeration value="Vb"/> + <enumeration value="Cplus"/> + <enumeration value="Csharp"/> + <enumeration value="Office"/> + <enumeration value="VS"/> + <enumeration value="SqlServer"/> + <enumeration value="Js7"/> + <enumeration value="Js7net"/> + <enumeration value="Vblr7"/> + <enumeration value="Vblr7net"/> + </restriction> + </simpleType> + + <complexType name="legacyUserDefinedType" mixed="false"> + <simpleContent> + <extension base="maml:legacyUserDefinedStringType"/> + </simpleContent> + </complexType> + + <element name="legacyUserDefined" type="maml:legacyUserDefinedType"> + <annotation> + <documentation> + This element holds the identifier for a user-defined condition used in conditional markup. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="platformsType" mixed="false"> + <sequence> + <element ref="maml:platform" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="platforms" type="maml:platformsType"> + <annotation> + <documentation> + This element is a collection of platform elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/block.xsd b/tools/Sandcastle/Schemas/Authoring/block.xsd index ab87271..660c840 100644 --- a/tools/Sandcastle/Schemas/Authoring/block.xsd +++ b/tools/Sandcastle/Schemas/Authoring/block.xsd @@ -1,42 +1,42 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines block inline types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="blockCommon.xsd"/>
- <include schemaLocation="blockSoftware.xsd"/>
-
- <!-- complexType declarations -->
- <complexType name="blockType">
- <annotation>
- <documentation>
- The block complexType describes a simple block-only
- content model. It is intended as the content
- model for structural elements.
- </documentation>
- </annotation>
- <group ref="maml:blockGroup" minOccurs="0" maxOccurs="unbounded"/>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <group name="blockGroup">
- <choice>
- <group ref="maml:blockCommonGroup"/>
- <group ref="maml:blockSoftwareGroup"/>
- </choice>
- </group>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines block inline types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="blockCommon.xsd"/> + <include schemaLocation="blockSoftware.xsd"/> + + <!-- complexType declarations --> + <complexType name="blockType"> + <annotation> + <documentation> + The block complexType describes a simple block-only + content model. It is intended as the content + model for structural elements. + </documentation> + </annotation> + <group ref="maml:blockGroup" minOccurs="0" maxOccurs="unbounded"/> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <group name="blockGroup"> + <choice> + <group ref="maml:blockCommonGroup"/> + <group ref="maml:blockSoftwareGroup"/> + </choice> + </group> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/blockCommon.xsd b/tools/Sandcastle/Schemas/Authoring/blockCommon.xsd index 58caa7d..3e7ed2e 100644 --- a/tools/Sandcastle/Schemas/Authoring/blockCommon.xsd +++ b/tools/Sandcastle/Schemas/Authoring/blockCommon.xsd @@ -1,169 +1,169 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines block inline types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="inline.xsd"/>
-
- <!-- Element declarations -->
- <element name="para" type="maml:inlineType">
- <annotation>
- <documentation>
- The para element describes a paragraph. It is the most basic
- documentation unit.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="title" type="maml:textType">
- <annotation>
- <documentation>
- The title element describes the name of a part of the document.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="secondaryErrorTitle" type="maml:textType">
- <annotation>
- <documentation>
- The title element describes the name of a part of the document.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="nonLocErrorTitle" type="maml:textType">
- <annotation>
- <documentation>
- The title element describes the name of a part of the document.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="alert">
- <annotation>
- <documentation>
- The alert element describes an slim alert structure
- that largely mimicks the block alert structure.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <group ref="maml:structureSimpleGroup" maxOccurs="unbounded"/>
- <attribute name="class" type="maml:alertTypesType">
- <annotation>
- <documentation>
- The class attribute describes the type of alert.
- </documentation>
- </annotation>
- </attribute>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
- </element>
-
- <element name="quote" type="maml:inlineType">
- <annotation>
- <documentation>
- The quote element describes a quotation.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="sharedContentBlock" type="maml:sharedContentType">
- <annotation>
- <documentation>
- This element is replaced at build time by the shared content
- to which it refers using the parameters provided by the user.
- The parameters can be simple text or can include XML markup.
- In most cases the parameter values will not be localizable content.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="introduction" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains an introduction to some
- piece of documentation.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="description" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds a general discussion.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="conclusion" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds a conclusion to some piece
- of documentation.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group declarations -->
- <group name="blockCommonGroup">
- <choice>
- <element ref="maml:para"/>
- <element ref="maml:alert"/>
- <element ref="maml:quote"/>
- <element ref="maml:sharedContentBlock"/>
- </choice>
- </group>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines block inline types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="inline.xsd"/> + + <!-- Element declarations --> + <element name="para" type="maml:inlineType"> + <annotation> + <documentation> + The para element describes a paragraph. It is the most basic + documentation unit. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="title" type="maml:textType"> + <annotation> + <documentation> + The title element describes the name of a part of the document. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="secondaryErrorTitle" type="maml:textType"> + <annotation> + <documentation> + The title element describes the name of a part of the document. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="nonLocErrorTitle" type="maml:textType"> + <annotation> + <documentation> + The title element describes the name of a part of the document. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="alert"> + <annotation> + <documentation> + The alert element describes an slim alert structure + that largely mimicks the block alert structure. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + <complexType> + <group ref="maml:structureSimpleGroup" maxOccurs="unbounded"/> + <attribute name="class" type="maml:alertTypesType"> + <annotation> + <documentation> + The class attribute describes the type of alert. + </documentation> + </annotation> + </attribute> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + </element> + + <element name="quote" type="maml:inlineType"> + <annotation> + <documentation> + The quote element describes a quotation. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="sharedContentBlock" type="maml:sharedContentType"> + <annotation> + <documentation> + This element is replaced at build time by the shared content + to which it refers using the parameters provided by the user. + The parameters can be simple text or can include XML markup. + In most cases the parameter values will not be localizable content. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="introduction" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains an introduction to some + piece of documentation. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="description" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds a general discussion. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="conclusion" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds a conclusion to some piece + of documentation. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group declarations --> + <group name="blockCommonGroup"> + <choice> + <element ref="maml:para"/> + <element ref="maml:alert"/> + <element ref="maml:quote"/> + <element ref="maml:sharedContentBlock"/> + </choice> + </group> </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/blockSoftware.xsd b/tools/Sandcastle/Schemas/Authoring/blockSoftware.xsd index dce4d7b..83faf24 100644 --- a/tools/Sandcastle/Schemas/Authoring/blockSoftware.xsd +++ b/tools/Sandcastle/Schemas/Authoring/blockSoftware.xsd @@ -1,112 +1,112 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines block inline types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="inline.xsd"/>
-
- <!-- Element declarations -->
- <element name="code">
- <annotation>
- <documentation>
- The code element describes a code fragment.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- <complexType mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="legacyItalic" type="maml:textType" />
- <element name="codeFeaturedElement" type="maml:textType" />
- <element ref="maml:placeholder"/>
- <element name="comment" type="string" >
- <annotation>
- <documentation>
- The comment element allows for the description of code/developer
- comments within a code block.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- <attribute name="language" type="maml:devLanguagesType">
- <annotation>
- <documentation>
- The language attribute describes the programming language used in a code sample or
- some other programattic structure.
- </documentation>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <simpleType name="codeReferenceStringType">
- <restriction base="token">
- </restriction>
- </simpleType>
-
- <complexType name="codeReferenceType" mixed="false">
- <simpleContent>
- <extension base="maml:codeReferenceStringType">
- </extension>
- </simpleContent>
- </complexType>
-
- <element name="codeReference" type="maml:codeReferenceType">
- <annotation>
- <documentation>
- This element holds a reference to a block of code.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <group name="codeGroup">
- <choice>
- <element ref="maml:code"/>
- <element ref="maml:codeReference"/>
- </choice>
- </group>
-
- <element name="computerOutput" type="maml:inlineType">
- <annotation>
- <documentation>
- The computerOutput element describes UI or console output.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group declarations -->
- <group name="blockSoftwareGroup">
- <choice>
- <group ref="maml:codeGroup"/>
- <element ref="maml:computerOutput"/>
- </choice>
- </group>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines block inline types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="inline.xsd"/> + + <!-- Element declarations --> + <element name="code"> + <annotation> + <documentation> + The code element describes a code fragment. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + <complexType mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element name="legacyItalic" type="maml:textType" /> + <element name="codeFeaturedElement" type="maml:textType" /> + <element ref="maml:placeholder"/> + <element name="comment" type="string" > + <annotation> + <documentation> + The comment element allows for the description of code/developer + comments within a code block. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + <attribute name="language" type="maml:devLanguagesType"> + <annotation> + <documentation> + The language attribute describes the programming language used in a code sample or + some other programattic structure. + </documentation> + </annotation> + </attribute> + </complexType> + </element> + + <simpleType name="codeReferenceStringType"> + <restriction base="token"> + </restriction> + </simpleType> + + <complexType name="codeReferenceType" mixed="false"> + <simpleContent> + <extension base="maml:codeReferenceStringType"> + </extension> + </simpleContent> + </complexType> + + <element name="codeReference" type="maml:codeReferenceType"> + <annotation> + <documentation> + This element holds a reference to a block of code. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <group name="codeGroup"> + <choice> + <element ref="maml:code"/> + <element ref="maml:codeReference"/> + </choice> + </group> + + <element name="computerOutput" type="maml:inlineType"> + <annotation> + <documentation> + The computerOutput element describes UI or console output. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group declarations --> + <group name="blockSoftwareGroup"> + <choice> + <group ref="maml:codeGroup"/> + <element ref="maml:computerOutput"/> + </choice> + </group> </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/conditionSet.xsd b/tools/Sandcastle/Schemas/Authoring/conditionSet.xsd index 8e963d6..34ad93b 100644 --- a/tools/Sandcastle/Schemas/Authoring/conditionSet.xsd +++ b/tools/Sandcastle/Schemas/Authoring/conditionSet.xsd @@ -1,63 +1,63 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema
- xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- blockDefault="#all"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- xml:lang="en"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema describes MAML, the Microsoft Assistance Markup Language.
- MAML is intended for software documentation. In particular, it is
- intended to accomodate the needs of Microsoft documentation.
- </documentation>
- <documentation>
- The schema is broken into three main areas: end user, developer and
- IT Pro. These areas adequaltely categorize Microsoft
- documentation.
- </documentation>
- <documentation>
- The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
- Each backwards-incompatible revision to Maml will require that the date fields be appropriately
- incremented in uri of the updated version of the Maml schema.
- </documentation>
- </annotation>
-
- <include schemaLocation="baseConditional.xsd"/>
-
- <!-- *************************************************************************** -->
-
- <!--
- In a single condition set, values from the same axis are combined with OR
- and values from different axes are combined with AND. Nesting condition sets
- is equivalent to combining them with AND.
- -->
- <complexType name="conditionsType" mixed="false">
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="maml:programmingLanguage"/>
- <element ref="maml:legacyPlatform"/>
- <element ref="maml:legacyMedium"/>
- <element ref="maml:legacyUserDefined"/>
- </choice>
- </complexType>
-
-
- <element name="conditions" type="maml:conditionsType">
- <annotation>
- <documentation>
- This element is used to hold a set of conditions.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + blockDefault="#all" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xml:lang="en" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema describes MAML, the Microsoft Assistance Markup Language. + MAML is intended for software documentation. In particular, it is + intended to accomodate the needs of Microsoft documentation. + </documentation> + <documentation> + The schema is broken into three main areas: end user, developer and + IT Pro. These areas adequaltely categorize Microsoft + documentation. + </documentation> + <documentation> + The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5. + Each backwards-incompatible revision to Maml will require that the date fields be appropriately + incremented in uri of the updated version of the Maml schema. + </documentation> + </annotation> + + <include schemaLocation="baseConditional.xsd"/> + + <!-- *************************************************************************** --> + + <!-- + In a single condition set, values from the same axis are combined with OR + and values from different axes are combined with AND. Nesting condition sets + is equivalent to combining them with AND. + --> + <complexType name="conditionsType" mixed="false"> + <choice minOccurs="1" maxOccurs="unbounded"> + <element ref="maml:programmingLanguage"/> + <element ref="maml:legacyPlatform"/> + <element ref="maml:legacyMedium"/> + <element ref="maml:legacyUserDefined"/> + </choice> + </complexType> + + + <element name="conditions" type="maml:conditionsType"> + <annotation> + <documentation> + This element is used to hold a set of conditions. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/developer.xsd b/tools/Sandcastle/Schemas/Authoring/developer.xsd index 039fbcb..c3c73f9 100644 --- a/tools/Sandcastle/Schemas/Authoring/developer.xsd +++ b/tools/Sandcastle/Schemas/Authoring/developer.xsd @@ -1,585 +1,585 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" blockDefault="#all" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="en">
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema describes MAML, the Microsoft Assistance Markup Language.
- MAML is intended for software documentation. In particular, it is
- intended to accomodate the needs of Microsoft documentation.
- </documentation>
- <documentation>
- The schema is broken into three main areas: end user, developer and
- IT Pro. These areas adequaltely categorize Microsoft
- documentation.
- </documentation>
- <documentation>
- The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
- Each backwards-incompatible revision to Maml will require that the date fields be appropriately
- incremented in uri of the updated version of the Maml schema.
- </documentation>
- </annotation>
- <include schemaLocation="developerStructure.xsd" />
- <include schemaLocation="developerReference.xsd" />
- <include schemaLocation="hierarchy.xsd" />
- <include schemaLocation="glossary.xsd" />
- <!--<include schemaLocation="conditionset.xsd" />-->
-
- <!-- ************ Reference Content Document Type ************ -->
- <complexType name="codeEntityDocumentType" mixed="false">
- <sequence>
- <element ref="maml:assembly" />
- <element ref="maml:codeEntities" />
- </sequence>
- </complexType>
- <element name="codeEntityDocument" type="maml:codeEntityDocumentType">
- <annotation>
- <documentation>
- This is the root element of a reference document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ How To Content Document Type ************ -->
- <complexType name="developerHowToDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Optional procedures followed by optional code example
- but must have at least one procedure or code example -->
- <choice>
- <sequence>
- <!-- One or more procedures -->
- <choice minOccurs="1" maxOccurs="unbounded" >
- <element ref="maml:procedure"/>
- <element name="section" type="maml:procedureSectionType"/>
- </choice>
- <!-- An optional code example -->
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <element ref="maml:codeExample" maxOccurs="unbounded"/>
- </choice>
- <element ref="maml:buildInstructions" minOccurs="0"/>
- <element ref="maml:robustProgramming" minOccurs="0"/>
- <element ref="maml:security" minOccurs="0"/>
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerHowToDocument" type="maml:developerHowToDocumentType">
- <annotation>
- <documentation>
- This is the root element of a 'how to' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Conceptual Document Type ************ -->
- <complexType name="developerConceptualDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- One or more sections -->
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerConceptualDocument" type="maml:developerConceptualDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'conceptual' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Walkthrough Document Type ************ -->
- <complexType name="developerWalkthroughDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Optional Prerequisites section -->
- <element name="prerequisites" type="maml:namedSectionType" minOccurs="0" />
- <!-- One procedures and or section with procedure
- but must have at least one procedure or section with procedure -->
- <choice minOccurs="1" maxOccurs="unbounded" >
- <element ref="maml:procedure"/>
- <element ref="maml:section"/>
- </choice>
- <!-- Optional Next Steps section -->
- <element name="nextSteps" type="maml:namedSectionType" minOccurs="0" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerWalkthroughDocument" type="maml:developerWalkthroughDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'walkthrough' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Orientation Document Type ************ -->
- <complexType name="developerOrientationDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Optional "In This Section" section -->
- <element name="inThisSection" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Reference section -->
- <element name="reference" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional "Related Sections" section -->
- <element name="relatedSections" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional External Resources section -->
- <element name="externalResources" type="maml:externalResourcesType" minOccurs="0" />
- <!-- Optional section for related items -->
- <element ref="maml:relatedTopics" minOccurs="0" />
- </sequence>
- </complexType>
- <element name="developerOrientationDocument" type="maml:developerOrientationDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'orientation' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Sample Document Type ************ -->
- <complexType name="developerSampleDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Zero or more procedures -->
- <element ref="maml:procedure" minOccurs="0" maxOccurs="unbounded" />
- <!-- Optional Requirements section -->
- <element name="requirements" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Demonstrates section -->
- <element name="demonstrates" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional code example -->
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerSampleDocument" type="maml:developerSampleDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'sample' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Troubleshooting Document Type ************ -->
- <complexType name="developerTroubleshootingDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Zero or more sections -->
- <!-- Note: sections can contain procedures -->
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerTroubleshootingDocument" type="maml:developerTroubleshootingDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'troubleshooting' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Reference Without Syntax Document Type ************ -->
- <complexType name="developerReferenceWithoutSyntaxDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <choice maxOccurs="unbounded" >
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- <!-- Optional Remarks section -->
- <element name="languageReferenceRemarks" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Code Example section -->
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- </choice>
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerReferenceWithoutSyntaxDocument" type="maml:developerReferenceWithoutSyntaxDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'general reference' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Reference With Syntax Document Type ************ -->
- <complexType name="developerReferenceWithSyntaxDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Always a Syntax section -->
- <element ref="maml:syntaxSection" maxOccurs="unbounded" />
- <choice maxOccurs="unbounded" >
- <!-- Optional Parameters section -->
- <element name="parameters" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Return Value/Property Value section -->
- <element name="returnValue" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Exceptions section -->
- <element name="exceptions" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Remarks section -->
- <element name="languageReferenceRemarks" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Code Example section -->
- <element ref="maml:codeExample" minOccurs="0" />
- <!-- Optional .NET Framework Equivalent section -->
- <element name="dotNetFrameworkEquivalent" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional Requirements section -->
- <element name="requirements" type="maml:namedSectionType" minOccurs="0" />
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- </choice>
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerReferenceWithSyntaxDocument" type="maml:developerReferenceWithSyntaxDocumentType">
- <annotation>
- <documentation>
- This element is the root of a document that contains reference and syntax.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Error Message Document Type ************ -->
- <complexType name="developerErrorMessageDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Non Localizable Error Title -->
- <element ref="maml:nonLocErrorTitle" minOccurs="0" />
- <!-- Optional Localizable Secondary Error Title -->
- <element ref="maml:secondaryErrorTitle" minOccurs="0" />
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Zero or more procedures -->
- <element ref="maml:procedure" minOccurs="0" maxOccurs="unbounded" />
- <!-- Optional code example -->
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" minOccurs="0" />
- </sequence>
- </complexType>
- <element name="developerErrorMessageDocument" type="maml:developerErrorMessageDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'error message' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ UI Reference Document Type ************ -->
- <complexType name="developerUIReferenceDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Always a Task List section -->
- <element name="taskList" type="maml:namedSectionType" minOccurs="0" />
- <choice maxOccurs="unbounded" >
- <!-- Optional sections -->
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" />
- <!-- Always a UI Element List section -->
- <element name="uiElementList" type="maml:namedSectionType" />
- </choice>
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerUIReferenceDocument" type="maml:developerUIReferenceDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'UI reference' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ SDK Technology Overview Orientation Document Type ************ -->
- <complexType name="developerSDKTechnologyOverviewOrientationDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- One "In This Section" section -->
- <element name="inThisSection" type="maml:namedSectionType" />
- <!-- Optional Reference section -->
- <element name="reference" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional "Related Sections" section -->
- <element name="relatedSections" type="maml:namedSectionType" minOccurs="0" />
- <!-- Optional External Resources section -->
- <element name="externalResources" type="maml:externalResourcesType" minOccurs="0" />
- </sequence>
- </complexType>
- <element name="developerSDKTechnologyOverviewOrientationDocument" type="maml:developerSDKTechnologyOverviewOrientationDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'orientation' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <!-- ************ SDK Technology Overview Technology Summary Document Type ************ -->
- <complexType name="developerSDKTechnologyOverviewTechnologySummaryDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Always a Keywords section -->
- <element name="keywords" type="maml:namedSectionType" />
- <!-- Always a Namespaces section -->
- <element name="namespaces" type="maml:namedSectionType" />
- <!-- Optional Related Technologies section -->
- <element name="relatedTechnologies" type="maml:namedSectionType" minOccurs="0" />
- <!-- Always a Background section -->
- <element name="background" type="maml:namedSectionType" />
- <!-- Always an Implementing (Technology Name) Classes section -->
- <element name="implementingTechnologyNameClasses" type="maml:sectionType" />
- <!-- Always a (Technology Name) Classes at a Glance section -->
- <element name="technologyNameClassesAtAGlance" type="maml:sectionType" />
- <!-- Optional What's New section -->
- <element name="whatsNew" type="maml:namedSectionType" minOccurs="0" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerSDKTechnologyOverviewTechnologySummaryDocument" type="maml:developerSDKTechnologyOverviewTechnologySummaryDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'technology summary' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ SDK Technology Overview Architecture Document Type ************ -->
- <element name="developerSDKTechnologyOverviewArchitectureDocument" type="maml:developerConceptualDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'architecture' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ SDK Technology Overview Scenarios Document Type ************ -->
- <element name="developerSDKTechnologyOverviewScenariosDocument" type="maml:developerConceptualDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'scenarios' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ SDK Technology Overview Code Directory Document Type ************ -->
- <complexType name="developerSDKTechnologyOverviewCodeDirectoryDocumentType" mixed="false">
- <sequence>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <element ref="maml:summary" minOccurs="0" />
- <!-- Always an introduction -->
- <element ref="maml:introduction" />
- <!-- Always a Code List section -->
- <element name="codeList" type="maml:namedSectionType" />
- <!-- Always a section for related items -->
- <element ref="maml:relatedTopics" />
- </sequence>
- </complexType>
- <element name="developerSDKTechnologyOverviewCodeDirectoryDocument" type="maml:developerSDKTechnologyOverviewCodeDirectoryDocumentType">
- <annotation>
- <documentation>
- This element is the root of an 'UI reference' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Whitepaper Document Type ************ -->
- <complexType name="developerWhitePaperDocumentType" mixed="false">
- <sequence>
- <element ref="maml:summary" minOccurs="0"/>
- <element name="byline" type="maml:singleParagraphSimpleContentType"/>
- <element name="date" type="maml:singleParagraphSimpleContentType"/>
- <element name="summarySection" type="maml:namedSectionType"/>
- <element name="downloadCenterLink" type="maml:namedSectionType" minOccurs="0"/>
- <element name="appliesTo" type="maml:namedSectionType" minOccurs="0"/>
- <element name="contents" type="maml:namedSectionType" minOccurs="0"/>
- <element ref="maml:introduction"/>
- <element ref="maml:section" minOccurs="0" maxOccurs="unbounded"/>
- <element ref="maml:conclusion"/>
- <element ref="maml:relatedTopics" minOccurs="0"/>
- <element name="additionalInformation" type="maml:namedSectionType" minOccurs="0"/>
- <element name="authorBio" type="maml:namedSectionType" minOccurs="0"/>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <!-- Optional "Download Center/Sample Manager link" section -->
- <!-- Optional "Applies To" section -->
- <!-- Always an introduction -->
- <!-- Always a body section -->
- <!-- Optional Code Example section -->
- <!-- Always a conclusion -->
- <!-- Optional section for related items -->
- </sequence>
- </complexType>
- <element name="developerWhitePaperDocument" type="maml:developerWhitePaperDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'sample' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ Glossary Document Type ************ -->
- <complexType name="developerGlossaryDocumentType" mixed="false">
- <sequence>
- <element ref="maml:glossary" />
- </sequence>
- </complexType>
- <element name="developerGlossaryDocument" type="maml:developerGlossaryDocumentType">
- <annotation>
- <documentation>
- This element is the root of a 'glossary' document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ XML Reference Document Type ************ -->
- <complexType name="developerXmlReferenceDocumentType" mixed="false">
- <sequence>
- <element ref="maml:summary" minOccurs="0"/>
- <element ref="maml:introduction"/>
- <element ref="maml:schemaHierarchy" minOccurs="0"/>
- <element ref="maml:syntaxSection"/>
- <element name="type" type="maml:singleParagraphSimpleContentType" minOccurs="0"/>
- <element ref="maml:attributesandElements"/>
- <element name="textValue" type="maml:namedSectionType" minOccurs="0"/>
- <element name="remarks" type="maml:namedSectionType" minOccurs="0"/>
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- <element ref="maml:elementInformation" minOccurs="0"/>
- <element ref="maml:relatedTopics"/>
- <!-- Always a title - but titles are stored outside the file -->
- <!-- Optional Search Results Summary -->
- <!-- Always an introduction -->
- <!-- Always a section for related items -->
- </sequence>
- </complexType>
- <element name="developerXmlReference" type="maml:developerXmlReferenceDocumentType">
- <annotation>
- <documentation>
- This element is the root of a document that contains reference and syntax.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" blockDefault="#all" elementFormDefault="qualified" attributeFormDefault="unqualified" xml:lang="en"> + <!-- Schema documentation --> + <annotation> + <documentation> + This schema describes MAML, the Microsoft Assistance Markup Language. + MAML is intended for software documentation. In particular, it is + intended to accomodate the needs of Microsoft documentation. + </documentation> + <documentation> + The schema is broken into three main areas: end user, developer and + IT Pro. These areas adequaltely categorize Microsoft + documentation. + </documentation> + <documentation> + The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5. + Each backwards-incompatible revision to Maml will require that the date fields be appropriately + incremented in uri of the updated version of the Maml schema. + </documentation> + </annotation> + <include schemaLocation="developerStructure.xsd" /> + <include schemaLocation="developerReference.xsd" /> + <include schemaLocation="hierarchy.xsd" /> + <include schemaLocation="glossary.xsd" /> + <!--<include schemaLocation="conditionset.xsd" />--> + + <!-- ************ Reference Content Document Type ************ --> + <complexType name="codeEntityDocumentType" mixed="false"> + <sequence> + <element ref="maml:assembly" /> + <element ref="maml:codeEntities" /> + </sequence> + </complexType> + <element name="codeEntityDocument" type="maml:codeEntityDocumentType"> + <annotation> + <documentation> + This is the root element of a reference document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ How To Content Document Type ************ --> + <complexType name="developerHowToDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Optional procedures followed by optional code example + but must have at least one procedure or code example --> + <choice> + <sequence> + <!-- One or more procedures --> + <choice minOccurs="1" maxOccurs="unbounded" > + <element ref="maml:procedure"/> + <element name="section" type="maml:procedureSectionType"/> + </choice> + <!-- An optional code example --> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <element ref="maml:codeExample" maxOccurs="unbounded"/> + </choice> + <element ref="maml:buildInstructions" minOccurs="0"/> + <element ref="maml:robustProgramming" minOccurs="0"/> + <element ref="maml:security" minOccurs="0"/> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerHowToDocument" type="maml:developerHowToDocumentType"> + <annotation> + <documentation> + This is the root element of a 'how to' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Conceptual Document Type ************ --> + <complexType name="developerConceptualDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- One or more sections --> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerConceptualDocument" type="maml:developerConceptualDocumentType"> + <annotation> + <documentation> + This element is the root of a 'conceptual' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Walkthrough Document Type ************ --> + <complexType name="developerWalkthroughDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Optional Prerequisites section --> + <element name="prerequisites" type="maml:namedSectionType" minOccurs="0" /> + <!-- One procedures and or section with procedure + but must have at least one procedure or section with procedure --> + <choice minOccurs="1" maxOccurs="unbounded" > + <element ref="maml:procedure"/> + <element ref="maml:section"/> + </choice> + <!-- Optional Next Steps section --> + <element name="nextSteps" type="maml:namedSectionType" minOccurs="0" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerWalkthroughDocument" type="maml:developerWalkthroughDocumentType"> + <annotation> + <documentation> + This element is the root of a 'walkthrough' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Orientation Document Type ************ --> + <complexType name="developerOrientationDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Optional "In This Section" section --> + <element name="inThisSection" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Reference section --> + <element name="reference" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional "Related Sections" section --> + <element name="relatedSections" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional External Resources section --> + <element name="externalResources" type="maml:externalResourcesType" minOccurs="0" /> + <!-- Optional section for related items --> + <element ref="maml:relatedTopics" minOccurs="0" /> + </sequence> + </complexType> + <element name="developerOrientationDocument" type="maml:developerOrientationDocumentType"> + <annotation> + <documentation> + This element is the root of an 'orientation' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Sample Document Type ************ --> + <complexType name="developerSampleDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Zero or more procedures --> + <element ref="maml:procedure" minOccurs="0" maxOccurs="unbounded" /> + <!-- Optional Requirements section --> + <element name="requirements" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Demonstrates section --> + <element name="demonstrates" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional code example --> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerSampleDocument" type="maml:developerSampleDocumentType"> + <annotation> + <documentation> + This element is the root of a 'sample' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Troubleshooting Document Type ************ --> + <complexType name="developerTroubleshootingDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Zero or more sections --> + <!-- Note: sections can contain procedures --> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerTroubleshootingDocument" type="maml:developerTroubleshootingDocumentType"> + <annotation> + <documentation> + This element is the root of a 'troubleshooting' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Reference Without Syntax Document Type ************ --> + <complexType name="developerReferenceWithoutSyntaxDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <choice maxOccurs="unbounded" > + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + <!-- Optional Remarks section --> + <element name="languageReferenceRemarks" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Code Example section --> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + </choice> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerReferenceWithoutSyntaxDocument" type="maml:developerReferenceWithoutSyntaxDocumentType"> + <annotation> + <documentation> + This element is the root of a 'general reference' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Reference With Syntax Document Type ************ --> + <complexType name="developerReferenceWithSyntaxDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Always a Syntax section --> + <element ref="maml:syntaxSection" maxOccurs="unbounded" /> + <choice maxOccurs="unbounded" > + <!-- Optional Parameters section --> + <element name="parameters" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Return Value/Property Value section --> + <element name="returnValue" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Exceptions section --> + <element name="exceptions" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Remarks section --> + <element name="languageReferenceRemarks" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Code Example section --> + <element ref="maml:codeExample" minOccurs="0" /> + <!-- Optional .NET Framework Equivalent section --> + <element name="dotNetFrameworkEquivalent" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional Requirements section --> + <element name="requirements" type="maml:namedSectionType" minOccurs="0" /> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + </choice> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerReferenceWithSyntaxDocument" type="maml:developerReferenceWithSyntaxDocumentType"> + <annotation> + <documentation> + This element is the root of a document that contains reference and syntax. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Error Message Document Type ************ --> + <complexType name="developerErrorMessageDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Non Localizable Error Title --> + <element ref="maml:nonLocErrorTitle" minOccurs="0" /> + <!-- Optional Localizable Secondary Error Title --> + <element ref="maml:secondaryErrorTitle" minOccurs="0" /> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Zero or more procedures --> + <element ref="maml:procedure" minOccurs="0" maxOccurs="unbounded" /> + <!-- Optional code example --> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" minOccurs="0" /> + </sequence> + </complexType> + <element name="developerErrorMessageDocument" type="maml:developerErrorMessageDocumentType"> + <annotation> + <documentation> + This element is the root of an 'error message' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ UI Reference Document Type ************ --> + <complexType name="developerUIReferenceDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Always a Task List section --> + <element name="taskList" type="maml:namedSectionType" minOccurs="0" /> + <choice maxOccurs="unbounded" > + <!-- Optional sections --> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded" /> + <!-- Always a UI Element List section --> + <element name="uiElementList" type="maml:namedSectionType" /> + </choice> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerUIReferenceDocument" type="maml:developerUIReferenceDocumentType"> + <annotation> + <documentation> + This element is the root of an 'UI reference' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ SDK Technology Overview Orientation Document Type ************ --> + <complexType name="developerSDKTechnologyOverviewOrientationDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- One "In This Section" section --> + <element name="inThisSection" type="maml:namedSectionType" /> + <!-- Optional Reference section --> + <element name="reference" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional "Related Sections" section --> + <element name="relatedSections" type="maml:namedSectionType" minOccurs="0" /> + <!-- Optional External Resources section --> + <element name="externalResources" type="maml:externalResourcesType" minOccurs="0" /> + </sequence> + </complexType> + <element name="developerSDKTechnologyOverviewOrientationDocument" type="maml:developerSDKTechnologyOverviewOrientationDocumentType"> + <annotation> + <documentation> + This element is the root of an 'orientation' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <!-- ************ SDK Technology Overview Technology Summary Document Type ************ --> + <complexType name="developerSDKTechnologyOverviewTechnologySummaryDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Always a Keywords section --> + <element name="keywords" type="maml:namedSectionType" /> + <!-- Always a Namespaces section --> + <element name="namespaces" type="maml:namedSectionType" /> + <!-- Optional Related Technologies section --> + <element name="relatedTechnologies" type="maml:namedSectionType" minOccurs="0" /> + <!-- Always a Background section --> + <element name="background" type="maml:namedSectionType" /> + <!-- Always an Implementing (Technology Name) Classes section --> + <element name="implementingTechnologyNameClasses" type="maml:sectionType" /> + <!-- Always a (Technology Name) Classes at a Glance section --> + <element name="technologyNameClassesAtAGlance" type="maml:sectionType" /> + <!-- Optional What's New section --> + <element name="whatsNew" type="maml:namedSectionType" minOccurs="0" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerSDKTechnologyOverviewTechnologySummaryDocument" type="maml:developerSDKTechnologyOverviewTechnologySummaryDocumentType"> + <annotation> + <documentation> + This element is the root of a 'technology summary' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ SDK Technology Overview Architecture Document Type ************ --> + <element name="developerSDKTechnologyOverviewArchitectureDocument" type="maml:developerConceptualDocumentType"> + <annotation> + <documentation> + This element is the root of an 'architecture' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ SDK Technology Overview Scenarios Document Type ************ --> + <element name="developerSDKTechnologyOverviewScenariosDocument" type="maml:developerConceptualDocumentType"> + <annotation> + <documentation> + This element is the root of an 'scenarios' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ SDK Technology Overview Code Directory Document Type ************ --> + <complexType name="developerSDKTechnologyOverviewCodeDirectoryDocumentType" mixed="false"> + <sequence> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <element ref="maml:summary" minOccurs="0" /> + <!-- Always an introduction --> + <element ref="maml:introduction" /> + <!-- Always a Code List section --> + <element name="codeList" type="maml:namedSectionType" /> + <!-- Always a section for related items --> + <element ref="maml:relatedTopics" /> + </sequence> + </complexType> + <element name="developerSDKTechnologyOverviewCodeDirectoryDocument" type="maml:developerSDKTechnologyOverviewCodeDirectoryDocumentType"> + <annotation> + <documentation> + This element is the root of an 'UI reference' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Whitepaper Document Type ************ --> + <complexType name="developerWhitePaperDocumentType" mixed="false"> + <sequence> + <element ref="maml:summary" minOccurs="0"/> + <element name="byline" type="maml:singleParagraphSimpleContentType"/> + <element name="date" type="maml:singleParagraphSimpleContentType"/> + <element name="summarySection" type="maml:namedSectionType"/> + <element name="downloadCenterLink" type="maml:namedSectionType" minOccurs="0"/> + <element name="appliesTo" type="maml:namedSectionType" minOccurs="0"/> + <element name="contents" type="maml:namedSectionType" minOccurs="0"/> + <element ref="maml:introduction"/> + <element ref="maml:section" minOccurs="0" maxOccurs="unbounded"/> + <element ref="maml:conclusion"/> + <element ref="maml:relatedTopics" minOccurs="0"/> + <element name="additionalInformation" type="maml:namedSectionType" minOccurs="0"/> + <element name="authorBio" type="maml:namedSectionType" minOccurs="0"/> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <!-- Optional "Download Center/Sample Manager link" section --> + <!-- Optional "Applies To" section --> + <!-- Always an introduction --> + <!-- Always a body section --> + <!-- Optional Code Example section --> + <!-- Always a conclusion --> + <!-- Optional section for related items --> + </sequence> + </complexType> + <element name="developerWhitePaperDocument" type="maml:developerWhitePaperDocumentType"> + <annotation> + <documentation> + This element is the root of a 'sample' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ Glossary Document Type ************ --> + <complexType name="developerGlossaryDocumentType" mixed="false"> + <sequence> + <element ref="maml:glossary" /> + </sequence> + </complexType> + <element name="developerGlossaryDocument" type="maml:developerGlossaryDocumentType"> + <annotation> + <documentation> + This element is the root of a 'glossary' document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ XML Reference Document Type ************ --> + <complexType name="developerXmlReferenceDocumentType" mixed="false"> + <sequence> + <element ref="maml:summary" minOccurs="0"/> + <element ref="maml:introduction"/> + <element ref="maml:schemaHierarchy" minOccurs="0"/> + <element ref="maml:syntaxSection"/> + <element name="type" type="maml:singleParagraphSimpleContentType" minOccurs="0"/> + <element ref="maml:attributesandElements"/> + <element name="textValue" type="maml:namedSectionType" minOccurs="0"/> + <element name="remarks" type="maml:namedSectionType" minOccurs="0"/> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + <element ref="maml:elementInformation" minOccurs="0"/> + <element ref="maml:relatedTopics"/> + <!-- Always a title - but titles are stored outside the file --> + <!-- Optional Search Results Summary --> + <!-- Always an introduction --> + <!-- Always a section for related items --> + </sequence> + </complexType> + <element name="developerXmlReference" type="maml:developerXmlReferenceDocumentType"> + <annotation> + <documentation> + This element is the root of a document that contains reference and syntax. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/developerReference.xsd b/tools/Sandcastle/Schemas/Authoring/developerReference.xsd index 4787cb7..6036b00 100644 --- a/tools/Sandcastle/Schemas/Authoring/developerReference.xsd +++ b/tools/Sandcastle/Schemas/Authoring/developerReference.xsd @@ -1,504 +1,504 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema
- xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- blockDefault="#all"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- xml:lang="en"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema describes MAML, the Microsoft Assistance Markup Language.
- MAML is intended for software documentation. In particular, it is
- intended to accomodate the needs of Microsoft documentation.
- </documentation>
- <documentation>
- The schema is broken into three main areas: end user, developer and
- IT Pro. These areas adequaltely categorize Microsoft
- documentation.
- </documentation>
- <documentation>
- The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
- Each backwards-incompatible revision to Maml will require that the date fields be appropriately
- incremented in uri of the updated version of the Maml schema.
- </documentation>
- </annotation>
-
- <annotation>
- <documentation>
- This portion of the schema was created by alexstoc in April 2003.
- </documentation>
- </annotation>
-
- <include schemaLocation="baseConditional.xsd"/>
- <include schemaLocation="inline.xsd"/>
- <include schemaLocation="block.xsd"/>
- <include schemaLocation="structure.xsd"/>
- <include schemaLocation="developerStructure.xsd"/>
-
-
- <!-- ************ Start of assembly ************ -->
-
- <element name="assemblyName" type="token">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="assemblyVersion" type="token">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="assemblyCulture" type="token">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="assemblyPublicKey" type="token">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="assemblyHash" type="token">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="assemblyType" mixed="false">
- <sequence>
- <element ref="maml:assemblyName"/>
- <element ref="maml:assemblyVersion" minOccurs="0"/>
- <element ref="maml:assemblyCulture" minOccurs="0"/>
- <element ref="maml:assemblyPublicKey" minOccurs="0"/>
- <element ref="maml:assemblyHash" minOccurs="0"/>
- </sequence>
- </complexType>
-
- <element name="assembly" type="maml:assemblyType">
- <annotation>
- <documentation>
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- ************ End of assembly ************ -->
-
- <element name="internalOnly" type="maml:emptyType">
- <annotation>
- <documentation>
- This element is used to mark code entities that are only
- intended for internal use and are not intended to be used
- by external developers. This element should be used rarely.
- The desire to use this element may indicate a design problem
- with the library that should be fixed by the internal developers
- before the product is released.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="useBase" type="maml:emptyType">
- <annotation>
- <documentation>
- This element is used to mark code entities that should use the documentation
- of its base.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="returnValue" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains a description of the return value of a function or property.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="threadSafety" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains a discussion of the thread safety characteristics of the current item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="notesForImplementers" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains information that is only relevant to implementers of the current item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="notesForCallers" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains information that is only relevant to callers of the current item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="notesForInheritors" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element contains information that is only relevant to inheritors of the current item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="codeReferenceDescriptionType" mixed="false">
- <sequence>
- <element ref="maml:codeEntityReference"/>
- <element ref="maml:content"/>
- </sequence>
- </complexType>
-
- <complexType name="parameterReferenceDescriptionType" mixed="false">
- <sequence>
- <element ref="maml:parameterReference"/>
- <element ref="maml:content"/>
- </sequence>
- </complexType>
-
- <element name="clsCompliantAlternative" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- This is a reference to another code entity that performs a
- function similar to that of the current code entity. Unlike the
- current entity, the target of the reference is CLS-compliant.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="equivalentCodeEntity" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- This is a reference to another code entity that performs
- the same function as the current code entity. It is typically used
- for mapping from an operator to the equivalent function (such as
- from op_Equality to Equals).
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="obsoleteCodeEntity" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- This is used to indicate that a code entity is obsolete.It may contain
- a reference to another code entity that users are encouraged to use instead of the
- current code entity.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="unmanagedCodeEntity" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- It may contain a reference to a unmanaged code entity.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="genericParameter" type="maml:parameterReferenceDescriptionType">
- <annotation>
- <documentation>
- This element contains a description of a generic or template parameter.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="genericParametersType" mixed="false">
- <sequence>
- <element ref="maml:genericParameter" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="genericParameters" type="maml:genericParametersType">
- <annotation>
- <documentation>
- This element is a collection of genericParameter elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="parameter" type="maml:parameterReferenceDescriptionType">
- <annotation>
- <documentation>
- This element contains a description of a functional parameter.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="parametersType" mixed="false">
- <sequence>
- <element ref="maml:parameter" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="parameters" type="maml:parametersType">
- <annotation>
- <documentation>
- This element is a collection of parameter elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="exception" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- This element contains a description of one type of exception.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="exceptionsType" mixed="false">
- <sequence>
- <element ref="maml:exception" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="exceptions" type="maml:exceptionsType">
- <annotation>
- <documentation>
- This element is a collection of exception elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="permission" type="maml:codeReferenceDescriptionType">
- <annotation>
- <documentation>
- This element holds a discussion of a particular permission required
- to use the current code element.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="permissionsType" mixed="false">
- <sequence>
- <element ref="maml:permission" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="permissions" type="maml:permissionsType">
- <annotation>
- <documentation>
- This element is a collection of permission elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="platformNoteType" mixed="false">
- <sequence>
- <element ref="maml:platforms"/>
- <element ref="maml:content"/>
- </sequence>
- </complexType>
-
- <element name="platformNote" type="maml:platformNoteType">
- <annotation>
- <documentation>
- This element contains a collection of platforms
- along with a discussion of the behavior of the current code entity on those platforms.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="platformNotesType" mixed="false">
- <sequence>
- <element ref="maml:platformNote" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="platformNotes" type="maml:platformNotesType">
- <annotation>
- <documentation>
- This element is a collection of platformNote elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="codeEntityType" mixed="false">
- <sequence>
- <element ref="maml:codeEntityReference"/>
- <choice maxOccurs="unbounded">
- <element ref="maml:internalOnly" minOccurs="0"/>
- <element ref="maml:useBase" minOccurs="0"/>
- <element ref="maml:clsCompliantAlternative" minOccurs="0"/>
- <element ref="maml:equivalentCodeEntity" minOccurs="0"/>
- <element ref="maml:obsoleteCodeEntity" minOccurs="0"/>
- <element ref="maml:unmanagedCodeEntity" minOccurs="0"/>
- </choice>
- <element ref="maml:summary" minOccurs="0"/>
- <element ref="maml:genericParameters" minOccurs="0"/>
- <element ref="maml:parameters" minOccurs="0"/>
- <element ref="maml:returnValue" minOccurs="0"/>
- <element ref="maml:exceptions" minOccurs="0"/>
- <element ref="maml:threadSafety" minOccurs="0"/>
- <element ref="maml:remarks" minOccurs="0"/>
- <element ref="maml:notesForImplementers" minOccurs="0"/>
- <element ref="maml:notesForCallers" minOccurs="0"/>
- <element ref="maml:notesForInheritors" minOccurs="0"/>
- <element ref="maml:platformNotes" minOccurs="0"/>
- <element ref="maml:codeExamples" minOccurs="0" />
- <element ref="maml:permissions" minOccurs="0"/>
- <element ref="maml:relatedTopics" minOccurs="0"/>
- </sequence>
- </complexType>
-
- <element name="codeEntity" type="maml:codeEntityType">
- <annotation>
- <documentation>
- This element contains the documentation for a single code entity.
- A code entity is a type, member, or overload-set.
- The code entity is identified by the one and only codeEntityReference element
- that is a child of this element.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="codeEntitiesType" mixed="false">
- <sequence>
- <element ref="maml:codeEntity" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="codeEntities" type="maml:codeEntitiesType">
- <annotation>
- <documentation>
- This element is a simple collection of codeEntity elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + blockDefault="#all" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xml:lang="en" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema describes MAML, the Microsoft Assistance Markup Language. + MAML is intended for software documentation. In particular, it is + intended to accomodate the needs of Microsoft documentation. + </documentation> + <documentation> + The schema is broken into three main areas: end user, developer and + IT Pro. These areas adequaltely categorize Microsoft + documentation. + </documentation> + <documentation> + The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5. + Each backwards-incompatible revision to Maml will require that the date fields be appropriately + incremented in uri of the updated version of the Maml schema. + </documentation> + </annotation> + + <annotation> + <documentation> + This portion of the schema was created by alexstoc in April 2003. + </documentation> + </annotation> + + <include schemaLocation="baseConditional.xsd"/> + <include schemaLocation="inline.xsd"/> + <include schemaLocation="block.xsd"/> + <include schemaLocation="structure.xsd"/> + <include schemaLocation="developerStructure.xsd"/> + + + <!-- ************ Start of assembly ************ --> + + <element name="assemblyName" type="token"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="assemblyVersion" type="token"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="assemblyCulture" type="token"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="assemblyPublicKey" type="token"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="assemblyHash" type="token"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="assemblyType" mixed="false"> + <sequence> + <element ref="maml:assemblyName"/> + <element ref="maml:assemblyVersion" minOccurs="0"/> + <element ref="maml:assemblyCulture" minOccurs="0"/> + <element ref="maml:assemblyPublicKey" minOccurs="0"/> + <element ref="maml:assemblyHash" minOccurs="0"/> + </sequence> + </complexType> + + <element name="assembly" type="maml:assemblyType"> + <annotation> + <documentation> + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <!-- ************ End of assembly ************ --> + + <element name="internalOnly" type="maml:emptyType"> + <annotation> + <documentation> + This element is used to mark code entities that are only + intended for internal use and are not intended to be used + by external developers. This element should be used rarely. + The desire to use this element may indicate a design problem + with the library that should be fixed by the internal developers + before the product is released. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="useBase" type="maml:emptyType"> + <annotation> + <documentation> + This element is used to mark code entities that should use the documentation + of its base. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="returnValue" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains a description of the return value of a function or property. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="threadSafety" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains a discussion of the thread safety characteristics of the current item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="notesForImplementers" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains information that is only relevant to implementers of the current item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="notesForCallers" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains information that is only relevant to callers of the current item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="notesForInheritors" type="maml:sectionContentType"> + <annotation> + <documentation> + This element contains information that is only relevant to inheritors of the current item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="codeReferenceDescriptionType" mixed="false"> + <sequence> + <element ref="maml:codeEntityReference"/> + <element ref="maml:content"/> + </sequence> + </complexType> + + <complexType name="parameterReferenceDescriptionType" mixed="false"> + <sequence> + <element ref="maml:parameterReference"/> + <element ref="maml:content"/> + </sequence> + </complexType> + + <element name="clsCompliantAlternative" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + This is a reference to another code entity that performs a + function similar to that of the current code entity. Unlike the + current entity, the target of the reference is CLS-compliant. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="equivalentCodeEntity" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + This is a reference to another code entity that performs + the same function as the current code entity. It is typically used + for mapping from an operator to the equivalent function (such as + from op_Equality to Equals). + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="obsoleteCodeEntity" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + This is used to indicate that a code entity is obsolete.It may contain + a reference to another code entity that users are encouraged to use instead of the + current code entity. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="unmanagedCodeEntity" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + It may contain a reference to a unmanaged code entity. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="genericParameter" type="maml:parameterReferenceDescriptionType"> + <annotation> + <documentation> + This element contains a description of a generic or template parameter. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="genericParametersType" mixed="false"> + <sequence> + <element ref="maml:genericParameter" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="genericParameters" type="maml:genericParametersType"> + <annotation> + <documentation> + This element is a collection of genericParameter elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="parameter" type="maml:parameterReferenceDescriptionType"> + <annotation> + <documentation> + This element contains a description of a functional parameter. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="parametersType" mixed="false"> + <sequence> + <element ref="maml:parameter" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="parameters" type="maml:parametersType"> + <annotation> + <documentation> + This element is a collection of parameter elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="exception" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + This element contains a description of one type of exception. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="exceptionsType" mixed="false"> + <sequence> + <element ref="maml:exception" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="exceptions" type="maml:exceptionsType"> + <annotation> + <documentation> + This element is a collection of exception elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="permission" type="maml:codeReferenceDescriptionType"> + <annotation> + <documentation> + This element holds a discussion of a particular permission required + to use the current code element. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="permissionsType" mixed="false"> + <sequence> + <element ref="maml:permission" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="permissions" type="maml:permissionsType"> + <annotation> + <documentation> + This element is a collection of permission elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="platformNoteType" mixed="false"> + <sequence> + <element ref="maml:platforms"/> + <element ref="maml:content"/> + </sequence> + </complexType> + + <element name="platformNote" type="maml:platformNoteType"> + <annotation> + <documentation> + This element contains a collection of platforms + along with a discussion of the behavior of the current code entity on those platforms. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="platformNotesType" mixed="false"> + <sequence> + <element ref="maml:platformNote" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="platformNotes" type="maml:platformNotesType"> + <annotation> + <documentation> + This element is a collection of platformNote elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="codeEntityType" mixed="false"> + <sequence> + <element ref="maml:codeEntityReference"/> + <choice maxOccurs="unbounded"> + <element ref="maml:internalOnly" minOccurs="0"/> + <element ref="maml:useBase" minOccurs="0"/> + <element ref="maml:clsCompliantAlternative" minOccurs="0"/> + <element ref="maml:equivalentCodeEntity" minOccurs="0"/> + <element ref="maml:obsoleteCodeEntity" minOccurs="0"/> + <element ref="maml:unmanagedCodeEntity" minOccurs="0"/> + </choice> + <element ref="maml:summary" minOccurs="0"/> + <element ref="maml:genericParameters" minOccurs="0"/> + <element ref="maml:parameters" minOccurs="0"/> + <element ref="maml:returnValue" minOccurs="0"/> + <element ref="maml:exceptions" minOccurs="0"/> + <element ref="maml:threadSafety" minOccurs="0"/> + <element ref="maml:remarks" minOccurs="0"/> + <element ref="maml:notesForImplementers" minOccurs="0"/> + <element ref="maml:notesForCallers" minOccurs="0"/> + <element ref="maml:notesForInheritors" minOccurs="0"/> + <element ref="maml:platformNotes" minOccurs="0"/> + <element ref="maml:codeExamples" minOccurs="0" /> + <element ref="maml:permissions" minOccurs="0"/> + <element ref="maml:relatedTopics" minOccurs="0"/> + </sequence> + </complexType> + + <element name="codeEntity" type="maml:codeEntityType"> + <annotation> + <documentation> + This element contains the documentation for a single code entity. + A code entity is a type, member, or overload-set. + The code entity is identified by the one and only codeEntityReference element + that is a child of this element. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="codeEntitiesType" mixed="false"> + <sequence> + <element ref="maml:codeEntity" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="codeEntities" type="maml:codeEntitiesType"> + <annotation> + <documentation> + This element is a simple collection of codeEntity elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/developerStructure.xsd b/tools/Sandcastle/Schemas/Authoring/developerStructure.xsd index a075c14..17c0f8b 100644 --- a/tools/Sandcastle/Schemas/Authoring/developerStructure.xsd +++ b/tools/Sandcastle/Schemas/Authoring/developerStructure.xsd @@ -1,308 +1,308 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema
- xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- blockDefault="#all"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- xml:lang="en"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema describes MAML, the Microsoft Assistance Markup Language.
- MAML is intended for software documentation. In particular, it is
- intended to accomodate the needs of Microsoft documentation.
- </documentation>
- <documentation>
- The schema is broken into three main areas: end user, developer and
- IT Pro. These areas adequaltely categorize Microsoft
- documentation.
- </documentation>
- <documentation>
- The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5.
- Each backwards-incompatible revision to Maml will require that the date fields be appropriately
- incremented in uri of the updated version of the Maml schema.
- </documentation>
- </annotation>
-
- <annotation>
- <documentation>
- This portion of the schema was created by alexstoc in April 2003.
- </documentation>
- </annotation>
- <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="space.xsd"/>
- <include schemaLocation="baseConditional.xsd"/>
- <include schemaLocation="inline.xsd"/>
- <include schemaLocation="block.xsd"/>
- <include schemaLocation="structure.xsd"/>
-
- <!-- ***************************************************************** -->
- <complexType name="singleParagraphSimpleContentType">
- <sequence>
- <element ref="maml:para" minOccurs="0"/>
- </sequence>
- </complexType>
-
- <element name="summary" type="maml:singleParagraphSimpleContentType">
- <annotation>
- <documentation>
- This element contains a summary, introduction, or short description of the current item.
- This text typically appears in a topic and may also be used as the description of the topic
- that appears in a jump table when the topic is being linked to.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="remarks" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element contains a detailed discussion of the current item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="legacy" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds legacy content that has not been subdivided
- into elements according to the latest standards.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="comments" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds a general discussion.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="codeType">
- <choice>
- <element ref="maml:code"/>
- <element ref="maml:codeReference"/>
- </choice>
- </complexType>
- <group name="codeExampleContentsGroup">
- <sequence>
- <element ref="maml:description" minOccurs="0"/>
- <group ref="maml:codeGroup" minOccurs="1" maxOccurs="unbounded"/> <!-- This is to allow a single example with equivalent code in multiple languages -->
- <element ref="maml:comments" minOccurs="0"/>
- <element name="input" type="maml:codeType" minOccurs="0"/>
- <element name="output" type="maml:codeType" minOccurs="0"/>
- <element name="sampleOutput" type="maml:codeType" minOccurs="0"/>
- </sequence>
- </group>
-
- <complexType name="codeExampleType" mixed="false">
- <choice>
- <element ref="maml:legacy"/> <!-- TODO: review use of element to hold legacy content -->
- <group ref="maml:codeExampleContentsGroup"/>
- </choice>
- </complexType>
-
- <element name="codeExample" type="maml:codeExampleType">
- <annotation>
- <documentation>
- This element holds a discussion of a code example.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="codeExamplesType" mixed="false">
- <sequence>
- <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="codeExamples" type="maml:codeExamplesType">
- <annotation>
- <documentation>
- This element is a collection of codeExample elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="buildInstructions" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds instructions for building a code example.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="robustProgramming" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds a discussion of error handling and other
- issues related to writing solid code.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="security" type="maml:namedSectionType">
- <annotation>
- <documentation>
- This element holds a discussion of security issues.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name ="legacySyntaxType" mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <!--<element name="legacyItalic" type="maml:textType"/>-->
- <element ref="maml:parameterReference" />
- <element name="legacyBold" type="maml:textType"/>
- <element ref="maml:legacyLink"/>
- <element ref="maml:legacyUnderline"/>
- </choice>
- <attribute name="language" type="maml:devLanguagesType"/>
- <attribute ref="xml:space"/>
- </complexType>
-
- <element name="legacySyntax" type="maml:legacySyntaxType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>block</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="syntaxSectionType" mixed="false">
- <sequence>
- <element ref="maml:sections" minOccurs="0" maxOccurs="1"/>
- <element ref="maml:legacySyntax" minOccurs="1" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
-
- <element name="syntaxSection" type="maml:syntaxSectionType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="schemaHierarchyType" mixed="false">
- <sequence>
- <element ref="maml:link" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
- <element name="schemaHierarchy" type="maml:schemaHierarchyType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="attributesType" mixed="true">
- <choice>
- <element ref="maml:para"/>
- <element ref="maml:table"/>
- </choice>
- </complexType>
- <complexType name="attributeType" mixed="true">
- <sequence>
- <element name="title" type="maml:textType"/>
- <element ref="maml:table"/>
- </sequence>
- </complexType>
- <element name="attribute" type="maml:attributeType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>block</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="attributesandElementsType" mixed="true">
- <sequence>
- <element ref="maml:para"/>
- <element name="attributes" type="maml:attributesType"/>
- <element ref="maml:attribute" minOccurs="0" maxOccurs="unbounded"/>
- <element name="childElement" type="maml:attributesType"/>
- <element name="parentElement" type="maml:attributesType"/>
- </sequence>
- </complexType>
- <element name="attributesandElements" type="maml:attributesandElementsType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>block</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="tableType" mixed="false">
- <sequence>
- <element ref="maml:table"/>
- </sequence>
- </complexType>
- <element name="elementInformation" type="maml:tableType">
- <annotation>
- <documentation>
- This element holds syntax obtained from a converted document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema + xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + blockDefault="#all" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + xml:lang="en" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema describes MAML, the Microsoft Assistance Markup Language. + MAML is intended for software documentation. In particular, it is + intended to accomodate the needs of Microsoft documentation. + </documentation> + <documentation> + The schema is broken into three main areas: end user, developer and + IT Pro. These areas adequaltely categorize Microsoft + documentation. + </documentation> + <documentation> + The namespace uri for this version of Maml is: http://ddue.schemas.microsoft.com/authoring/2003/5. + Each backwards-incompatible revision to Maml will require that the date fields be appropriately + incremented in uri of the updated version of the Maml schema. + </documentation> + </annotation> + + <annotation> + <documentation> + This portion of the schema was created by alexstoc in April 2003. + </documentation> + </annotation> + <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="space.xsd"/> + <include schemaLocation="baseConditional.xsd"/> + <include schemaLocation="inline.xsd"/> + <include schemaLocation="block.xsd"/> + <include schemaLocation="structure.xsd"/> + + <!-- ***************************************************************** --> + <complexType name="singleParagraphSimpleContentType"> + <sequence> + <element ref="maml:para" minOccurs="0"/> + </sequence> + </complexType> + + <element name="summary" type="maml:singleParagraphSimpleContentType"> + <annotation> + <documentation> + This element contains a summary, introduction, or short description of the current item. + This text typically appears in a topic and may also be used as the description of the topic + that appears in a jump table when the topic is being linked to. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="remarks" type="maml:namedSectionType"> + <annotation> + <documentation> + This element contains a detailed discussion of the current item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="legacy" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds legacy content that has not been subdivided + into elements according to the latest standards. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="comments" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds a general discussion. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="codeType"> + <choice> + <element ref="maml:code"/> + <element ref="maml:codeReference"/> + </choice> + </complexType> + <group name="codeExampleContentsGroup"> + <sequence> + <element ref="maml:description" minOccurs="0"/> + <group ref="maml:codeGroup" minOccurs="1" maxOccurs="unbounded"/> <!-- This is to allow a single example with equivalent code in multiple languages --> + <element ref="maml:comments" minOccurs="0"/> + <element name="input" type="maml:codeType" minOccurs="0"/> + <element name="output" type="maml:codeType" minOccurs="0"/> + <element name="sampleOutput" type="maml:codeType" minOccurs="0"/> + </sequence> + </group> + + <complexType name="codeExampleType" mixed="false"> + <choice> + <element ref="maml:legacy"/> <!-- TODO: review use of element to hold legacy content --> + <group ref="maml:codeExampleContentsGroup"/> + </choice> + </complexType> + + <element name="codeExample" type="maml:codeExampleType"> + <annotation> + <documentation> + This element holds a discussion of a code example. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="codeExamplesType" mixed="false"> + <sequence> + <element ref="maml:codeExample" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="codeExamples" type="maml:codeExamplesType"> + <annotation> + <documentation> + This element is a collection of codeExample elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <element name="buildInstructions" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds instructions for building a code example. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <element name="robustProgramming" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds a discussion of error handling and other + issues related to writing solid code. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="security" type="maml:namedSectionType"> + <annotation> + <documentation> + This element holds a discussion of security issues. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name ="legacySyntaxType" mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <!--<element name="legacyItalic" type="maml:textType"/>--> + <element ref="maml:parameterReference" /> + <element name="legacyBold" type="maml:textType"/> + <element ref="maml:legacyLink"/> + <element ref="maml:legacyUnderline"/> + </choice> + <attribute name="language" type="maml:devLanguagesType"/> + <attribute ref="xml:space"/> + </complexType> + + <element name="legacySyntax" type="maml:legacySyntaxType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>block</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="syntaxSectionType" mixed="false"> + <sequence> + <element ref="maml:sections" minOccurs="0" maxOccurs="1"/> + <element ref="maml:legacySyntax" minOccurs="1" maxOccurs="unbounded"/> + </sequence> + </complexType> + + <element name="syntaxSection" type="maml:syntaxSectionType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="schemaHierarchyType" mixed="false"> + <sequence> + <element ref="maml:link" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + </complexType> + <element name="schemaHierarchy" type="maml:schemaHierarchyType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="attributesType" mixed="true"> + <choice> + <element ref="maml:para"/> + <element ref="maml:table"/> + </choice> + </complexType> + <complexType name="attributeType" mixed="true"> + <sequence> + <element name="title" type="maml:textType"/> + <element ref="maml:table"/> + </sequence> + </complexType> + <element name="attribute" type="maml:attributeType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>block</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="attributesandElementsType" mixed="true"> + <sequence> + <element ref="maml:para"/> + <element name="attributes" type="maml:attributesType"/> + <element ref="maml:attribute" minOccurs="0" maxOccurs="unbounded"/> + <element name="childElement" type="maml:attributesType"/> + <element name="parentElement" type="maml:attributesType"/> + </sequence> + </complexType> + <element name="attributesandElements" type="maml:attributesandElementsType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>block</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="tableType" mixed="false"> + <sequence> + <element ref="maml:table"/> + </sequence> + </complexType> + <element name="elementInformation" type="maml:tableType"> + <annotation> + <documentation> + This element holds syntax obtained from a converted document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/glossary.xsd b/tools/Sandcastle/Schemas/Authoring/glossary.xsd index c27053d..45622cf 100644 --- a/tools/Sandcastle/Schemas/Authoring/glossary.xsd +++ b/tools/Sandcastle/Schemas/Authoring/glossary.xsd @@ -1,103 +1,103 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines question and answer types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <include schemaLocation="structure.xsd"/>
-
- <!-- element declarations -->
- <element name="glossary">
- <annotation>
- <documentation>
- The glossary element describes a set of terms and their definitions.
- </documentation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="maml:title"/>
- <choice>
- <element ref="maml:glossaryDiv" maxOccurs="unbounded"/>
- <element ref="maml:glossaryEntry" maxOccurs="unbounded"/>
- </choice>
- </sequence>
- <attribute name="contentType" type="token"/>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
- </element>
-
- <element name="glossaryDiv">
- <annotation>
- <documentation>The glossaryDiv element describes a titled division within a glossary.</documentation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="maml:title"/>
- <element ref="maml:glossaryEntry" maxOccurs="unbounded"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- <attribute name="class" type="string"/>
- </complexType>
- </element>
-
- <element name="glossaryEntry">
- <annotation>
- <documentation>The glossaryEntry is a single definition in the glossary with a set of terms attached.</documentation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="maml:terms"/>
- <element ref="maml:definition"/>
- <element name="relatedEntry" minOccurs="0" maxOccurs="unbounded">
- <annotation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- <complexType>
- <attribute name="termId" type="token" use="required"/>
- <attribute name="relationType" type="string" use="required"/>
- </complexType>
- </element>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- <attribute name="platform" type="string" use="optional"/>
- <attribute name="product" type="string" use="optional"/>
- </complexType>
- </element>
-
- <element name="terms">
- <annotation>
- <documentation>The various terms that are associated with this entry. Each term has attributes to specify its use and other idenitfying attributes</documentation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- <complexType>
- <sequence maxOccurs="unbounded">
- <element name="term">
- <annotation>
- <appinfo><doc:localizable>true</doc:localizable></appinfo>
- </annotation>
- <complexType mixed="true">
- <attribute name="termClass" type="string" use="required"/>
- <attribute name="partOfSpeech" type="string" use="optional" default="noun"/>
- <attribute name="geographicalUsage" type="string" use="optional"/>
- <attribute name="language" type="string" use="optional"/>
- </complexType>
- </element>
- </sequence>
- </complexType>
- </element>
-
-</schema>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines question and answer types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <include schemaLocation="structure.xsd"/> + + <!-- element declarations --> + <element name="glossary"> + <annotation> + <documentation> + The glossary element describes a set of terms and their definitions. + </documentation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + <complexType> + <sequence> + <element ref="maml:title"/> + <choice> + <element ref="maml:glossaryDiv" maxOccurs="unbounded"/> + <element ref="maml:glossaryEntry" maxOccurs="unbounded"/> + </choice> + </sequence> + <attribute name="contentType" type="token"/> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + </element> + + <element name="glossaryDiv"> + <annotation> + <documentation>The glossaryDiv element describes a titled division within a glossary.</documentation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + <complexType> + <sequence> + <element ref="maml:title"/> + <element ref="maml:glossaryEntry" maxOccurs="unbounded"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + <attribute name="class" type="string"/> + </complexType> + </element> + + <element name="glossaryEntry"> + <annotation> + <documentation>The glossaryEntry is a single definition in the glossary with a set of terms attached.</documentation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + <complexType> + <sequence> + <element ref="maml:terms"/> + <element ref="maml:definition"/> + <element name="relatedEntry" minOccurs="0" maxOccurs="unbounded"> + <annotation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + <complexType> + <attribute name="termId" type="token" use="required"/> + <attribute name="relationType" type="string" use="required"/> + </complexType> + </element> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + <attribute name="platform" type="string" use="optional"/> + <attribute name="product" type="string" use="optional"/> + </complexType> + </element> + + <element name="terms"> + <annotation> + <documentation>The various terms that are associated with this entry. Each term has attributes to specify its use and other idenitfying attributes</documentation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + <complexType> + <sequence maxOccurs="unbounded"> + <element name="term"> + <annotation> + <appinfo><doc:localizable>true</doc:localizable></appinfo> + </annotation> + <complexType mixed="true"> + <attribute name="termClass" type="string" use="required"/> + <attribute name="partOfSpeech" type="string" use="optional" default="noun"/> + <attribute name="geographicalUsage" type="string" use="optional"/> + <attribute name="language" type="string" use="optional"/> + </complexType> + </element> + </sequence> + </complexType> + </element> + +</schema> diff --git a/tools/Sandcastle/Schemas/Authoring/hierarchy.xsd b/tools/Sandcastle/Schemas/Authoring/hierarchy.xsd index 68c26f5..39f5192 100644 --- a/tools/Sandcastle/Schemas/Authoring/hierarchy.xsd +++ b/tools/Sandcastle/Schemas/Authoring/hierarchy.xsd @@ -1,167 +1,167 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines common hierarchy types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="structure.xsd"/>
-
- <complexType name="paraType">
- <sequence>
- <element ref="maml:para"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <complexType name="sectionType">
- <sequence>
- <element ref="maml:title" minOccurs="0" maxOccurs="1"/>
- <element ref="maml:content"/>
- <element ref="maml:sections" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <complexType name="namedSectionType">
- <sequence>
- <element ref="maml:content"/>
- <element ref="maml:sections" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="section" type="maml:sectionType">
- <annotation>
- <documentation>
- The section element describes a section within a document.
- The section element supports recursion.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="sectionSimple" type="maml:sectionContentType">
- <annotation>
- <documentation>
- The sectionSimple element describes a section within a document.
- This element is similar to the section element; however, it is not
- recursive.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="sectionsType" mixed="false">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element ref="maml:section"/>
- <element ref="maml:sectionSimple"/>
- <element name="conditionalSection">
- <complexType>
- <sequence>
- <element ref="maml:conditions"/>
- <element name="conditionalContent" type="maml:sectionsType"/>
- </sequence>
- </complexType>
- </element>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="sections" type="maml:sectionsType">
- <annotation>
- <documentation>
- This element holds a collection of section elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="sampleRef">
- <annotation>
- <documentation>
- The sampleRef element contains a reference to an external code sample.
- </documentation>
- </annotation>
- <complexType>
- <attribute name="srcID" type="token"/>
- <attribute name="databaseID" type="token"/>
- </complexType>
- </element>
- <group name="relatedTopicLinkGroup">
- <choice>
- <element ref="maml:link"/>
- <element ref="maml:legacyLink"/>
- <element ref="maml:codeEntityReference"/>
- <element ref="maml:externalLink"/>
- <element ref="maml:sampleRef"/>
- </choice>
- </group>
-
- <complexType name="relatedTopicsType" mixed="false">
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:relatedTopicLinkGroup"/>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="relatedTopics" type="maml:relatedTopicsType">
- <annotation>
- <documentation>
- The relatedTopicsLink is used to link to other topics that might be interesting to the reader.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="externalResourcesType" mixed="false">
- <sequence>
- <element ref="maml:link"/>
- </sequence>
- </complexType>
- <element name="externalResources" type="maml:externalResourcesType">
- <annotation>
- <documentation>
- This element holds a collection of section elements.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
- <!-- complexType declarations -->
- <complexType name="contentTypeType">
- <complexContent>
- <extension base="maml:sectionType">
- <sequence>
- <!--<element ref="maml:alertSet" minOccurs="0"/>-->
- <element ref="maml:relatedTopics" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attribute name="contentType" type="token"/>
- </extension>
- </complexContent>
- </complexType>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines common hierarchy types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="structure.xsd"/> + + <complexType name="paraType"> + <sequence> + <element ref="maml:para"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <complexType name="sectionType"> + <sequence> + <element ref="maml:title" minOccurs="0" maxOccurs="1"/> + <element ref="maml:content"/> + <element ref="maml:sections" minOccurs="0" maxOccurs="1"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <complexType name="namedSectionType"> + <sequence> + <element ref="maml:content"/> + <element ref="maml:sections" minOccurs="0" maxOccurs="1"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="section" type="maml:sectionType"> + <annotation> + <documentation> + The section element describes a section within a document. + The section element supports recursion. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <element name="sectionSimple" type="maml:sectionContentType"> + <annotation> + <documentation> + The sectionSimple element describes a section within a document. + This element is similar to the section element; however, it is not + recursive. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="sectionsType" mixed="false"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element ref="maml:section"/> + <element ref="maml:sectionSimple"/> + <element name="conditionalSection"> + <complexType> + <sequence> + <element ref="maml:conditions"/> + <element name="conditionalContent" type="maml:sectionsType"/> + </sequence> + </complexType> + </element> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="sections" type="maml:sectionsType"> + <annotation> + <documentation> + This element holds a collection of section elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <element name="sampleRef"> + <annotation> + <documentation> + The sampleRef element contains a reference to an external code sample. + </documentation> + </annotation> + <complexType> + <attribute name="srcID" type="token"/> + <attribute name="databaseID" type="token"/> + </complexType> + </element> + <group name="relatedTopicLinkGroup"> + <choice> + <element ref="maml:link"/> + <element ref="maml:legacyLink"/> + <element ref="maml:codeEntityReference"/> + <element ref="maml:externalLink"/> + <element ref="maml:sampleRef"/> + </choice> + </group> + + <complexType name="relatedTopicsType" mixed="false"> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:relatedTopicLinkGroup"/> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="relatedTopics" type="maml:relatedTopicsType"> + <annotation> + <documentation> + The relatedTopicsLink is used to link to other topics that might be interesting to the reader. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="externalResourcesType" mixed="false"> + <sequence> + <element ref="maml:link"/> + </sequence> + </complexType> + <element name="externalResources" type="maml:externalResourcesType"> + <annotation> + <documentation> + This element holds a collection of section elements. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + <!-- complexType declarations --> + <complexType name="contentTypeType"> + <complexContent> + <extension base="maml:sectionType"> + <sequence> + <!--<element ref="maml:alertSet" minOccurs="0"/>--> + <element ref="maml:relatedTopics" minOccurs="0" maxOccurs="1"/> + </sequence> + <attribute name="contentType" type="token"/> + </extension> + </complexContent> + </complexType> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/inline.xsd b/tools/Sandcastle/Schemas/Authoring/inline.xsd index 14e7ba6..d89ab10 100644 --- a/tools/Sandcastle/Schemas/Authoring/inline.xsd +++ b/tools/Sandcastle/Schemas/Authoring/inline.xsd @@ -1,64 +1,64 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema aggregates inline elements from other inline
- schemas.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="inlineCommon.xsd"/>
- <include schemaLocation="inlineUi.xsd"/>
- <include schemaLocation="inlineSoftware.xsd"/>
- <include schemaLocation="inlineLinking.xsd"/>
- <include schemaLocation="base.xsd"/>
-
- <group name="inlineBasicGroup">
- <choice>
- <group ref="maml:inlineCommonGroup"/>
- <group ref="maml:inlineLinkingGroup"/>
- </choice>
- </group>
-
- <group name="inlineGroup">
- <choice>
- <group ref="maml:inlineBasicGroup"/>
- <group ref="maml:inlineUiGroup"/>
- <group ref="maml:inlineSoftwareGroup"/>
- </choice>
- </group>
-
- <!-- complexType declarations -->
- <complexType name="inlineType" mixed="true">
- <annotation>
- <documentation>
- The inlineType complexType describes a simple inline-only
- content model. It provides both text and elements with
- similarly simple content models.
- </documentation>
- </annotation>
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:inlineGroup"/>
- <element ref="maml:sharedContent"/>
- <element name="conditionalSection">
- <complexType>
- <sequence>
- <element ref="maml:conditions"/>
- <element name="conditionalContent" type="maml:inlineType"/>
- </sequence>
- </complexType>
- </element>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema aggregates inline elements from other inline + schemas. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="inlineCommon.xsd"/> + <include schemaLocation="inlineUi.xsd"/> + <include schemaLocation="inlineSoftware.xsd"/> + <include schemaLocation="inlineLinking.xsd"/> + <include schemaLocation="base.xsd"/> + + <group name="inlineBasicGroup"> + <choice> + <group ref="maml:inlineCommonGroup"/> + <group ref="maml:inlineLinkingGroup"/> + </choice> + </group> + + <group name="inlineGroup"> + <choice> + <group ref="maml:inlineBasicGroup"/> + <group ref="maml:inlineUiGroup"/> + <group ref="maml:inlineSoftwareGroup"/> + </choice> + </group> + + <!-- complexType declarations --> + <complexType name="inlineType" mixed="true"> + <annotation> + <documentation> + The inlineType complexType describes a simple inline-only + content model. It provides both text and elements with + similarly simple content models. + </documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:inlineGroup"/> + <element ref="maml:sharedContent"/> + <element name="conditionalSection"> + <complexType> + <sequence> + <element ref="maml:conditions"/> + <element name="conditionalContent" type="maml:inlineType"/> + </sequence> + </complexType> + </element> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/inlineCommon.xsd b/tools/Sandcastle/Schemas/Authoring/inlineCommon.xsd index 84e07ef..5d2ca40 100644 --- a/tools/Sandcastle/Schemas/Authoring/inlineCommon.xsd +++ b/tools/Sandcastle/Schemas/Authoring/inlineCommon.xsd @@ -1,364 +1,364 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema defines common inline elements.
- </documentation>
- </annotation>
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd" />
- <!-- element declarations -->
- <!-- language markup -->
- <element name="quoteInline" type="maml:textType">
- <annotation>
- <documentation>
- The quoteInline element describes an inline quotation.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="date" type="maml:textType">
- <annotation>
- <documentation>
- The date element describes a date.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="foreignPhrase" type="maml:textType">
- <annotation>
- <documentation>
- The foreignPhrase element describes a phrase that is of a language
- that is different than the primary language of the document.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="phrase" type="maml:inlineType">
- <annotation>
- <documentation>
- The phrase element is a wrapper element for a run of text.
- It is solely a container and does not specify any semantics
- on its own.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="legacyBold" type="maml:inlineType">
- <annotation>
- <documentation>
- This element marks bolded text in legacy documents. DO NOT USE IT in authoring new documents.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="legacyItalic" type="maml:inlineType">
- <annotation>
- <documentation>
- This element marks italicized text in legacy documents. DO NOT USE IT in authoring new documents.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="legacyUnderline" type="maml:inlineType">
- <annotation>
- <documentation>
- This element marks underlined text in legacy documents. DO NOT USE IT in authoring new documents.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="subscriptType" mixed="false">
- <simpleContent>
- <extension base="token" />
- </simpleContent>
- </complexType>
- <complexType name="superscriptType" mixed="false">
- <simpleContent>
- <extension base="token" />
- </simpleContent>
- </complexType>
- <element name="subscript" type="maml:subscriptType">
- <annotation>
- <documentation>
- This element marks a subscript in a mathematical expression.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="superscript" type="maml:superscriptType">
- <annotation>
- <documentation>
- This element marks a superscript in a mathematical expression.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="notLocalizable" type="maml:inlineType">
- <annotation>
- <documentation>
- The notLocalizable element is a wrapper element for a run of text
- that should not be localized.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <!-- legal and political markup -->
- <element name="copyright">
- <annotation>
- <documentation>
- The copyright element describes the copyright information about a document.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element name="trademark" type="token">
- <annotation>
- <documentation>
- The trademark element describes some manner of
- corporate trademark.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="year" minOccurs="0" maxOccurs="unbounded" type="integer">
- <annotation>
- <documentation>
- The year element describes the year associated with a
- particular copyright.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="holder" minOccurs="0" maxOccurs="unbounded" type="token">
- <annotation>
- <documentation>
- The holder element describes the company who holds a
- particular copyright.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- </sequence>
- <attribute name="class">
- <annotation>
- <documentation>
- The class attribute describes the type of trademark used.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="token">
- <enumeration value="copyright" />
- <enumeration value="trade" />
- <enumeration value="registered" />
- <enumeration value="service" />
- </restriction>
- </simpleType>
- </attribute>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" />
- </complexType>
- </element>
- <element name="corporation" type="maml:textType">
- <annotation>
- <documentation>
- The corporation element describes a corporation.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="country" type="maml:textType">
- <annotation>
- <documentation>
- The country element describes a country.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="suffix" type="maml:textType">
- <annotation>
- <documentation>
- This element specifies text that will be displayed after the topic links.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="prefix" type="maml:textType">
- <annotation>
- <documentation>
- This element specifies text that will be displayed after the topic links.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="separator" type="token">
- <annotation>
- <documentation>
- Specifies text that will be output between links.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="dynamicLink" type="maml:dynamicLinkType">
- <annotation>
- <documentation>
- The dynamicLink element contains the B-keywords that will be used by K-tables.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="dynamicLinkType" mixed="false">
- <sequence>
- <element ref="maml:prefix" minOccurs="0" maxOccurs="1"/>
- <element ref="maml:separator" minOccurs="0" maxOccurs="1"/>
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="maml:keyword"/>
- </choice>
- <element ref="maml:suffix" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attribute name="type" use="required">
- <annotation>
- <documentation>
- The class attribute describes the type of list.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="string">
- <enumeration value="bulleted"/>
- <enumeration value="inline"/>
- <enumeration value="table"/>
- </restriction>
- </simpleType>
- </attribute>
- </complexType>
-
- <element name="keyword" type="token">
- <annotation>
- <documentation>
- This element holds the B-keywords.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>paragraph</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="localizedText" type="maml:inlineType">
- <annotation>
- <documentation>
- This element holds the Localized text.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="embeddedLabel" type="maml:inlineType">
- <annotation>
- <documentation>
- This element holds the embedded labels, typically for run-in headings.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group declarations -->
- <group name="inlineCommonGroup">
- <annotation>
- <documentation>
- This type describes the set of inline elements that are likely to be
- needed for block elements' content models.
- </documentation>
- </annotation>
- <choice>
- <element ref="maml:quoteInline" />
- <element ref="maml:date" />
- <element ref="maml:foreignPhrase" />
- <element ref="maml:phrase" />
- <element ref="maml:copyright" />
- <element ref="maml:corporation" />
- <element ref="maml:country" />
- <element ref="maml:notLocalizable" />
- <element ref="maml:subscript" />
- <element ref="maml:superscript" />
- <element ref="maml:legacyBold" />
- <element ref="maml:legacyItalic" />
- <element ref="maml:legacyUnderline" />
- <element ref="maml:dynamicLink"/>
- <element ref="maml:localizedText"/>
- <element ref="maml:embeddedLabel"/>
- </choice>
- </group>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <!-- Schema documentation --> + <annotation> + <documentation> + This schema defines common inline elements. + </documentation> + </annotation> + <!-- include and import declarations --> + <include schemaLocation="base.xsd" /> + <!-- element declarations --> + <!-- language markup --> + <element name="quoteInline" type="maml:textType"> + <annotation> + <documentation> + The quoteInline element describes an inline quotation. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="date" type="maml:textType"> + <annotation> + <documentation> + The date element describes a date. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="foreignPhrase" type="maml:textType"> + <annotation> + <documentation> + The foreignPhrase element describes a phrase that is of a language + that is different than the primary language of the document. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="phrase" type="maml:inlineType"> + <annotation> + <documentation> + The phrase element is a wrapper element for a run of text. + It is solely a container and does not specify any semantics + on its own. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="legacyBold" type="maml:inlineType"> + <annotation> + <documentation> + This element marks bolded text in legacy documents. DO NOT USE IT in authoring new documents. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="legacyItalic" type="maml:inlineType"> + <annotation> + <documentation> + This element marks italicized text in legacy documents. DO NOT USE IT in authoring new documents. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="legacyUnderline" type="maml:inlineType"> + <annotation> + <documentation> + This element marks underlined text in legacy documents. DO NOT USE IT in authoring new documents. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="subscriptType" mixed="false"> + <simpleContent> + <extension base="token" /> + </simpleContent> + </complexType> + <complexType name="superscriptType" mixed="false"> + <simpleContent> + <extension base="token" /> + </simpleContent> + </complexType> + <element name="subscript" type="maml:subscriptType"> + <annotation> + <documentation> + This element marks a subscript in a mathematical expression. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="superscript" type="maml:superscriptType"> + <annotation> + <documentation> + This element marks a superscript in a mathematical expression. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="notLocalizable" type="maml:inlineType"> + <annotation> + <documentation> + The notLocalizable element is a wrapper element for a run of text + that should not be localized. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <!-- legal and political markup --> + <element name="copyright"> + <annotation> + <documentation> + The copyright element describes the copyright information about a document. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType> + <sequence> + <element name="trademark" type="token"> + <annotation> + <documentation> + The trademark element describes some manner of + corporate trademark. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="year" minOccurs="0" maxOccurs="unbounded" type="integer"> + <annotation> + <documentation> + The year element describes the year associated with a + particular copyright. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="holder" minOccurs="0" maxOccurs="unbounded" type="token"> + <annotation> + <documentation> + The holder element describes the company who holds a + particular copyright. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + </sequence> + <attribute name="class"> + <annotation> + <documentation> + The class attribute describes the type of trademark used. + </documentation> + </annotation> + <simpleType> + <restriction base="token"> + <enumeration value="copyright" /> + <enumeration value="trade" /> + <enumeration value="registered" /> + <enumeration value="service" /> + </restriction> + </simpleType> + </attribute> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" /> + </complexType> + </element> + <element name="corporation" type="maml:textType"> + <annotation> + <documentation> + The corporation element describes a corporation. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="country" type="maml:textType"> + <annotation> + <documentation> + The country element describes a country. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="suffix" type="maml:textType"> + <annotation> + <documentation> + This element specifies text that will be displayed after the topic links. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="prefix" type="maml:textType"> + <annotation> + <documentation> + This element specifies text that will be displayed after the topic links. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="separator" type="token"> + <annotation> + <documentation> + Specifies text that will be output between links. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="dynamicLink" type="maml:dynamicLinkType"> + <annotation> + <documentation> + The dynamicLink element contains the B-keywords that will be used by K-tables. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="dynamicLinkType" mixed="false"> + <sequence> + <element ref="maml:prefix" minOccurs="0" maxOccurs="1"/> + <element ref="maml:separator" minOccurs="0" maxOccurs="1"/> + <choice minOccurs="1" maxOccurs="unbounded"> + <element ref="maml:keyword"/> + </choice> + <element ref="maml:suffix" minOccurs="0" maxOccurs="1"/> + </sequence> + <attribute name="type" use="required"> + <annotation> + <documentation> + The class attribute describes the type of list. + </documentation> + </annotation> + <simpleType> + <restriction base="string"> + <enumeration value="bulleted"/> + <enumeration value="inline"/> + <enumeration value="table"/> + </restriction> + </simpleType> + </attribute> + </complexType> + + <element name="keyword" type="token"> + <annotation> + <documentation> + This element holds the B-keywords. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>paragraph</doc:type> + </appinfo> + </annotation> + </element> + + <element name="localizedText" type="maml:inlineType"> + <annotation> + <documentation> + This element holds the Localized text. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="embeddedLabel" type="maml:inlineType"> + <annotation> + <documentation> + This element holds the embedded labels, typically for run-in headings. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group declarations --> + <group name="inlineCommonGroup"> + <annotation> + <documentation> + This type describes the set of inline elements that are likely to be + needed for block elements' content models. + </documentation> + </annotation> + <choice> + <element ref="maml:quoteInline" /> + <element ref="maml:date" /> + <element ref="maml:foreignPhrase" /> + <element ref="maml:phrase" /> + <element ref="maml:copyright" /> + <element ref="maml:corporation" /> + <element ref="maml:country" /> + <element ref="maml:notLocalizable" /> + <element ref="maml:subscript" /> + <element ref="maml:superscript" /> + <element ref="maml:legacyBold" /> + <element ref="maml:legacyItalic" /> + <element ref="maml:legacyUnderline" /> + <element ref="maml:dynamicLink"/> + <element ref="maml:localizedText"/> + <element ref="maml:embeddedLabel"/> + </choice> + </group> </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/inlineLinking.xsd b/tools/Sandcastle/Schemas/Authoring/inlineLinking.xsd index 099024e..28a3b6a 100644 --- a/tools/Sandcastle/Schemas/Authoring/inlineLinking.xsd +++ b/tools/Sandcastle/Schemas/Authoring/inlineLinking.xsd @@ -1,263 +1,263 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified">
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema defines common inline elements.
- </documentation>
- </annotation>
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd" />
- <!-- element declarations -->
- <!-- linking elements -->
- <element name="link" type="maml:inlineLinkType">
- <annotation>
- <documentation>
- The link element can contain text but this text
- is discarded at build time in favor of the actual title of
- the link target, so the text in this element is not localizable.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="legacyLink" type="maml:inlineLinkType">
- <annotation>
- <documentation>
- The legacyLink element allows custom text to be used for the link, so
- the text is localizable. The link element is to be preferred over the
- legacyLink element for all new content.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <!-- media links -->
- <element name="mediaLinkInline" type="maml:mediaLinkInlineType">
- <annotation>
- <documentation>
- The mediaLinkInline element
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="mediaLinkType">
- <annotation>
- <documentation>This complexType is intended as the content model for media referencing elements in the schema.</documentation>
- </annotation>
- <sequence>
- <element name="caption" type="token" minOccurs="0">
- <annotation>
- <documentation>The caption element describes a summary of an associated object, such as an image.</documentation>
- <documentation>This text is intended for the alternate text in web representations.</documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="image">
- <complexType>
- <annotation>
- <documentation>A source link targeting the platform object type: image.</documentation>
- <documentation>The structure required to define a link to an image object.</documentation>
- <documentation>The mediaLinkInline element represents a reference to an image object</documentation>
- <documentation>directly (optionally via a presentation object).</documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- <attributeGroup ref="maml:linkingGroup" />
- </complexType>
- </element>
- </sequence>
- </complexType>
-
- <complexType name="mediaLinkInlineType">
- <annotation>
- <documentation>This complexType is intended as the content model for media referencing elements in the schema.</documentation>
- </annotation>
- <sequence>
- <element name="image">
- <complexType>
- <annotation>
- <documentation>A source link targeting the platform object type: image.</documentation>
- <documentation>The structure required to define a link to an image object.</documentation>
- <documentation>The mediaLinkInline element represents a reference to an image object</documentation>
- <documentation>directly (optionally via a presentation object).</documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- <attributeGroup ref="maml:linkingGroup" />
- </complexType>
- </element>
- </sequence>
- </complexType>
-
- <!-- Code links -->
- <simpleType name="codeEntityReferenceStringType">
- <restriction base="token">
- <!--<pattern value='[NTFPME]:[^)(]+([(][^)(]*[)])?'/>-->
- <pattern value='.*' />
- </restriction>
- </simpleType>
- <complexType name="codeEntityReferenceType" mixed="false">
- <simpleContent>
- <extension base="maml:codeEntityReferenceStringType">
- <attribute name="qualifyHint" type="boolean" />
- <attribute name="autoUpgrade" type="boolean" />
- </extension>
- </simpleContent>
- </complexType>
- <element name="codeEntityReference" type="maml:codeEntityReferenceType">
- <annotation>
- <documentation>
- This element holds a reference to a code entity.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="parameterReference" type="maml:textType">
- <annotation>
- <documentation>
- This element holds a reference to a parameter.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <group name="codeLinkingGroup">
- <annotation>
- <documentation>
- This type describes the set of inline elements that are
- used for referring to code elements and parameters.
- </documentation>
- </annotation>
- <choice>
- <element ref="maml:codeEntityReference" />
- <element ref="maml:parameterReference" />
- </choice>
- </group>
- <!-- external resource links -->
- <complexType name="inlineLinkType" mixed="true">
- <simpleContent>
- <extension base="maml:textType">
- <attributeGroup ref="maml:linkingGroup" />
- </extension>
- </simpleContent>
- </complexType>
- <complexType name="sharedContentParameterType" mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:inlineGroup" />
- </choice>
- <attribute name="name" type="token" />
- </complexType>
- <element name="sharedContentParameter" type="maml:sharedContentParameterType">
- <annotation>
- <documentation></documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <complexType name="sharedContentType">
- <sequence>
- <element ref="maml:sharedContentParameter" minOccurs="0" maxOccurs="unbounded" />
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" />
- <attributeGroup ref="maml:linkingGroup" />
- </complexType>
- <element name="sharedContent" type="maml:sharedContentType">
- <annotation>
- <documentation></documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <!-- External redir web link -->
- <element name="externalLink">
- <annotation>
- <documentation>
- The externalLink element describes links that are external to Microsoft
- and must be managed through a redirection scheme.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element name="linkText" type="maml:textType">
- <annotation>
- <documentation>
- The linkText element describes the text of a link.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="linkAlternateText" type="maml:textType" minOccurs="0">
- <annotation>
- <documentation>
- The linkAlternateText element describes the alternate
- text of the link, used for "alt text" on the Web.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- <element name="linkUri" type="maml:textType">
- <annotation>
- <documentation>
- The linkUri element describes the URI of the link.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- </sequence>
- </complexType>
- </element>
- <!-- group declarations -->
- <group name="inlineLinkingGroup">
- <annotation>
- <documentation>
- This type describes the set of inline elements that are likely to be
- needed for block elements' content models.
- </documentation>
- </annotation>
- <choice>
- <group ref="maml:codeLinkingGroup" />
- <element ref="maml:link" />
- <element ref="maml:legacyLink" />
- <element ref="maml:mediaLinkInline" />
- <element ref="maml:externalLink" />
- </choice>
- </group>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" elementFormDefault="qualified" attributeFormDefault="unqualified"> + <!-- Schema documentation --> + <annotation> + <documentation> + This schema defines common inline elements. + </documentation> + </annotation> + <!-- include and import declarations --> + <include schemaLocation="base.xsd" /> + <!-- element declarations --> + <!-- linking elements --> + <element name="link" type="maml:inlineLinkType"> + <annotation> + <documentation> + The link element can contain text but this text + is discarded at build time in favor of the actual title of + the link target, so the text in this element is not localizable. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="legacyLink" type="maml:inlineLinkType"> + <annotation> + <documentation> + The legacyLink element allows custom text to be used for the link, so + the text is localizable. The link element is to be preferred over the + legacyLink element for all new content. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <!-- media links --> + <element name="mediaLinkInline" type="maml:mediaLinkInlineType"> + <annotation> + <documentation> + The mediaLinkInline element + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="mediaLinkType"> + <annotation> + <documentation>This complexType is intended as the content model for media referencing elements in the schema.</documentation> + </annotation> + <sequence> + <element name="caption" type="token" minOccurs="0"> + <annotation> + <documentation>The caption element describes a summary of an associated object, such as an image.</documentation> + <documentation>This text is intended for the alternate text in web representations.</documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="image"> + <complexType> + <annotation> + <documentation>A source link targeting the platform object type: image.</documentation> + <documentation>The structure required to define a link to an image object.</documentation> + <documentation>The mediaLinkInline element represents a reference to an image object</documentation> + <documentation>directly (optionally via a presentation object).</documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + <attributeGroup ref="maml:linkingGroup" /> + </complexType> + </element> + </sequence> + </complexType> + + <complexType name="mediaLinkInlineType"> + <annotation> + <documentation>This complexType is intended as the content model for media referencing elements in the schema.</documentation> + </annotation> + <sequence> + <element name="image"> + <complexType> + <annotation> + <documentation>A source link targeting the platform object type: image.</documentation> + <documentation>The structure required to define a link to an image object.</documentation> + <documentation>The mediaLinkInline element represents a reference to an image object</documentation> + <documentation>directly (optionally via a presentation object).</documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + <attributeGroup ref="maml:linkingGroup" /> + </complexType> + </element> + </sequence> + </complexType> + + <!-- Code links --> + <simpleType name="codeEntityReferenceStringType"> + <restriction base="token"> + <!--<pattern value='[NTFPME]:[^)(]+([(][^)(]*[)])?'/>--> + <pattern value='.*' /> + </restriction> + </simpleType> + <complexType name="codeEntityReferenceType" mixed="false"> + <simpleContent> + <extension base="maml:codeEntityReferenceStringType"> + <attribute name="qualifyHint" type="boolean" /> + <attribute name="autoUpgrade" type="boolean" /> + </extension> + </simpleContent> + </complexType> + <element name="codeEntityReference" type="maml:codeEntityReferenceType"> + <annotation> + <documentation> + This element holds a reference to a code entity. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="parameterReference" type="maml:textType"> + <annotation> + <documentation> + This element holds a reference to a parameter. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <group name="codeLinkingGroup"> + <annotation> + <documentation> + This type describes the set of inline elements that are + used for referring to code elements and parameters. + </documentation> + </annotation> + <choice> + <element ref="maml:codeEntityReference" /> + <element ref="maml:parameterReference" /> + </choice> + </group> + <!-- external resource links --> + <complexType name="inlineLinkType" mixed="true"> + <simpleContent> + <extension base="maml:textType"> + <attributeGroup ref="maml:linkingGroup" /> + </extension> + </simpleContent> + </complexType> + <complexType name="sharedContentParameterType" mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:inlineGroup" /> + </choice> + <attribute name="name" type="token" /> + </complexType> + <element name="sharedContentParameter" type="maml:sharedContentParameterType"> + <annotation> + <documentation></documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <complexType name="sharedContentType"> + <sequence> + <element ref="maml:sharedContentParameter" minOccurs="0" maxOccurs="unbounded" /> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup" /> + <attributeGroup ref="maml:linkingGroup" /> + </complexType> + <element name="sharedContent" type="maml:sharedContentType"> + <annotation> + <documentation></documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <!-- External redir web link --> + <element name="externalLink"> + <annotation> + <documentation> + The externalLink element describes links that are external to Microsoft + and must be managed through a redirection scheme. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType> + <sequence> + <element name="linkText" type="maml:textType"> + <annotation> + <documentation> + The linkText element describes the text of a link. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="linkAlternateText" type="maml:textType" minOccurs="0"> + <annotation> + <documentation> + The linkAlternateText element describes the alternate + text of the link, used for "alt text" on the Web. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + <element name="linkUri" type="maml:textType"> + <annotation> + <documentation> + The linkUri element describes the URI of the link. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + </sequence> + </complexType> + </element> + <!-- group declarations --> + <group name="inlineLinkingGroup"> + <annotation> + <documentation> + This type describes the set of inline elements that are likely to be + needed for block elements' content models. + </documentation> + </annotation> + <choice> + <group ref="maml:codeLinkingGroup" /> + <element ref="maml:link" /> + <element ref="maml:legacyLink" /> + <element ref="maml:mediaLinkInline" /> + <element ref="maml:externalLink" /> + </choice> + </group> </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/inlineSoftware.xsd b/tools/Sandcastle/Schemas/Authoring/inlineSoftware.xsd index 9bfb6d8..d03684e 100644 --- a/tools/Sandcastle/Schemas/Authoring/inlineSoftware.xsd +++ b/tools/Sandcastle/Schemas/Authoring/inlineSoftware.xsd @@ -1,351 +1,351 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines the common reference types within
- the Content Studio schema.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd"/>
-
- <!-- element declarations -->
- <element name="application" type="maml:textType">
- <annotation>
- <documentation>
- The application element describes the name of an application,
- such as Microsoft Windows or Notepad.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="database" type="maml:textType">
- <annotation>
- <documentation>
- The database element describes a database.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="fictitiousUri">
- <annotation>
- <documentation>
- The fictitiousUri element describes a fictitious internet address,
- such as a web or email address.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <simpleContent>
- <extension base="maml:textType">
- <attribute name="type">
- <simpleType>
- <restriction base="token">
- <enumeration value="email"/>
- <enumeration value="web"/>
- <enumeration value="ftp"/>
- </restriction>
- </simpleType>
- </attribute>
- </extension>
- </simpleContent>
- </complexType>
- </element>
-
- <element name="localUri">
- <annotation>
- <documentation>
- The localUri element describes the path of some local resource.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <simpleContent>
- <extension base="maml:textType">
- <attribute name="type">
- <simpleType>
- <restriction base="token">
- <enumeration value="absolutePath"/>
- <enumeration value="relativePath"/>
- <enumeration value="registryKey"/>
- <enumeration value="allUsersDocAndSettings"/>
- <enumeration value="currentUserDocAndSettings"/>
- <enumeration value="programFiles"/>
- <enumeration value="Windows"/>
- </restriction>
- </simpleType>
- </attribute>
- </extension>
- </simpleContent>
- </complexType>
- </element>
-
- <element name="environmentVariable" type="maml:textType">
- <annotation>
- <documentation>
- The environmentVariable element describes an environment variable in an operating system.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="errorInline" type="maml:textType">
- <annotation>
- <documentation>
- The errorInline element describes an error.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="hardware" type="maml:textType">
- <annotation>
- <documentation>
- The hardware element describes a physical part of a computer system.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="literal" type="maml:textType">
- <annotation>
- <documentation>
- The literal element describes a literal value.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="markup" type="maml:textType">
- <annotation>
- <documentation>
- The markup element describes a string of markup, such as TeX or XML.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="command">
- <annotation>
- <documentation>
- The command element describes the name of an executable or other software
- application than can be run.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="replaceable" type="maml:textType">
- <annotation>
- <documentation>
- The replaceable element describes a part of a command or of a
- function that must be replaced by the user.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
- </choice>
- </complexType>
- </element>
-
- <element name="token" type="maml:textType">
- <annotation>
- <documentation>
- The token element describes a symbol that represents a grammatical construct
- or is merely a link to something else. Tokens are particularly important
- in lexical parsing.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="codeInline">
- <annotation>
- <documentation>
- The codeInline element describes a string of code of a particular computer language.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType mixed="true">
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="legacyItalic" type="maml:textType" />
- <element name="codeFeaturedElement" type="maml:textType" />
- </choice>
- </complexType>
-
- </element>
-
- <element name="languageKeyword" type="maml:textType">
- <annotation>
- <documentation>
- The languageKeyword element describes a keyword of a particular computer language.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="computerOutputInline" type="maml:textType">
- <annotation>
- <documentation>
- The computerOutputInline element describes output from either a console prompt
- or from a UI form.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="ui" type="maml:textType">
- <annotation>
- <documentation>
- The ui element describes a user interface component.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="system" type="maml:textType">
- <annotation>
- <documentation>
- The system element describes any system commands (eg: command line switches, commands)
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="placeholder" type="maml:textType">
- <annotation>
- <documentation>
- This element is used as a placeholder.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="math" type="maml:textType">
- <annotation>
- <documentation>
- This element is used for any math equations, etc.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="newTerm" type="maml:textType">
- <annotation>
- <documentation>
- The newTerm element is used to introduce new technologies, etc
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="unmanagedCodeEntityReference" type="maml:textType">
- <annotation>
- <documentation>
- The unManagedCodeEntityReference element is used to refer to unmanaged code entities.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group declarations -->
- <group name="inlineSoftwareGroup">
- <choice>
- <element ref="maml:application"/>
- <element ref="maml:database"/>
- <element ref="maml:fictitiousUri"/>
- <element ref="maml:localUri"/>
- <element ref="maml:environmentVariable"/>
- <element ref="maml:errorInline"/>
- <element ref="maml:hardware"/>
- <element ref="maml:literal"/>
- <element ref="maml:markup"/>
- <element ref="maml:command"/>
- <element ref="maml:token"/>
- <element ref="maml:codeInline"/>
- <element ref="maml:languageKeyword"/>
- <element ref="maml:computerOutputInline"/>
- <element ref="maml:ui"/>
- <element ref="maml:math"/>
- <element ref="maml:system"/>
- <element ref="maml:newTerm"/>
- <element ref="maml:placeholder"/>
- <element ref="maml:unmanagedCodeEntityReference"/>
- </choice>
- </group>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines the common reference types within + the Content Studio schema. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="base.xsd"/> + + <!-- element declarations --> + <element name="application" type="maml:textType"> + <annotation> + <documentation> + The application element describes the name of an application, + such as Microsoft Windows or Notepad. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="database" type="maml:textType"> + <annotation> + <documentation> + The database element describes a database. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="fictitiousUri"> + <annotation> + <documentation> + The fictitiousUri element describes a fictitious internet address, + such as a web or email address. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType> + <simpleContent> + <extension base="maml:textType"> + <attribute name="type"> + <simpleType> + <restriction base="token"> + <enumeration value="email"/> + <enumeration value="web"/> + <enumeration value="ftp"/> + </restriction> + </simpleType> + </attribute> + </extension> + </simpleContent> + </complexType> + </element> + + <element name="localUri"> + <annotation> + <documentation> + The localUri element describes the path of some local resource. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType> + <simpleContent> + <extension base="maml:textType"> + <attribute name="type"> + <simpleType> + <restriction base="token"> + <enumeration value="absolutePath"/> + <enumeration value="relativePath"/> + <enumeration value="registryKey"/> + <enumeration value="allUsersDocAndSettings"/> + <enumeration value="currentUserDocAndSettings"/> + <enumeration value="programFiles"/> + <enumeration value="Windows"/> + </restriction> + </simpleType> + </attribute> + </extension> + </simpleContent> + </complexType> + </element> + + <element name="environmentVariable" type="maml:textType"> + <annotation> + <documentation> + The environmentVariable element describes an environment variable in an operating system. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="errorInline" type="maml:textType"> + <annotation> + <documentation> + The errorInline element describes an error. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="hardware" type="maml:textType"> + <annotation> + <documentation> + The hardware element describes a physical part of a computer system. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="literal" type="maml:textType"> + <annotation> + <documentation> + The literal element describes a literal value. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="markup" type="maml:textType"> + <annotation> + <documentation> + The markup element describes a string of markup, such as TeX or XML. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="command"> + <annotation> + <documentation> + The command element describes the name of an executable or other software + application than can be run. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element name="replaceable" type="maml:textType"> + <annotation> + <documentation> + The replaceable element describes a part of a command or of a + function that must be replaced by the user. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + </choice> + </complexType> + </element> + + <element name="token" type="maml:textType"> + <annotation> + <documentation> + The token element describes a symbol that represents a grammatical construct + or is merely a link to something else. Tokens are particularly important + in lexical parsing. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="codeInline"> + <annotation> + <documentation> + The codeInline element describes a string of code of a particular computer language. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType mixed="true"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element name="legacyItalic" type="maml:textType" /> + <element name="codeFeaturedElement" type="maml:textType" /> + </choice> + </complexType> + + </element> + + <element name="languageKeyword" type="maml:textType"> + <annotation> + <documentation> + The languageKeyword element describes a keyword of a particular computer language. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="computerOutputInline" type="maml:textType"> + <annotation> + <documentation> + The computerOutputInline element describes output from either a console prompt + or from a UI form. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="ui" type="maml:textType"> + <annotation> + <documentation> + The ui element describes a user interface component. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="system" type="maml:textType"> + <annotation> + <documentation> + The system element describes any system commands (eg: command line switches, commands) + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="placeholder" type="maml:textType"> + <annotation> + <documentation> + This element is used as a placeholder. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="math" type="maml:textType"> + <annotation> + <documentation> + This element is used for any math equations, etc. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="newTerm" type="maml:textType"> + <annotation> + <documentation> + The newTerm element is used to introduce new technologies, etc + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="unmanagedCodeEntityReference" type="maml:textType"> + <annotation> + <documentation> + The unManagedCodeEntityReference element is used to refer to unmanaged code entities. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group declarations --> + <group name="inlineSoftwareGroup"> + <choice> + <element ref="maml:application"/> + <element ref="maml:database"/> + <element ref="maml:fictitiousUri"/> + <element ref="maml:localUri"/> + <element ref="maml:environmentVariable"/> + <element ref="maml:errorInline"/> + <element ref="maml:hardware"/> + <element ref="maml:literal"/> + <element ref="maml:markup"/> + <element ref="maml:command"/> + <element ref="maml:token"/> + <element ref="maml:codeInline"/> + <element ref="maml:languageKeyword"/> + <element ref="maml:computerOutputInline"/> + <element ref="maml:ui"/> + <element ref="maml:math"/> + <element ref="maml:system"/> + <element ref="maml:newTerm"/> + <element ref="maml:placeholder"/> + <element ref="maml:unmanagedCodeEntityReference"/> + </choice> + </group> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/inlineUi.xsd b/tools/Sandcastle/Schemas/Authoring/inlineUi.xsd index a87d77d..8960601 100644 --- a/tools/Sandcastle/Schemas/Authoring/inlineUi.xsd +++ b/tools/Sandcastle/Schemas/Authoring/inlineUi.xsd @@ -1,136 +1,136 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines the inline UI elements for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd" />
-
- <!-- element declarations -->
- <element name="button">
- <annotation>
- <documentation>
- The button element describes various types of buttons.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <simpleContent>
- <extension base="token">
- <attribute name="type" use="required">
- <simpleType>
- <restriction base="token">
- <enumeration value="leftMouseButton" />
- <enumeration value="middleMouseButton" />
- <enumeration value="rightMouseButton" />
- <enumeration value="macMouseButton" />
- <enumeration value="toolbarButton" />
- <enumeration value="dialogButton" />
- <enumeration value="genericButton" />
- </restriction>
- </simpleType>
- </attribute>
- </extension>
- </simpleContent>
- </complexType>
- </element>
-
- <element name="label" type="token">
- <annotation>
- <documentation>
- The label element describes the text of a label on a UI control.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="userInput" type="token">
- <annotation>
- <documentation>
- The userInput element describes data that is entered by the user.
- </documentation>
- <appinfo>
- <doc:localizable>false</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="userInputLocalizable" type="token">
- <annotation>
- <documentation>
- The ui element describes any localizable user input.
- </documentation>
- <appinfo>
- <doc:localizable>true</doc:localizable>
- <doc:type>character</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- attribute declarations -->
- <attributeGroup name="userInstructionGroup">
- <annotation>
- <documentation>
- This type is intended for use for describing user actions
- </documentation>
- </annotation>
- <attribute name="instruction">
- <annotation>
- <documentation>
- The action attribute describes a user action, via either
- key combination or mouse.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="token">
- <enumeration value="click" />
- <enumeration value="double-click" />
- <enumeration value="other" />
- <enumeration value="press" />
- <enumeration value="inSequence" />
- <enumeration value="simultaneously" />
- </restriction>
- </simpleType>
- </attribute>
- </attributeGroup>
-
- <!-- group declarations -->
- <group name="inlineUiGroup">
- <annotation>
- <documentation>
- This group is intended to be be used for referencing all base UI
- elements.
- </documentation>
- </annotation>
- <choice>
- <element ref="maml:userInput" />
- <element ref="maml:userInputLocalizable" />
- </choice>
- </group>
-
- <group name="userActionsGroup">
- <choice>
- <element ref="maml:button" />
- </choice>
- </group>
-
-</schema>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines the inline UI elements for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="base.xsd" /> + + <!-- element declarations --> + <element name="button"> + <annotation> + <documentation> + The button element describes various types of buttons. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + <complexType> + <simpleContent> + <extension base="token"> + <attribute name="type" use="required"> + <simpleType> + <restriction base="token"> + <enumeration value="leftMouseButton" /> + <enumeration value="middleMouseButton" /> + <enumeration value="rightMouseButton" /> + <enumeration value="macMouseButton" /> + <enumeration value="toolbarButton" /> + <enumeration value="dialogButton" /> + <enumeration value="genericButton" /> + </restriction> + </simpleType> + </attribute> + </extension> + </simpleContent> + </complexType> + </element> + + <element name="label" type="token"> + <annotation> + <documentation> + The label element describes the text of a label on a UI control. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="userInput" type="token"> + <annotation> + <documentation> + The userInput element describes data that is entered by the user. + </documentation> + <appinfo> + <doc:localizable>false</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <element name="userInputLocalizable" type="token"> + <annotation> + <documentation> + The ui element describes any localizable user input. + </documentation> + <appinfo> + <doc:localizable>true</doc:localizable> + <doc:type>character</doc:type> + </appinfo> + </annotation> + </element> + + <!-- attribute declarations --> + <attributeGroup name="userInstructionGroup"> + <annotation> + <documentation> + This type is intended for use for describing user actions + </documentation> + </annotation> + <attribute name="instruction"> + <annotation> + <documentation> + The action attribute describes a user action, via either + key combination or mouse. + </documentation> + </annotation> + <simpleType> + <restriction base="token"> + <enumeration value="click" /> + <enumeration value="double-click" /> + <enumeration value="other" /> + <enumeration value="press" /> + <enumeration value="inSequence" /> + <enumeration value="simultaneously" /> + </restriction> + </simpleType> + </attribute> + </attributeGroup> + + <!-- group declarations --> + <group name="inlineUiGroup"> + <annotation> + <documentation> + This group is intended to be be used for referencing all base UI + elements. + </documentation> + </annotation> + <choice> + <element ref="maml:userInput" /> + <element ref="maml:userInputLocalizable" /> + </choice> + </group> + + <group name="userActionsGroup"> + <choice> + <element ref="maml:button" /> + </choice> + </group> + +</schema> diff --git a/tools/Sandcastle/Schemas/Authoring/space.xsd b/tools/Sandcastle/Schemas/Authoring/space.xsd index b899b71..59e5371 100644 --- a/tools/Sandcastle/Schemas/Authoring/space.xsd +++ b/tools/Sandcastle/Schemas/Authoring/space.xsd @@ -1,13 +1,13 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/2001/XMLSchema" xml:lang="en">
-
- <attribute name="space" default="preserve">
- <simpleType>
- <restriction base="NCName">
- <enumeration value="default"/>
- <enumeration value="preserve"/>
- </restriction>
- </simpleType>
- </attribute>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns="http://www.w3.org/2001/XMLSchema" xml:lang="en"> + + <attribute name="space" default="preserve"> + <simpleType> + <restriction base="NCName"> + <enumeration value="default"/> + <enumeration value="preserve"/> + </restriction> + </simpleType> + </attribute> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/standardCodes.xsd b/tools/Sandcastle/Schemas/Authoring/standardCodes.xsd index 6399071..b6ca2f9 100644 --- a/tools/Sandcastle/Schemas/Authoring/standardCodes.xsd +++ b/tools/Sandcastle/Schemas/Authoring/standardCodes.xsd @@ -1,153 +1,153 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- > <!-- schema abstract -->
- <annotation>
- <documentation>
- This schema document provides language, country and locale types.
- The enumerations are programmatically generated from Taxonomy Services.
- </documentation>
- <documentation>author: Allan Revenig (allanr) Taxonomy Services</documentation>
- </annotation>
- <!-- Considered using the language type, but we cannot control it's enumerated values.-->
- <!-- simpleType definitions -->
- <simpleType name="isoLanguageCode" final="#all">
- <annotation>
- <documentation>An enumerated type containing a selection of 2 character ISO standard language codes.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="ar"/>
- <enumeration value="bg"/>
- <enumeration value="cs"/>
- <enumeration value="da"/>
- <enumeration value="de"/>
- <enumeration value="el"/>
- <enumeration value="en"/>
- <enumeration value="es"/>
- <enumeration value="fi"/>
- <enumeration value="fr"/>
- <enumeration value="he"/>
- <enumeration value="hr"/>
- <enumeration value="hu"/>
- <enumeration value="it"/>
- <enumeration value="ja"/>
- <enumeration value="ko"/>
- <enumeration value="nb"/>
- <enumeration value="nl"/>
- <enumeration value="pl"/>
- <enumeration value="pt"/>
- <enumeration value="ro"/>
- <enumeration value="ru"/>
- <enumeration value="sk"/>
- <enumeration value="sl"/>
- <enumeration value="sv"/>
- <enumeration value="th"/>
- <enumeration value="tr"/>
- <enumeration value="ur"/>
- <enumeration value="zh"/>
- </restriction>
- </simpleType>
- <simpleType name="isoCountryCode" final="#all">
- <annotation>
- <documentation>An enumerated type containing a selection of 2 character ISO standard country codes.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="AR"/>
- <enumeration value="AU"/>
- <enumeration value="BE"/>
- <enumeration value="BG"/>
- <enumeration value="BR"/>
- <enumeration value="CA"/>
- <enumeration value="CH"/>
- <enumeration value="CN"/>
- <enumeration value="CZ"/>
- <enumeration value="DE"/>
- <enumeration value="DK"/>
- <enumeration value="ES"/>
- <enumeration value="FI"/>
- <enumeration value="FR"/>
- <enumeration value="GB"/>
- <enumeration value="GR"/>
- <enumeration value="HK"/>
- <enumeration value="HR"/>
- <enumeration value="HU"/>
- <enumeration value="IL"/>
- <enumeration value="IN"/>
- <enumeration value="IT"/>
- <enumeration value="JP"/>
- <enumeration value="KR"/>
- <enumeration value="NL"/>
- <enumeration value="NO"/>
- <enumeration value="NZ"/>
- <enumeration value="PH"/>
- <enumeration value="PK"/>
- <enumeration value="PL"/>
- <enumeration value="PT"/>
- <enumeration value="RO"/>
- <enumeration value="RU"/>
- <enumeration value="SA"/>
- <enumeration value="SE"/>
- <enumeration value="SI"/>
- <enumeration value="SK"/>
- <enumeration value="TH"/>
- <enumeration value="TR"/>
- <enumeration value="TW"/>
- <enumeration value="US"/>
- <enumeration value="ZA"/>
- </restriction>
- </simpleType>
- <simpleType name="isoLocale" final="#all">
- <annotation>
- <documentation>A string that must match a specific pattern xx-XX, where x's are letters, representing a Locale.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="ar-SA"/>
- <enumeration value="bg-BG"/>
- <enumeration value="cs-CZ"/>
- <enumeration value="da-DK"/>
- <enumeration value="de-CH"/>
- <enumeration value="de-DE"/>
- <enumeration value="el-GR"/>
- <enumeration value="en-AU"/>
- <enumeration value="en-CA"/>
- <enumeration value="en-GB"/>
- <enumeration value="en-IN"/>
- <enumeration value="en-NZ"/>
- <enumeration value="en-PH"/>
- <enumeration value="en-US"/>
- <enumeration value="en-ZA"/>
- <enumeration value="es-AR"/>
- <enumeration value="es-ES"/>
- <enumeration value="fi-FI"/>
- <enumeration value="fr-BE"/>
- <enumeration value="fr-CA"/>
- <enumeration value="fr-CH"/>
- <enumeration value="fr-FR"/>
- <enumeration value="he-IL"/>
- <enumeration value="hr-HR"/>
- <enumeration value="hu-HU"/>
- <enumeration value="it-CH"/>
- <enumeration value="it-IT"/>
- <enumeration value="ja-JP"/>
- <enumeration value="ko-KR"/>
- <enumeration value="nb-NO"/>
- <enumeration value="nl-BE"/>
- <enumeration value="nl-NL"/>
- <enumeration value="pl-PL"/>
- <enumeration value="pt-BR"/>
- <enumeration value="pt-PT"/>
- <enumeration value="ro-RO"/>
- <enumeration value="ru-RU"/>
- <enumeration value="sk-SK"/>
- <enumeration value="sl-SI"/>
- <enumeration value="sv-SE"/>
- <enumeration value="th-TH"/>
- <enumeration value="tr-TR"/>
- <enumeration value="ur-PK"/>
- <enumeration value="zh-CN"/>
- <enumeration value="zh-HK"/>
- <enumeration value="zh-TW"/>
- </restriction>
- </simpleType>
-</schema>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > <!-- schema abstract --> + <annotation> + <documentation> + This schema document provides language, country and locale types. + The enumerations are programmatically generated from Taxonomy Services. + </documentation> + <documentation>author: Allan Revenig (allanr) Taxonomy Services</documentation> + </annotation> + <!-- Considered using the language type, but we cannot control it's enumerated values.--> + <!-- simpleType definitions --> + <simpleType name="isoLanguageCode" final="#all"> + <annotation> + <documentation>An enumerated type containing a selection of 2 character ISO standard language codes.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="ar"/> + <enumeration value="bg"/> + <enumeration value="cs"/> + <enumeration value="da"/> + <enumeration value="de"/> + <enumeration value="el"/> + <enumeration value="en"/> + <enumeration value="es"/> + <enumeration value="fi"/> + <enumeration value="fr"/> + <enumeration value="he"/> + <enumeration value="hr"/> + <enumeration value="hu"/> + <enumeration value="it"/> + <enumeration value="ja"/> + <enumeration value="ko"/> + <enumeration value="nb"/> + <enumeration value="nl"/> + <enumeration value="pl"/> + <enumeration value="pt"/> + <enumeration value="ro"/> + <enumeration value="ru"/> + <enumeration value="sk"/> + <enumeration value="sl"/> + <enumeration value="sv"/> + <enumeration value="th"/> + <enumeration value="tr"/> + <enumeration value="ur"/> + <enumeration value="zh"/> + </restriction> + </simpleType> + <simpleType name="isoCountryCode" final="#all"> + <annotation> + <documentation>An enumerated type containing a selection of 2 character ISO standard country codes.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="AR"/> + <enumeration value="AU"/> + <enumeration value="BE"/> + <enumeration value="BG"/> + <enumeration value="BR"/> + <enumeration value="CA"/> + <enumeration value="CH"/> + <enumeration value="CN"/> + <enumeration value="CZ"/> + <enumeration value="DE"/> + <enumeration value="DK"/> + <enumeration value="ES"/> + <enumeration value="FI"/> + <enumeration value="FR"/> + <enumeration value="GB"/> + <enumeration value="GR"/> + <enumeration value="HK"/> + <enumeration value="HR"/> + <enumeration value="HU"/> + <enumeration value="IL"/> + <enumeration value="IN"/> + <enumeration value="IT"/> + <enumeration value="JP"/> + <enumeration value="KR"/> + <enumeration value="NL"/> + <enumeration value="NO"/> + <enumeration value="NZ"/> + <enumeration value="PH"/> + <enumeration value="PK"/> + <enumeration value="PL"/> + <enumeration value="PT"/> + <enumeration value="RO"/> + <enumeration value="RU"/> + <enumeration value="SA"/> + <enumeration value="SE"/> + <enumeration value="SI"/> + <enumeration value="SK"/> + <enumeration value="TH"/> + <enumeration value="TR"/> + <enumeration value="TW"/> + <enumeration value="US"/> + <enumeration value="ZA"/> + </restriction> + </simpleType> + <simpleType name="isoLocale" final="#all"> + <annotation> + <documentation>A string that must match a specific pattern xx-XX, where x's are letters, representing a Locale.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="ar-SA"/> + <enumeration value="bg-BG"/> + <enumeration value="cs-CZ"/> + <enumeration value="da-DK"/> + <enumeration value="de-CH"/> + <enumeration value="de-DE"/> + <enumeration value="el-GR"/> + <enumeration value="en-AU"/> + <enumeration value="en-CA"/> + <enumeration value="en-GB"/> + <enumeration value="en-IN"/> + <enumeration value="en-NZ"/> + <enumeration value="en-PH"/> + <enumeration value="en-US"/> + <enumeration value="en-ZA"/> + <enumeration value="es-AR"/> + <enumeration value="es-ES"/> + <enumeration value="fi-FI"/> + <enumeration value="fr-BE"/> + <enumeration value="fr-CA"/> + <enumeration value="fr-CH"/> + <enumeration value="fr-FR"/> + <enumeration value="he-IL"/> + <enumeration value="hr-HR"/> + <enumeration value="hu-HU"/> + <enumeration value="it-CH"/> + <enumeration value="it-IT"/> + <enumeration value="ja-JP"/> + <enumeration value="ko-KR"/> + <enumeration value="nb-NO"/> + <enumeration value="nl-BE"/> + <enumeration value="nl-NL"/> + <enumeration value="pl-PL"/> + <enumeration value="pt-BR"/> + <enumeration value="pt-PT"/> + <enumeration value="ro-RO"/> + <enumeration value="ru-RU"/> + <enumeration value="sk-SK"/> + <enumeration value="sl-SI"/> + <enumeration value="sv-SE"/> + <enumeration value="th-TH"/> + <enumeration value="tr-TR"/> + <enumeration value="ur-PK"/> + <enumeration value="zh-CN"/> + <enumeration value="zh-HK"/> + <enumeration value="zh-TW"/> + </restriction> + </simpleType> +</schema> diff --git a/tools/Sandcastle/Schemas/Authoring/structure.xsd b/tools/Sandcastle/Schemas/Authoring/structure.xsd index d97d283..36c9bac 100644 --- a/tools/Sandcastle/Schemas/Authoring/structure.xsd +++ b/tools/Sandcastle/Schemas/Authoring/structure.xsd @@ -1,142 +1,142 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines common structure types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="conditionSet.xsd"/>
- <include schemaLocation="structureTable.xsd"/>
- <include schemaLocation="structureList.xsd"/>
- <include schemaLocation="structureProcedure.xsd"/>
- <include schemaLocation="structureMedia.xsd"/>
-
- <complexType name="conditionalSectionType">
- <sequence>
- <element ref="maml:conditions"/>
- <element name="conditionalContent" type="maml:sectionContentType"/>
- </sequence>
- </complexType>
-
- <complexType name="procedureSectionContentType" mixed="false">
- <sequence>
- <choice minOccurs="0" maxOccurs="unbounded">
- <!-- structureGroup minus procedure START -->
- <group ref="maml:blockGroup"/>
- <group ref="maml:structureListGroup"/>
- <element ref="maml:definitionTable"/>
- <element ref="maml:table"/>
- <group ref="maml:structureMediaGroup"/>
- <!-- structureGroup minus procedure END -->
- <element name="conditionalSection" type="maml:conditionalSectionType"/>
- </choice>
- <element ref="maml:procedure"/>
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:structureGroup"/>
- <element name="conditionalSection" type="maml:conditionalSectionType"/>
- </choice>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <!-- A procedure is required in this section, but not in child sections -->
- <complexType name="procedureSectionType">
- <sequence>
- <element ref="maml:title" minOccurs="0" maxOccurs="1"/>
- <element name="content" type="maml:procedureSectionContentType"/>
- <element ref="maml:sections" minOccurs="0" maxOccurs="1"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <complexType name="sectionContentType" mixed="false">
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:structureGroup"/>
- <element name="conditionalSection" type="maml:conditionalSectionType"/>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="content" type="maml:sectionContentType">
- <annotation>
- <documentation>
- This element holds authored content.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="definition" type="maml:sectionContentType">
- <annotation>
- <documentation>A single definition that goes with this entry</documentation>
- <appinfo><doc:localizable>n/a</doc:localizable></appinfo>
- </annotation>
- </element>
-
- <element name="definedTerm" type="maml:inlineType">
- <annotation>
- <documentation>A single item that is being defined</documentation>
- <appinfo><doc:localizable>true</doc:localizable></appinfo>
- </annotation>
- </element>
-
- <complexType name="definitionTableType" mixed="false">
- <sequence maxOccurs="unbounded">
- <element ref="maml:definedTerm"/>
- <element ref="maml:definition"/>
- </sequence>
- </complexType>
-
- <element name="definitionTable" type="maml:definitionTableType">
- <annotation>
- <documentation>
- This element is a two column table without a header or footer.
- The first column contains the item being defined, the second column
- contains the definition of the item.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <group name="structureGroup">
- <choice>
- <group ref="maml:blockGroup"/>
- <group ref="maml:structureListGroup"/>
- <element ref="maml:definitionTable"/>
- <element ref="maml:table"/>
- <element ref="maml:procedure"/>
- <group ref="maml:structureMediaGroup"/>
- </choice>
- </group>
-
- <group name="structureBasicGroup">
- <choice>
- <group ref="maml:blockGroup"/>
- <group ref="maml:structureListGroup"/>
- </choice>
- </group>
-
- <group name="structureSimpleGroup">
- <choice>
- <element ref="maml:para"/>
- <element ref="maml:list"/>
- </choice>
- </group>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines common structure types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="conditionSet.xsd"/> + <include schemaLocation="structureTable.xsd"/> + <include schemaLocation="structureList.xsd"/> + <include schemaLocation="structureProcedure.xsd"/> + <include schemaLocation="structureMedia.xsd"/> + + <complexType name="conditionalSectionType"> + <sequence> + <element ref="maml:conditions"/> + <element name="conditionalContent" type="maml:sectionContentType"/> + </sequence> + </complexType> + + <complexType name="procedureSectionContentType" mixed="false"> + <sequence> + <choice minOccurs="0" maxOccurs="unbounded"> + <!-- structureGroup minus procedure START --> + <group ref="maml:blockGroup"/> + <group ref="maml:structureListGroup"/> + <element ref="maml:definitionTable"/> + <element ref="maml:table"/> + <group ref="maml:structureMediaGroup"/> + <!-- structureGroup minus procedure END --> + <element name="conditionalSection" type="maml:conditionalSectionType"/> + </choice> + <element ref="maml:procedure"/> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:structureGroup"/> + <element name="conditionalSection" type="maml:conditionalSectionType"/> + </choice> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <!-- A procedure is required in this section, but not in child sections --> + <complexType name="procedureSectionType"> + <sequence> + <element ref="maml:title" minOccurs="0" maxOccurs="1"/> + <element name="content" type="maml:procedureSectionContentType"/> + <element ref="maml:sections" minOccurs="0" maxOccurs="1"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <complexType name="sectionContentType" mixed="false"> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:structureGroup"/> + <element name="conditionalSection" type="maml:conditionalSectionType"/> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="content" type="maml:sectionContentType"> + <annotation> + <documentation> + This element holds authored content. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="definition" type="maml:sectionContentType"> + <annotation> + <documentation>A single definition that goes with this entry</documentation> + <appinfo><doc:localizable>n/a</doc:localizable></appinfo> + </annotation> + </element> + + <element name="definedTerm" type="maml:inlineType"> + <annotation> + <documentation>A single item that is being defined</documentation> + <appinfo><doc:localizable>true</doc:localizable></appinfo> + </annotation> + </element> + + <complexType name="definitionTableType" mixed="false"> + <sequence maxOccurs="unbounded"> + <element ref="maml:definedTerm"/> + <element ref="maml:definition"/> + </sequence> + </complexType> + + <element name="definitionTable" type="maml:definitionTableType"> + <annotation> + <documentation> + This element is a two column table without a header or footer. + The first column contains the item being defined, the second column + contains the definition of the item. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <group name="structureGroup"> + <choice> + <group ref="maml:blockGroup"/> + <group ref="maml:structureListGroup"/> + <element ref="maml:definitionTable"/> + <element ref="maml:table"/> + <element ref="maml:procedure"/> + <group ref="maml:structureMediaGroup"/> + </choice> + </group> + + <group name="structureBasicGroup"> + <choice> + <group ref="maml:blockGroup"/> + <group ref="maml:structureListGroup"/> + </choice> + </group> + + <group name="structureSimpleGroup"> + <choice> + <element ref="maml:para"/> + <element ref="maml:list"/> + </choice> + </group> </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/structureList.xsd b/tools/Sandcastle/Schemas/Authoring/structureList.xsd index e92b5ca..41a35cf 100644 --- a/tools/Sandcastle/Schemas/Authoring/structureList.xsd +++ b/tools/Sandcastle/Schemas/Authoring/structureList.xsd @@ -1,89 +1,89 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines common structure types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd"/>
-
- <complexType name="listType" mixed="false">
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="maml:listItem"/>
- <element name="conditionalSection">
- <complexType>
- <sequence>
- <element ref="maml:conditions"/>
- <element name="conditionalContent" type="maml:listType"/>
- </sequence>
- </complexType>
- </element>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- <attribute name="class" use="required">
- <annotation>
- <documentation>
- The class attribute describes the type of list.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="string">
- <enumeration value="bullet"/>
- <enumeration value="nobullet"/>
- <enumeration value="ordered"/>
- </restriction>
- </simpleType>
- </attribute>
- </complexType>
-
- <!-- element declarations -->
- <element name="list" type="maml:listType">
- <annotation>
- <documentation>
- The list element describes content that should be displayed as a list.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="listItem" type="maml:sectionContentType">
- <annotation>
- <documentation>
- The listItem element describes an item within a list. The
- content of the listItem element will be treated as a unit.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group declarations -->
- <group name="structureListGroup">
- <annotation>
- <documentation>
- This group describes the common lists that can be used to describe
- list data.
- </documentation>
- </annotation>
- <choice>
- <element ref="maml:list"/>
- </choice>
- </group>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines common structure types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="base.xsd"/> + + <complexType name="listType" mixed="false"> + <choice minOccurs="1" maxOccurs="unbounded"> + <element ref="maml:listItem"/> + <element name="conditionalSection"> + <complexType> + <sequence> + <element ref="maml:conditions"/> + <element name="conditionalContent" type="maml:listType"/> + </sequence> + </complexType> + </element> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + <attribute name="class" use="required"> + <annotation> + <documentation> + The class attribute describes the type of list. + </documentation> + </annotation> + <simpleType> + <restriction base="string"> + <enumeration value="bullet"/> + <enumeration value="nobullet"/> + <enumeration value="ordered"/> + </restriction> + </simpleType> + </attribute> + </complexType> + + <!-- element declarations --> + <element name="list" type="maml:listType"> + <annotation> + <documentation> + The list element describes content that should be displayed as a list. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="listItem" type="maml:sectionContentType"> + <annotation> + <documentation> + The listItem element describes an item within a list. The + content of the listItem element will be treated as a unit. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group declarations --> + <group name="structureListGroup"> + <annotation> + <documentation> + This group describes the common lists that can be used to describe + list data. + </documentation> + </annotation> + <choice> + <element ref="maml:list"/> + </choice> + </group> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/structureMedia.xsd b/tools/Sandcastle/Schemas/Authoring/structureMedia.xsd index 0b7f654..f5fc900 100644 --- a/tools/Sandcastle/Schemas/Authoring/structureMedia.xsd +++ b/tools/Sandcastle/Schemas/Authoring/structureMedia.xsd @@ -1,41 +1,41 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- schema abstract -->
- <annotation>
- <documentation>
- This schema document provides the block media elements for the content framework schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
- <!-- include and import declarations -->
- <include schemaLocation="base.xsd"/>
-
- <!-- element declarations -->
- <element name="mediaLink" type="maml:mediaLinkType">
- <annotation>
- <documentation>The media element represents media objects of any type. It is intended as a placeholder for images, audio and video.
- The rendering program will be responsible to render the referenced object in a reasonable manner.</documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- group definitions -->
- <group name="structureMediaGroup">
- <annotation>
- <documentation>This group is intended to be used for referencing all block media elements.</documentation>
- </annotation>
- <choice>
- <element ref="maml:mediaLink"/>
- </choice>
- </group>
-</schema>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- schema abstract --> + <annotation> + <documentation> + This schema document provides the block media elements for the content framework schema. + This schema is part of the base layer. + </documentation> + </annotation> + <!-- include and import declarations --> + <include schemaLocation="base.xsd"/> + + <!-- element declarations --> + <element name="mediaLink" type="maml:mediaLinkType"> + <annotation> + <documentation>The media element represents media objects of any type. It is intended as a placeholder for images, audio and video. + The rendering program will be responsible to render the referenced object in a reasonable manner.</documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <!-- group definitions --> + <group name="structureMediaGroup"> + <annotation> + <documentation>This group is intended to be used for referencing all block media elements.</documentation> + </annotation> + <choice> + <element ref="maml:mediaLink"/> + </choice> + </group> +</schema> diff --git a/tools/Sandcastle/Schemas/Authoring/structureProcedure.xsd b/tools/Sandcastle/Schemas/Authoring/structureProcedure.xsd index c2dcc6a..88553e2 100644 --- a/tools/Sandcastle/Schemas/Authoring/structureProcedure.xsd +++ b/tools/Sandcastle/Schemas/Authoring/structureProcedure.xsd @@ -1,110 +1,110 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines common structure types for the CS Schema.
- This schema is part of the common layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="block.xsd"/>
-
-
- <group name="stepGroup">
- <choice>
- <element ref="maml:step"/>
- <element ref="maml:procedure"/>
- </choice>
- </group>
-
- <complexType name="stepsType" mixed="false">
- <choice minOccurs="0" maxOccurs="unbounded">
- <group ref="maml:stepGroup"/>
- <element name="conditionalSection">
- <complexType>
- <sequence>
- <element ref="maml:conditions"/>
- <element name="conditionalContent" type="maml:stepsType"/>
- </sequence>
- </complexType>
- </element>
- </choice>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- <attribute name="class" use="required">
- <annotation>
- <documentation>
- The class attribute describes the type of list.
- </documentation>
- </annotation>
- <simpleType>
- <restriction base="string">
- <enumeration value="bullet"/>
- <enumeration value="ordered"/>
- </restriction>
- </simpleType>
- </attribute>
- </complexType>
-
- <element name="steps" type="maml:stepsType">
- <annotation>
- <documentation>
- This element is a collection of steps in a procedure.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="procedureStepType" mixed="false">
- <sequence>
- <element ref="maml:content"/>
- <element ref="maml:steps" minOccurs="0"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="step" type="maml:procedureStepType">
- <annotation>
- <documentation>
- This element is a step in a procedure.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <complexType name="procedureType" mixed="false">
- <sequence>
- <element ref="maml:title"/>
- <element ref="maml:steps"/>
- <element ref="maml:conclusion" minOccurs="0"/>
- </sequence>
- <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/>
- </complexType>
-
- <element name="procedure" type="maml:procedureType">
- <annotation>
- <documentation>
- This element is the root of a procedure.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>section</doc:type>
- </appinfo>
- </annotation>
- </element>
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines common structure types for the CS Schema. + This schema is part of the common layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="block.xsd"/> + + + <group name="stepGroup"> + <choice> + <element ref="maml:step"/> + <element ref="maml:procedure"/> + </choice> + </group> + + <complexType name="stepsType" mixed="false"> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="maml:stepGroup"/> + <element name="conditionalSection"> + <complexType> + <sequence> + <element ref="maml:conditions"/> + <element name="conditionalContent" type="maml:stepsType"/> + </sequence> + </complexType> + </element> + </choice> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + <attribute name="class" use="required"> + <annotation> + <documentation> + The class attribute describes the type of list. + </documentation> + </annotation> + <simpleType> + <restriction base="string"> + <enumeration value="bullet"/> + <enumeration value="ordered"/> + </restriction> + </simpleType> + </attribute> + </complexType> + + <element name="steps" type="maml:stepsType"> + <annotation> + <documentation> + This element is a collection of steps in a procedure. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="procedureStepType" mixed="false"> + <sequence> + <element ref="maml:content"/> + <element ref="maml:steps" minOccurs="0"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="step" type="maml:procedureStepType"> + <annotation> + <documentation> + This element is a step in a procedure. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <complexType name="procedureType" mixed="false"> + <sequence> + <element ref="maml:title"/> + <element ref="maml:steps"/> + <element ref="maml:conclusion" minOccurs="0"/> + </sequence> + <attributeGroup ref="maml:contentIdentificationSharingAndConditionGroup"/> + </complexType> + + <element name="procedure" type="maml:procedureType"> + <annotation> + <documentation> + This element is the root of a procedure. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>section</doc:type> + </appinfo> + </annotation> + </element> + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/structureTable.xsd b/tools/Sandcastle/Schemas/Authoring/structureTable.xsd index bffaa85..29d1bba 100644 --- a/tools/Sandcastle/Schemas/Authoring/structureTable.xsd +++ b/tools/Sandcastle/Schemas/Authoring/structureTable.xsd @@ -1,96 +1,96 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- Schema documentation -->
- <annotation>
- <documentation>
- This schema definition defines common hierarchy types for the CS Schema.
- This schema is part of the base layer.
- </documentation>
- </annotation>
-
- <!-- include and import declarations -->
- <include schemaLocation="block.xsd"/>
-
- <!-- element declarations -->
- <element name="table">
- <annotation>
- <documentation>
- The table element describes a table model that is conformant to the CALS
- table model.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="maml:title" minOccurs="0"/>
- <element ref="maml:tableHeader" minOccurs="0"/>
- <element ref="maml:row" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="tableHeader" type="maml:tableHeaderType">
- <annotation>
- <documentation>
- The tableHeader element describes a table header.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <element name="row">
- <annotation>
- <documentation>
- The row element describes a row within a table.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- <complexType>
- <sequence>
- <element ref="maml:entry" maxOccurs="unbounded"/>
- </sequence>
- </complexType>
- </element>
-
- <element name="entry" type="maml:sectionContentType">
- <annotation>
- <documentation>
- The entry element describes an entry within a table.
- </documentation>
- <appinfo>
- <doc:localizable>n/a</doc:localizable>
- <doc:type>structure</doc:type>
- </appinfo>
- </annotation>
- </element>
-
- <!-- complexType declarations -->
- <complexType name="tableHeaderType">
- <annotation>
- <documentation>
- This type is intended for use as the children of table elements.
- </documentation>
- </annotation>
- <sequence>
- <element ref="maml:row" minOccurs="1" maxOccurs="1"/>
- </sequence>
- </complexType>
-
-
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:maml="http://ddue.schemas.microsoft.com/authoring/2003/5" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://ddue.schemas.microsoft.com/authoring/2003/5" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- Schema documentation --> + <annotation> + <documentation> + This schema definition defines common hierarchy types for the CS Schema. + This schema is part of the base layer. + </documentation> + </annotation> + + <!-- include and import declarations --> + <include schemaLocation="block.xsd"/> + + <!-- element declarations --> + <element name="table"> + <annotation> + <documentation> + The table element describes a table model that is conformant to the CALS + table model. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + <complexType> + <sequence> + <element ref="maml:title" minOccurs="0"/> + <element ref="maml:tableHeader" minOccurs="0"/> + <element ref="maml:row" maxOccurs="unbounded"/> + </sequence> + </complexType> + </element> + + <element name="tableHeader" type="maml:tableHeaderType"> + <annotation> + <documentation> + The tableHeader element describes a table header. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <element name="row"> + <annotation> + <documentation> + The row element describes a row within a table. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + <complexType> + <sequence> + <element ref="maml:entry" maxOccurs="unbounded"/> + </sequence> + </complexType> + </element> + + <element name="entry" type="maml:sectionContentType"> + <annotation> + <documentation> + The entry element describes an entry within a table. + </documentation> + <appinfo> + <doc:localizable>n/a</doc:localizable> + <doc:type>structure</doc:type> + </appinfo> + </annotation> + </element> + + <!-- complexType declarations --> + <complexType name="tableHeaderType"> + <annotation> + <documentation> + This type is intended for use as the children of table elements. + </documentation> + </annotation> + <sequence> + <element ref="maml:row" minOccurs="1" maxOccurs="1"/> + </sequence> + </complexType> + + </schema>
\ No newline at end of file diff --git a/tools/Sandcastle/Schemas/Authoring/xlink.xsd b/tools/Sandcastle/Schemas/Authoring/xlink.xsd index 852ac8e..d5c9766 100644 --- a/tools/Sandcastle/Schemas/Authoring/xlink.xsd +++ b/tools/Sandcastle/Schemas/Authoring/xlink.xsd @@ -1,219 +1,219 @@ -<?xml version="1.0" encoding="utf-8" ?>
-<schema xmlns="http://www.w3.org/2001/XMLSchema"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal"
- targetNamespace="http://www.w3.org/1999/xlink"
- elementFormDefault="qualified"
- attributeFormDefault="unqualified"
- >
-
- <!-- schema abstract -->
- <annotation>
- <documentation>
- This schema definition provides an XLink implementation for any schema.
- </documentation>
- </annotation>
- <!-- include and import declarations -->
- <include schemaLocation="standardCodes.xsd"/>
- <!-- element declarations -->
- <element name="simpleLink" type="xlink:simpleLinkType"/>
- <element name="extendedLink" type="xlink:extendedLinkType"/>
- <!-- attribute declarations -->
- <!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ -->
- <attribute name="type" type="xlink:basicLinkType"/>
- <attribute name="href" type="xlink:hrefType"/>
- <attribute name="role" type="xlink:roleType"/>
- <attribute name="arcrole" type="xlink:arcroleType"/>
- <attribute name="title" type="xlink:simpleTitleType"/>
- <attribute name="show" type="xlink:showType"/>
- <attribute name="actuate" type="xlink:actuateType"/>
- <attribute name="label" type="xlink:labelType"/>
- <attribute name="from" type="xlink:fromType"/>
- <attribute name="to" type="xlink:toType"/>
- <!-- attributeGroup definitions -->
- <attributeGroup name="simpleLinkGroup">
- <attribute ref="xlink:type" fixed="simple"/>
- <attribute ref="xlink:href"/>
- <attribute ref="xlink:role"/>
- <attribute ref="xlink:arcrole"/>
- <attribute ref="xlink:title"/>
- <attribute ref="xlink:show"/>
- <attribute ref="xlink:actuate"/>
- </attributeGroup>
- <attributeGroup name="extendedLinkGroup">
- <attribute ref="xlink:type" fixed="extended"/>
- <attribute ref="xlink:role"/>
- <attribute ref="xlink:title"/>
- <!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ -->
- </attributeGroup>
- <attributeGroup name="locatorGroup">
- <attribute ref="xlink:type" fixed="locator"/>
- <attribute ref="xlink:href" use="required"/>
- <attribute ref="xlink:role"/>
- <attribute ref="xlink:title"/>
- <attribute ref="xlink:label"/>
- </attributeGroup>
- <attributeGroup name="arcGroup">
- <attribute ref="xlink:type" fixed="arc"/>
- <attribute ref="xlink:arcrole"/>
- <attribute ref="xlink:title"/>
- <attribute ref="xlink:show"/>
- <attribute ref="xlink:actuate"/>
- <attribute ref="xlink:from"/>
- <attribute ref="xlink:to"/>
- </attributeGroup>
- <attributeGroup name="resourceGroup">
- <attribute ref="xlink:type" fixed="resource"/>
- <attribute ref="xlink:role"/>
- <attribute ref="xlink:title"/>
- <attribute ref="xlink:label"/>
- </attributeGroup>
- <attributeGroup name="titleGroup">
- <attribute ref="xlink:type" fixed="title"/>
- <attribute name="lang" type="xlink:isoLanguageCode"/>
- </attributeGroup>
- <!-- complexType definitions -->
- <complexType name="simpleLinkType" final="restriction" mixed="true">
- <annotation>
- <documentation>Offers a shorthand syntax for a common kind of link, an outbound link with exactly two participating resources.</documentation>
- </annotation>
- <attributeGroup ref="xlink:simpleLinkGroup"/>
- </complexType>
- <complexType name="extendedLinkType" final="restriction" mixed="true">
- <annotation>
- <documentation>Offers full XLink functionality, such as inbound and third-party arcs, as well as links that have arbitrary numbers of participating resources. As a result, the structure of complex links can be fairly complex, including elements for pointing to remote resources, elements for containing local resources, elements for specifying arc traversal rules, and elements for specifying human-readable resource and arc titles.</documentation>
- </annotation>
- <choice minOccurs="0" maxOccurs="unbounded">
- <element name="title" type="xlink:titleType"/>
- <element name="resource" type="xlink:resourceType"/>
- <element name="locator" type="xlink:locatorType"/>
- <element name="arc" type="xlink:arcType"/>
- </choice>
- <attributeGroup ref="xlink:extendedLinkGroup"/>
- </complexType>
- <complexType name="locatorType">
- <annotation>
- <documentation>Address the remote resources participating in the link</documentation>
- </annotation>
- <sequence>
- <element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attributeGroup ref="xlink:locatorGroup"/>
- </complexType>
- <complexType name="arcType">
- <annotation>
- <documentation>Provide traversal rules among the link's participating resources.</documentation>
- </annotation>
- <sequence>
- <element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/>
- </sequence>
- <attributeGroup ref="xlink:arcGroup"/>
- </complexType>
- <complexType name="resourceType" mixed="true">
- <annotation>
- <documentation>Supply local resources that participate in the link.</documentation>
- </annotation>
- <attributeGroup ref="xlink:resourceGroup"/>
- </complexType>
- <complexType name="titleType" mixed="true">
- <annotation>
- <documentation>Provide human-readable labels for the link.</documentation>
- </annotation>
- <attributeGroup ref="xlink:titleGroup"/>
- </complexType>
- <!-- simpleType definitions -->
- <simpleType name="basicLinkType" final="#all">
- <annotation>
- <documentation>XLink conformant elements must contain a type attribute. This is it's definition.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="simple"/>
- <enumeration value="extended"/>
- <enumeration value="locator"/>
- <enumeration value="arc"/>
- <enumeration value="resource"/>
- <enumeration value="title"/>
- <enumeration value="none"/>
- </restriction>
- </simpleType>
- <simpleType name="hrefType">
- <annotation>
- <documentation/>
- </annotation>
- <restriction base="anyURI"/>
- </simpleType>
- <!-- ##### attribute name="role" type="anyURI" ##### tokenS? multi? ##### -->
- <simpleType name="roleType">
- <annotation>
- <documentation/>
- </annotation>
- <restriction base="token">
- <enumeration value="transform"/>
- <enumeration value="passThrough"/>
-
- </restriction>
- </simpleType>
- <!-- ##### attribute name="arcrole" type="anyURI" ##### -->
- <simpleType name="arcroleType">
- <annotation>
- <documentation>arcroleType definition. Value MUST be a URI reference as defined in IETF RFC 2396, except if the URI shceme used is allowed to have absolute and relative forms, the URI portion MUST be absolute. The URI reference identifys some resource that describes the intended property. When no value is supplied, no particular role value is to be inferred</documentation>
- </annotation>
- <restriction base="string"/>
- </simpleType>
- <simpleType name="simpleTitleType">
- <annotation>
- <documentation>titleType definition. Used to describe the meaning of a link or resource in a human-readable fashion, along the same lines as a ROLE or ARCROLE attribute (see roleType and arcroleType definitions). A value is optional; if a value is supplied, it SHOULD contain a string that describes the resource or link. The value MAY be used to make titles available to applications used by visually impaired users, or to create a table of links, or to present help text that appears when a user lets a mouse pointer hover over a starting resource.</documentation>
- </annotation>
- <restriction base="string"/>
- </simpleType>
- <simpleType name="showType">
- <annotation>
- <documentation>Defines possible values for show attribute.</documentation>
- <documentation>new: Application SHOULD load the resource in a new window, frame, pane, or other relevant presentation context.</documentation>
- <documentation>replace: Application SHOULD load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</documentation>
- <documentation>embed: Application SHOULD load the resource presentation in place of the presentation of the starting resource.</documentation>
- <documentation>other: Behavior of the application is unconstrained by the XLink spec. The application SHOULD look for other markup present in the link to determine the appropriate behavior.</documentation>
- <documentation>none: Behavior of the application is unconstrained by the XLink spec. No other markup is present to help the application determine the appropriate behavior.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="new"/>
- <enumeration value="replace"/>
- <enumeration value="embed"/>
- <enumeration value="other"/>
- <enumeration value="none"/>
- </restriction>
- </simpleType>
- <simpleType name="actuateType">
- <annotation>
- <documentation>Defines possible values for actuate attribute</documentation>
- <documentation>onLoad: Application SHOULD traverse to the ending resource immediately on loading the starting resource.</documentation>
- <documentation>onRequest: Application SHOULD traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. An example might be when a user clicks on the presentation of the starting resource, or a software module finishes a countdown that precedes a redirect.</documentation>
- <documentation>other: The behavior of the application traversing to the ending resource is unconstrained by this specification. The application SHOULD look for other markup present in the link to determine the appropriate behaviour.</documentation>
- <documentation>none: The behavior of the application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</documentation>
- </annotation>
- <restriction base="token">
- <enumeration value="onLoad"/>
- <enumeration value="onRequest"/>
- <enumeration value="other"/>
- <enumeration value="none"/>
- </restriction>
- </simpleType>
- <simpleType name="labelType">
- <annotation>
- <documentation>labelType definition. If a 'from' or 'to' attribute value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'from' and 'to' type definitions.</documentation>
- </annotation>
- <restriction base="token"/>
- </simpleType>
- <simpleType name="fromType">
- <annotation>
- <documentation>fromType definition. If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'label' and 'to' type definitions.</documentation>
- </annotation>
- <restriction base="token"/>
- </simpleType>
- <simpleType name="toType">
- <annotation>
- <documentation>toType definition. If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'label' and 'from' type definitions.</documentation>
- </annotation>
- <restriction base="token"/>
- </simpleType>
-</schema>
+<?xml version="1.0" encoding="utf-8" ?> +<schema xmlns="http://www.w3.org/2001/XMLSchema" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:doc="http://ddue.schemas.microsoft.com/authoring/internal" + targetNamespace="http://www.w3.org/1999/xlink" + elementFormDefault="qualified" + attributeFormDefault="unqualified" + > + + <!-- schema abstract --> + <annotation> + <documentation> + This schema definition provides an XLink implementation for any schema. + </documentation> + </annotation> + <!-- include and import declarations --> + <include schemaLocation="standardCodes.xsd"/> + <!-- element declarations --> + <element name="simpleLink" type="xlink:simpleLinkType"/> + <element name="extendedLink" type="xlink:extendedLinkType"/> + <!-- attribute declarations --> + <!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ --> + <attribute name="type" type="xlink:basicLinkType"/> + <attribute name="href" type="xlink:hrefType"/> + <attribute name="role" type="xlink:roleType"/> + <attribute name="arcrole" type="xlink:arcroleType"/> + <attribute name="title" type="xlink:simpleTitleType"/> + <attribute name="show" type="xlink:showType"/> + <attribute name="actuate" type="xlink:actuateType"/> + <attribute name="label" type="xlink:labelType"/> + <attribute name="from" type="xlink:fromType"/> + <attribute name="to" type="xlink:toType"/> + <!-- attributeGroup definitions --> + <attributeGroup name="simpleLinkGroup"> + <attribute ref="xlink:type" fixed="simple"/> + <attribute ref="xlink:href"/> + <attribute ref="xlink:role"/> + <attribute ref="xlink:arcrole"/> + <attribute ref="xlink:title"/> + <attribute ref="xlink:show"/> + <attribute ref="xlink:actuate"/> + </attributeGroup> + <attributeGroup name="extendedLinkGroup"> + <attribute ref="xlink:type" fixed="extended"/> + <attribute ref="xlink:role"/> + <attribute ref="xlink:title"/> + <!-- attribute name="xmlns:xlink" type="string" fixed="http://www.w3.org/1999/xlink"/ --> + </attributeGroup> + <attributeGroup name="locatorGroup"> + <attribute ref="xlink:type" fixed="locator"/> + <attribute ref="xlink:href" use="required"/> + <attribute ref="xlink:role"/> + <attribute ref="xlink:title"/> + <attribute ref="xlink:label"/> + </attributeGroup> + <attributeGroup name="arcGroup"> + <attribute ref="xlink:type" fixed="arc"/> + <attribute ref="xlink:arcrole"/> + <attribute ref="xlink:title"/> + <attribute ref="xlink:show"/> + <attribute ref="xlink:actuate"/> + <attribute ref="xlink:from"/> + <attribute ref="xlink:to"/> + </attributeGroup> + <attributeGroup name="resourceGroup"> + <attribute ref="xlink:type" fixed="resource"/> + <attribute ref="xlink:role"/> + <attribute ref="xlink:title"/> + <attribute ref="xlink:label"/> + </attributeGroup> + <attributeGroup name="titleGroup"> + <attribute ref="xlink:type" fixed="title"/> + <attribute name="lang" type="xlink:isoLanguageCode"/> + </attributeGroup> + <!-- complexType definitions --> + <complexType name="simpleLinkType" final="restriction" mixed="true"> + <annotation> + <documentation>Offers a shorthand syntax for a common kind of link, an outbound link with exactly two participating resources.</documentation> + </annotation> + <attributeGroup ref="xlink:simpleLinkGroup"/> + </complexType> + <complexType name="extendedLinkType" final="restriction" mixed="true"> + <annotation> + <documentation>Offers full XLink functionality, such as inbound and third-party arcs, as well as links that have arbitrary numbers of participating resources. As a result, the structure of complex links can be fairly complex, including elements for pointing to remote resources, elements for containing local resources, elements for specifying arc traversal rules, and elements for specifying human-readable resource and arc titles.</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <element name="title" type="xlink:titleType"/> + <element name="resource" type="xlink:resourceType"/> + <element name="locator" type="xlink:locatorType"/> + <element name="arc" type="xlink:arcType"/> + </choice> + <attributeGroup ref="xlink:extendedLinkGroup"/> + </complexType> + <complexType name="locatorType"> + <annotation> + <documentation>Address the remote resources participating in the link</documentation> + </annotation> + <sequence> + <element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attributeGroup ref="xlink:locatorGroup"/> + </complexType> + <complexType name="arcType"> + <annotation> + <documentation>Provide traversal rules among the link's participating resources.</documentation> + </annotation> + <sequence> + <element name="title" type="xlink:titleType" minOccurs="0" maxOccurs="unbounded"/> + </sequence> + <attributeGroup ref="xlink:arcGroup"/> + </complexType> + <complexType name="resourceType" mixed="true"> + <annotation> + <documentation>Supply local resources that participate in the link.</documentation> + </annotation> + <attributeGroup ref="xlink:resourceGroup"/> + </complexType> + <complexType name="titleType" mixed="true"> + <annotation> + <documentation>Provide human-readable labels for the link.</documentation> + </annotation> + <attributeGroup ref="xlink:titleGroup"/> + </complexType> + <!-- simpleType definitions --> + <simpleType name="basicLinkType" final="#all"> + <annotation> + <documentation>XLink conformant elements must contain a type attribute. This is it's definition.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="simple"/> + <enumeration value="extended"/> + <enumeration value="locator"/> + <enumeration value="arc"/> + <enumeration value="resource"/> + <enumeration value="title"/> + <enumeration value="none"/> + </restriction> + </simpleType> + <simpleType name="hrefType"> + <annotation> + <documentation/> + </annotation> + <restriction base="anyURI"/> + </simpleType> + <!-- ##### attribute name="role" type="anyURI" ##### tokenS? multi? ##### --> + <simpleType name="roleType"> + <annotation> + <documentation/> + </annotation> + <restriction base="token"> + <enumeration value="transform"/> + <enumeration value="passThrough"/> + + </restriction> + </simpleType> + <!-- ##### attribute name="arcrole" type="anyURI" ##### --> + <simpleType name="arcroleType"> + <annotation> + <documentation>arcroleType definition. Value MUST be a URI reference as defined in IETF RFC 2396, except if the URI shceme used is allowed to have absolute and relative forms, the URI portion MUST be absolute. The URI reference identifys some resource that describes the intended property. When no value is supplied, no particular role value is to be inferred</documentation> + </annotation> + <restriction base="string"/> + </simpleType> + <simpleType name="simpleTitleType"> + <annotation> + <documentation>titleType definition. Used to describe the meaning of a link or resource in a human-readable fashion, along the same lines as a ROLE or ARCROLE attribute (see roleType and arcroleType definitions). A value is optional; if a value is supplied, it SHOULD contain a string that describes the resource or link. The value MAY be used to make titles available to applications used by visually impaired users, or to create a table of links, or to present help text that appears when a user lets a mouse pointer hover over a starting resource.</documentation> + </annotation> + <restriction base="string"/> + </simpleType> + <simpleType name="showType"> + <annotation> + <documentation>Defines possible values for show attribute.</documentation> + <documentation>new: Application SHOULD load the resource in a new window, frame, pane, or other relevant presentation context.</documentation> + <documentation>replace: Application SHOULD load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.</documentation> + <documentation>embed: Application SHOULD load the resource presentation in place of the presentation of the starting resource.</documentation> + <documentation>other: Behavior of the application is unconstrained by the XLink spec. The application SHOULD look for other markup present in the link to determine the appropriate behavior.</documentation> + <documentation>none: Behavior of the application is unconstrained by the XLink spec. No other markup is present to help the application determine the appropriate behavior.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="new"/> + <enumeration value="replace"/> + <enumeration value="embed"/> + <enumeration value="other"/> + <enumeration value="none"/> + </restriction> + </simpleType> + <simpleType name="actuateType"> + <annotation> + <documentation>Defines possible values for actuate attribute</documentation> + <documentation>onLoad: Application SHOULD traverse to the ending resource immediately on loading the starting resource.</documentation> + <documentation>onRequest: Application SHOULD traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal. An example might be when a user clicks on the presentation of the starting resource, or a software module finishes a countdown that precedes a redirect.</documentation> + <documentation>other: The behavior of the application traversing to the ending resource is unconstrained by this specification. The application SHOULD look for other markup present in the link to determine the appropriate behaviour.</documentation> + <documentation>none: The behavior of the application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.</documentation> + </annotation> + <restriction base="token"> + <enumeration value="onLoad"/> + <enumeration value="onRequest"/> + <enumeration value="other"/> + <enumeration value="none"/> + </restriction> + </simpleType> + <simpleType name="labelType"> + <annotation> + <documentation>labelType definition. If a 'from' or 'to' attribute value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'from' and 'to' type definitions.</documentation> + </annotation> + <restriction base="token"/> + </simpleType> + <simpleType name="fromType"> + <annotation> + <documentation>fromType definition. If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'label' and 'to' type definitions.</documentation> + </annotation> + <restriction base="token"/> + </simpleType> + <simpleType name="toType"> + <annotation> + <documentation>toType definition. If a value is supplied, it MUST correspond to the same value for some 'label' attribute on a 'locator-' or 'resource-' type element that appears as a direct child inside the same extended-type element as does the arc-type element. See also 'label' and 'from' type definitions.</documentation> + </annotation> + <restriction base="token"/> + </simpleType> +</schema> diff --git a/tools/Sandcastle/Schemas/Reflection/reflection.xsd b/tools/Sandcastle/Schemas/Reflection/reflection.xsd index 5f8fe53..629b6b0 100644 --- a/tools/Sandcastle/Schemas/Reflection/reflection.xsd +++ b/tools/Sandcastle/Schemas/Reflection/reflection.xsd @@ -1,641 +1,641 @@ -<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
-
- <!-- Api elements -->
-
- <xsd:element name="reflection">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="assemblies" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="apis" minOccurs="1" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <!-- Assembly data -->
-
- <xsd:element name="assemblies">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="assembly" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="assembly">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="assemblydata" />
- <xsd:element ref="attributes" />
- </xsd:sequence>
- <xsd:attribute name="name" />
- <xsd:attribute name="version" />
- <xsd:attribute name="culture" />
- <xsd:attribute name="key" />
- <xsd:attribute name="hash" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="assemblydata">
- <xsd:complexType>
- <xsd:attribute name="version" />
- <xsd:attribute name="culture" />
- <xsd:attribute name="key" />
- <xsd:attribute name="hash" />
- </xsd:complexType>
- </xsd:element>
-
- <!-- Api data -->
-
- <xsd:element name="apis">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="api" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- <!-- uniqueness constraint can only be applied if duplicates are merged -->
- <!--
- <xsd:unique name="uniqueId">
- <xsd:selector xpath="api" />
- <xsd:field xpath="@id" />
- </xsd:unique>
--->
- </xsd:element>
-
- <xsd:element name="api">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="apidata" minOccurs="1" maxOccurs="1" />
- <xsd:choice>
- <!-- namespace -->
- <xsd:sequence>
- <xsd:element ref="elements" minOccurs="0" />
- </xsd:sequence>
- <!-- type -->
- <xsd:sequence>
- <xsd:element ref="typedata" minOccurs="1" />
- <xsd:element ref="enumerationbase" minOccurs="0" />
- <xsd:element ref="family" minOccurs="0" />
- <xsd:element ref="templates" minOccurs="0" />
- <xsd:element ref="parameters" minOccurs="0" />
- <xsd:element ref="returns" minOccurs="0" />
- <xsd:element ref="implements" minOccurs="0" />
- <xsd:element ref="implementors" minOccurs="0" />
- <xsd:element ref="elements" minOccurs="0" />
- <xsd:element ref="containers" minOccurs="1" />
- </xsd:sequence>
- <!-- member -->
- <xsd:sequence>
- <xsd:element ref="memberdata" minOccurs="1" />
- <xsd:choice>
- <!-- field -->
- <xsd:sequence>
- <xsd:element name="fielddata" minOccurs="1" />
- <xsd:element ref="returns" minOccurs="1" />
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <!-- procedure-->
- <xsd:sequence>
- <xsd:element name="proceduredata" minOccurs="1" />
- <xsd:element ref="overrides" minOccurs="0" />
- <xsd:choice>
- <!-- method -->
- <xsd:sequence>
- <xsd:element ref="templates" minOccurs="0" />
- <xsd:element ref="parameters" minOccurs="0" />
- <xsd:element ref="returns" minOccurs="0" />
- </xsd:sequence>
- <!-- property -->
- <xsd:sequence>
- <xsd:element ref="propertydata" minOccurs="1" />
- <xsd:element ref="parameters" minOccurs="0" />
- <xsd:element ref="returns" minOccurs="1" />
- </xsd:sequence>
- <!-- event -->
- <xsd:sequence>
- <xsd:element ref="eventdata" minOccurs="1" />
- <xsd:element ref="eventhandler" minOccurs="1" />
- <xsd:element ref="eventargs" minOccurs="0" />
- </xsd:sequence>
- </xsd:choice>
- <xsd:element ref="implements" minOccurs="0" />
- </xsd:sequence>
- <!-- constructor -->
- <xsd:sequence>
- <xsd:element ref="parameters" minOccurs="0" />
- </xsd:sequence>
- </xsd:choice>
- <xsd:element ref="containers" minOccurs="1" />
- </xsd:sequence>
- </xsd:choice>
- <xsd:element ref="attributes" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="id" type="apiId" use="required" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:group name="memberContent">
- <xsd:sequence>
- <xsd:element name="apidata" minOccurs="1" />
- <xsd:element ref="memberdata" minOccurs="1" />
- <xsd:choice>
- <!-- field -->
- <xsd:sequence>
- <xsd:element name="fielddata" minOccurs="1" />
- <xsd:element ref="returns" minOccurs="1" />
- <xsd:element name="value" type="xsd:string" minOccurs="0" />
- </xsd:sequence>
- <!-- procedure-->
- <xsd:sequence>
- <xsd:element name="proceduredata" minOccurs="1" />
- <xsd:element ref="overrides" minOccurs="0" />
- <xsd:choice>
- <!-- method -->
- <xsd:sequence>
- <xsd:element ref="templates" minOccurs="0" />
- <xsd:element ref="parameters" minOccurs="0" />
- <xsd:element ref="returns" minOccurs="0" />
- </xsd:sequence>
- <!-- property -->
- <xsd:sequence>
- <xsd:element ref="propertydata" minOccurs="1" />
- <xsd:element ref="parameters" minOccurs="0" />
- <xsd:element ref="returns" minOccurs="1" />
- </xsd:sequence>
- <!-- event -->
- <xsd:sequence>
- <xsd:element ref="eventdata" minOccurs="1" />
- <xsd:element ref="eventhandler" minOccurs="1" />
- <xsd:element ref="eventargs" minOccurs="0" />
- </xsd:sequence>
- </xsd:choice>
- <xsd:element ref="implements" minOccurs="0" />
- </xsd:sequence>
- <!-- constructor -->
- <xsd:sequence>
- <xsd:element ref="parameters" minOccurs="0" />
- </xsd:sequence>
- </xsd:choice>
- <xsd:element ref="containers" minOccurs="1" />
- <xsd:element ref="attributes" minOccurs="0" />
- </xsd:sequence>
- </xsd:group>
-
- <xsd:complexType name="optionalApiInformation">
- <xsd:choice minOccurs="0">
- <xsd:group ref="memberContent" />
- </xsd:choice>
- </xsd:complexType>
-
- <!-- Identity and information elements -->
-
- <xsd:element name="apidata">
- <xsd:complexType>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- <xsd:attribute name="group" type="apiGroupType" use="required" />
- <xsd:attribute name="subgroup" type="apiSubgroupType" use="optional" />
- <xsd:attribute name="subsubgroup" type="apiSubsubgroupType" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="typedata">
- <xsd:complexType>
- <xsd:attribute name="visibility" type="visibilityType" use="required" />
- <xsd:attribute name="abstract" type="xsd:boolean" use="optional" />
- <xsd:attribute name="sealed" type="xsd:boolean" use="optional" />
- <xsd:attribute name="serializable" type="xsd:boolean" use="optional" />
- <xsd:attribute name="layout" type="xsd:string" use="optional" />
- <xsd:attribute name="format" type="xsd:string" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="fielddata">
- <xsd:complexType>
- <xsd:attribute name="literal" type="xsd:boolean" use="optional" />
- <xsd:attribute name="initonly" type="xsd:boolean" use="optional" />
- <xsd:attribute name="volatile" type="xsd:boolean" use="optional" />
- <xsd:attribute name="serialized" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="memberdata">
- <xsd:complexType>
- <xsd:attribute name="visibility" type="visibilityType" />
- <xsd:attribute name="static" type="xsd:boolean" use="optional" />
- <xsd:attribute name="special" type="xsd:boolean" use="optional" />
- <xsd:attribute name="default" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="proceduredata">
- <xsd:complexType>
- <xsd:attribute name="abstract" type="xsd:boolean" use="optional" />
- <xsd:attribute name="virtual" type="xsd:boolean" use="optional" />
- <xsd:attribute name="final" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="overrides">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="member" minOccurs="1" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="propertydata">
- <xsd:complexType>
- <xsd:attribute name="get" type="xsd:boolean" />
- <xsd:attribute name="set" type="xsd:boolean" />
- <xsd:attribute name="get-visibility" type="visibilityType" use="optional" />
- <xsd:attribute name="set-visibility" type="visibilityType" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="eventdata">
- <xsd:complexType>
- <xsd:attribute name="add" type="xsd:boolean" use="optional" />
- <xsd:attribute name="remove" type="xsd:boolean" use="optional" />
- <xsd:attribute name="call" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="enumerationbase" type="typeReference" />
-
- <xsd:element name="eventhandler" type="typeReference" />
-
- <xsd:element name="eventargs" type="typeReference" />
-
- <!-- Generic template parameters -->
-
- <xsd:element name="templates">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="template" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="template">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="constrained" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- <xsd:attribute name="api" type="xsd:string" use="optional" />
- <xsd:attribute name="index" type="xsd:string" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="constrained">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="type" minOccurs="0" maxOccurs="1" />
- <xsd:element ref="implements" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- <xsd:attribute name="ref" type="xsd:boolean" use="optional" />
- <xsd:attribute name="value" type="xsd:boolean" use="optional" />
- <xsd:attribute name="ctor" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
-
- <!-- Parameters and return values -->
-
- <xsd:element name="parameters">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="parameter">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:group ref="typeReferenceElements" minOccurs="1" />
- <xsd:group ref="valueReferenceElements" minOccurs="0" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- <xsd:attribute name="in" type="xsd:boolean" use="optional" />
- <xsd:attribute name="out" type="xsd:boolean" use="optional" />
- <xsd:attribute name="params" type="xsd:boolean" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="returns" type="typeReference" />
-
- <!-- Interface implementations -->
-
- <xsd:element name="implements">
- <xsd:complexType>
- <xsd:choice>
- <xsd:sequence>
- <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- <xsd:sequence>
- <xsd:element ref="member" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:choice>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="implementors" type="typeReferenceList" />
-
- <!-- Inheritance -->
-
- <xsd:element name="family">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="ancestors" minOccurs="0" />
- <xsd:element ref="descendents" minOccurs="0" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="ancestors">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="descendents">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <!-- Attributes -->
-
- <xsd:element name="attributes">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="attribute" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="attribute">
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="typeReference">
- <xsd:sequence>
- <xsd:element ref="argument" minOccurs="0" maxOccurs="unbounded" />
- <xsd:element ref="assignment" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="argument">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:group ref="typeReferenceElements" minOccurs="1" />
- <xsd:group ref="valueReferenceElements" minOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="assignment">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:group ref="typeReferenceElements" minOccurs="1" />
- <xsd:group ref="valueReferenceElements" minOccurs="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="required" />
- </xsd:complexType>
- </xsd:element>
-
- <!-- Containers -->
-
- <xsd:element name="containers">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="library" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="type" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:complexType name="typeContainers">
- <xsd:sequence>
- <xsd:element ref="library" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="type" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:complexType name="memberContainers">
- <xsd:sequence>
- <xsd:element ref="library" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" />
- <xsd:element ref="type" minOccurs="1" maxOccurs="1" />
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="library">
- <xsd:complexType>
- <xsd:attribute name="assembly" type="xsd:string" />
- <xsd:attribute name="module" type="xsd:string" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="outer" type="typeReferenceList" />
-
- <!-- Elements -->
-
- <xsd:element name="elements">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="element" minOccurs="0" maxOccurs="unbounded" />
- </xsd:sequence>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="element">
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="optionalApiInformation">
- <xsd:attribute name="api" type="apiId" use="optional" />
- <xsd:attribute name="target-api" type="apiId" use="optional" />
- <xsd:attribute name="display-api" type="apiId" use="optional" />
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
-
- <!-- references -->
-
- <xsd:element name="namespace">
- <xsd:complexType>
- <xsd:attribute name="api" type="namespaceId" use="required" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:group name="typeReferenceElements">
- <xsd:choice>
- <xsd:element ref="arrayOf" />
- <xsd:element name="pointerTo" type="typeReference" />
- <xsd:element name="referenceTo" type="typeReference" />
- <xsd:element ref="type" />
- <xsd:element ref="template" />
- </xsd:choice>
- </xsd:group>
-
- <xsd:complexType name="typeReference">
- <xsd:group ref="typeReferenceElements" />
- </xsd:complexType>
-
- <xsd:complexType name="typeReferenceList">
- <xsd:sequence minOccurs="1" maxOccurs="unbounded">
- <xsd:group ref="typeReferenceElements" />
- </xsd:sequence>
- </xsd:complexType>
-
- <xsd:element name="arrayOf">
- <xsd:complexType>
- <xsd:complexContent>
- <xsd:extension base="typeReference">
- <xsd:attribute name="rank" type="xsd:positiveInteger" use="required" />
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
- </xsd:element>
-
- <xsd:element name="type">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element name="optionalModifier" type="typeReference" minOccurs="0" maxOccurs="unbounded" />
- <xsd:element name="requiredModifier" type="typeReference" minOccurs="0" maxOccurs="unbounded" />
- <xsd:element ref="type" minOccurs="0" maxOccurs="1" />
- <xsd:element name="specialization" type="typeReferenceList" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- <xsd:attribute name="api" type="typeId" use="required" />
- <xsd:attribute name="ref" type="xsd:boolean" />
- </xsd:complexType>
- </xsd:element>
-
- <!-- <xsd:element name="specialization" type="typeReferenceList" /> -->
-
- <xsd:element name="member">
- <xsd:complexType>
- <xsd:sequence>
- <xsd:element ref="type" minOccurs="0" maxOccurs="1" />
- </xsd:sequence>
- <xsd:attribute name="name" type="xsd:string" use="optional" />
- <xsd:attribute name="api" type="xsd:string" use="optional" />
- <xsd:attribute name="target-api" type="xsd:string" use="optional" />
- <xsd:attribute name="display-api" type="xsd:string" use="optional" />
- </xsd:complexType>
- </xsd:element>
-
- <xsd:complexType name="valueReference">
- <xsd:complexContent>
- <xsd:extension base="typeReference">
- <xsd:choice>
- <xsd:element name="value" type="xsd:string" />
- <xsd:element name="typeValue" type="typeReference" />
- <xsd:element name="enumValue" />
- <xsd:element name="nullValue" />
- </xsd:choice>
- </xsd:extension>
- </xsd:complexContent>
- </xsd:complexType>
-
- <xsd:group name="valueReferenceElements">
- <xsd:choice>
- <xsd:element name="value" type="xsd:string" />
- <xsd:element name="typeValue" type="typeReference" />
- <xsd:element name="enumValue" />
- <xsd:element name="nullValue" />
- </xsd:choice>
- </xsd:group>
-
- <xsd:simpleType name="rootId">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="R:[_\w\.]+" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="namespaceId">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="N:([_\w]+\.)*[_\w]*" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="typeId">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="T:.+" />
- <!-- <xsd:pattern value="T:([_\w]+\.)*[_\w]+(\{.+\})?(@|\*|(\[\]))*" /> -->
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="fieldReference">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="F:(\w+\.)*[_\w]+(\{.+\})?\.\w+" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="memberId">
- <xsd:restriction base="xsd:string">
- <xsd:pattern value="[FMPE]:.+" />
- <!-- <xsd:pattern value="[FMPE]:(\w+\.)*[_\w]+(\{.+\})?\.([_\.\w<>,]+|#ctor)(\(.+\))?(~(\w+\.)*[_\w]+(\{.+\})?(@|\*|(\[\]))*)?" /> -->
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="apiId">
- <xsd:union memberTypes="rootId namespaceId typeId memberId" />
- </xsd:simpleType>
-
- <xsd:simpleType name="apiGroupType">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="namespace" />
- <xsd:enumeration value="type" />
- <xsd:enumeration value="member" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="apiSubgroupType">
- <xsd:restriction base="xsd:string">
- <!-- type subgroups -->
- <xsd:enumeration value="class" />
- <xsd:enumeration value="structure" />
- <xsd:enumeration value="interface" />
- <xsd:enumeration value="enumeration" />
- <xsd:enumeration value="delegate" />
- <!-- member subgroups -->
- <xsd:enumeration value="constructor" />
- <xsd:enumeration value="method" />
- <xsd:enumeration value="property" />
- <xsd:enumeration value="field" />
- <xsd:enumeration value="event" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <xsd:simpleType name="apiSubsubgroupType">
- <xsd:restriction base="xsd:string">
- <!-- method subsubgroups -->
- <xsd:enumeration value="operator" />
- </xsd:restriction>
- </xsd:simpleType>
-
-
- <xsd:simpleType name="visibilityType">
- <xsd:restriction base="xsd:string">
- <xsd:enumeration value="public" />
- <xsd:enumeration value="family" />
- <xsd:enumeration value="assembly" />
- <xsd:enumeration value="family or assembly" />
- <xsd:enumeration value="family and assembly" />
- <xsd:enumeration value="private" />
- </xsd:restriction>
- </xsd:simpleType>
-
- <!-- format, layout -->
-
-</xsd:schema>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + + <!-- Api elements --> + + <xsd:element name="reflection"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="assemblies" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="apis" minOccurs="1" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <!-- Assembly data --> + + <xsd:element name="assemblies"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="assembly" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="assembly"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="assemblydata" /> + <xsd:element ref="attributes" /> + </xsd:sequence> + <xsd:attribute name="name" /> + <xsd:attribute name="version" /> + <xsd:attribute name="culture" /> + <xsd:attribute name="key" /> + <xsd:attribute name="hash" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="assemblydata"> + <xsd:complexType> + <xsd:attribute name="version" /> + <xsd:attribute name="culture" /> + <xsd:attribute name="key" /> + <xsd:attribute name="hash" /> + </xsd:complexType> + </xsd:element> + + <!-- Api data --> + + <xsd:element name="apis"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="api" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + <!-- uniqueness constraint can only be applied if duplicates are merged --> + <!-- + <xsd:unique name="uniqueId"> + <xsd:selector xpath="api" /> + <xsd:field xpath="@id" /> + </xsd:unique> +--> + </xsd:element> + + <xsd:element name="api"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="apidata" minOccurs="1" maxOccurs="1" /> + <xsd:choice> + <!-- namespace --> + <xsd:sequence> + <xsd:element ref="elements" minOccurs="0" /> + </xsd:sequence> + <!-- type --> + <xsd:sequence> + <xsd:element ref="typedata" minOccurs="1" /> + <xsd:element ref="enumerationbase" minOccurs="0" /> + <xsd:element ref="family" minOccurs="0" /> + <xsd:element ref="templates" minOccurs="0" /> + <xsd:element ref="parameters" minOccurs="0" /> + <xsd:element ref="returns" minOccurs="0" /> + <xsd:element ref="implements" minOccurs="0" /> + <xsd:element ref="implementors" minOccurs="0" /> + <xsd:element ref="elements" minOccurs="0" /> + <xsd:element ref="containers" minOccurs="1" /> + </xsd:sequence> + <!-- member --> + <xsd:sequence> + <xsd:element ref="memberdata" minOccurs="1" /> + <xsd:choice> + <!-- field --> + <xsd:sequence> + <xsd:element name="fielddata" minOccurs="1" /> + <xsd:element ref="returns" minOccurs="1" /> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <!-- procedure--> + <xsd:sequence> + <xsd:element name="proceduredata" minOccurs="1" /> + <xsd:element ref="overrides" minOccurs="0" /> + <xsd:choice> + <!-- method --> + <xsd:sequence> + <xsd:element ref="templates" minOccurs="0" /> + <xsd:element ref="parameters" minOccurs="0" /> + <xsd:element ref="returns" minOccurs="0" /> + </xsd:sequence> + <!-- property --> + <xsd:sequence> + <xsd:element ref="propertydata" minOccurs="1" /> + <xsd:element ref="parameters" minOccurs="0" /> + <xsd:element ref="returns" minOccurs="1" /> + </xsd:sequence> + <!-- event --> + <xsd:sequence> + <xsd:element ref="eventdata" minOccurs="1" /> + <xsd:element ref="eventhandler" minOccurs="1" /> + <xsd:element ref="eventargs" minOccurs="0" /> + </xsd:sequence> + </xsd:choice> + <xsd:element ref="implements" minOccurs="0" /> + </xsd:sequence> + <!-- constructor --> + <xsd:sequence> + <xsd:element ref="parameters" minOccurs="0" /> + </xsd:sequence> + </xsd:choice> + <xsd:element ref="containers" minOccurs="1" /> + </xsd:sequence> + </xsd:choice> + <xsd:element ref="attributes" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="id" type="apiId" use="required" /> + </xsd:complexType> + </xsd:element> + + <xsd:group name="memberContent"> + <xsd:sequence> + <xsd:element name="apidata" minOccurs="1" /> + <xsd:element ref="memberdata" minOccurs="1" /> + <xsd:choice> + <!-- field --> + <xsd:sequence> + <xsd:element name="fielddata" minOccurs="1" /> + <xsd:element ref="returns" minOccurs="1" /> + <xsd:element name="value" type="xsd:string" minOccurs="0" /> + </xsd:sequence> + <!-- procedure--> + <xsd:sequence> + <xsd:element name="proceduredata" minOccurs="1" /> + <xsd:element ref="overrides" minOccurs="0" /> + <xsd:choice> + <!-- method --> + <xsd:sequence> + <xsd:element ref="templates" minOccurs="0" /> + <xsd:element ref="parameters" minOccurs="0" /> + <xsd:element ref="returns" minOccurs="0" /> + </xsd:sequence> + <!-- property --> + <xsd:sequence> + <xsd:element ref="propertydata" minOccurs="1" /> + <xsd:element ref="parameters" minOccurs="0" /> + <xsd:element ref="returns" minOccurs="1" /> + </xsd:sequence> + <!-- event --> + <xsd:sequence> + <xsd:element ref="eventdata" minOccurs="1" /> + <xsd:element ref="eventhandler" minOccurs="1" /> + <xsd:element ref="eventargs" minOccurs="0" /> + </xsd:sequence> + </xsd:choice> + <xsd:element ref="implements" minOccurs="0" /> + </xsd:sequence> + <!-- constructor --> + <xsd:sequence> + <xsd:element ref="parameters" minOccurs="0" /> + </xsd:sequence> + </xsd:choice> + <xsd:element ref="containers" minOccurs="1" /> + <xsd:element ref="attributes" minOccurs="0" /> + </xsd:sequence> + </xsd:group> + + <xsd:complexType name="optionalApiInformation"> + <xsd:choice minOccurs="0"> + <xsd:group ref="memberContent" /> + </xsd:choice> + </xsd:complexType> + + <!-- Identity and information elements --> + + <xsd:element name="apidata"> + <xsd:complexType> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="group" type="apiGroupType" use="required" /> + <xsd:attribute name="subgroup" type="apiSubgroupType" use="optional" /> + <xsd:attribute name="subsubgroup" type="apiSubsubgroupType" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="typedata"> + <xsd:complexType> + <xsd:attribute name="visibility" type="visibilityType" use="required" /> + <xsd:attribute name="abstract" type="xsd:boolean" use="optional" /> + <xsd:attribute name="sealed" type="xsd:boolean" use="optional" /> + <xsd:attribute name="serializable" type="xsd:boolean" use="optional" /> + <xsd:attribute name="layout" type="xsd:string" use="optional" /> + <xsd:attribute name="format" type="xsd:string" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="fielddata"> + <xsd:complexType> + <xsd:attribute name="literal" type="xsd:boolean" use="optional" /> + <xsd:attribute name="initonly" type="xsd:boolean" use="optional" /> + <xsd:attribute name="volatile" type="xsd:boolean" use="optional" /> + <xsd:attribute name="serialized" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="memberdata"> + <xsd:complexType> + <xsd:attribute name="visibility" type="visibilityType" /> + <xsd:attribute name="static" type="xsd:boolean" use="optional" /> + <xsd:attribute name="special" type="xsd:boolean" use="optional" /> + <xsd:attribute name="default" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="proceduredata"> + <xsd:complexType> + <xsd:attribute name="abstract" type="xsd:boolean" use="optional" /> + <xsd:attribute name="virtual" type="xsd:boolean" use="optional" /> + <xsd:attribute name="final" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="overrides"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="member" minOccurs="1" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="propertydata"> + <xsd:complexType> + <xsd:attribute name="get" type="xsd:boolean" /> + <xsd:attribute name="set" type="xsd:boolean" /> + <xsd:attribute name="get-visibility" type="visibilityType" use="optional" /> + <xsd:attribute name="set-visibility" type="visibilityType" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="eventdata"> + <xsd:complexType> + <xsd:attribute name="add" type="xsd:boolean" use="optional" /> + <xsd:attribute name="remove" type="xsd:boolean" use="optional" /> + <xsd:attribute name="call" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="enumerationbase" type="typeReference" /> + + <xsd:element name="eventhandler" type="typeReference" /> + + <xsd:element name="eventargs" type="typeReference" /> + + <!-- Generic template parameters --> + + <xsd:element name="templates"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="template" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="template"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="constrained" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="api" type="xsd:string" use="optional" /> + <xsd:attribute name="index" type="xsd:string" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="constrained"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="type" minOccurs="0" maxOccurs="1" /> + <xsd:element ref="implements" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="ref" type="xsd:boolean" use="optional" /> + <xsd:attribute name="value" type="xsd:boolean" use="optional" /> + <xsd:attribute name="ctor" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + + <!-- Parameters and return values --> + + <xsd:element name="parameters"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="parameter"> + <xsd:complexType> + <xsd:sequence> + <xsd:group ref="typeReferenceElements" minOccurs="1" /> + <xsd:group ref="valueReferenceElements" minOccurs="0" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + <xsd:attribute name="in" type="xsd:boolean" use="optional" /> + <xsd:attribute name="out" type="xsd:boolean" use="optional" /> + <xsd:attribute name="params" type="xsd:boolean" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="returns" type="typeReference" /> + + <!-- Interface implementations --> + + <xsd:element name="implements"> + <xsd:complexType> + <xsd:choice> + <xsd:sequence> + <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + <xsd:sequence> + <xsd:element ref="member" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:choice> + </xsd:complexType> + </xsd:element> + + <xsd:element name="implementors" type="typeReferenceList" /> + + <!-- Inheritance --> + + <xsd:element name="family"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="ancestors" minOccurs="0" /> + <xsd:element ref="descendents" minOccurs="0" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="ancestors"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="descendents"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="type" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <!-- Attributes --> + + <xsd:element name="attributes"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="attribute" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="attribute"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="typeReference"> + <xsd:sequence> + <xsd:element ref="argument" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element ref="assignment" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="argument"> + <xsd:complexType> + <xsd:sequence> + <xsd:group ref="typeReferenceElements" minOccurs="1" /> + <xsd:group ref="valueReferenceElements" minOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="assignment"> + <xsd:complexType> + <xsd:sequence> + <xsd:group ref="typeReferenceElements" minOccurs="1" /> + <xsd:group ref="valueReferenceElements" minOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="required" /> + </xsd:complexType> + </xsd:element> + + <!-- Containers --> + + <xsd:element name="containers"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="library" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="type" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="typeContainers"> + <xsd:sequence> + <xsd:element ref="library" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="type" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:complexType name="memberContainers"> + <xsd:sequence> + <xsd:element ref="library" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="namespace" minOccurs="1" maxOccurs="1" /> + <xsd:element ref="type" minOccurs="1" maxOccurs="1" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:element name="library"> + <xsd:complexType> + <xsd:attribute name="assembly" type="xsd:string" /> + <xsd:attribute name="module" type="xsd:string" /> + </xsd:complexType> + </xsd:element> + + <xsd:element name="outer" type="typeReferenceList" /> + + <!-- Elements --> + + <xsd:element name="elements"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="element" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> + + <xsd:element name="element"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="optionalApiInformation"> + <xsd:attribute name="api" type="apiId" use="optional" /> + <xsd:attribute name="target-api" type="apiId" use="optional" /> + <xsd:attribute name="display-api" type="apiId" use="optional" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <!-- references --> + + <xsd:element name="namespace"> + <xsd:complexType> + <xsd:attribute name="api" type="namespaceId" use="required" /> + </xsd:complexType> + </xsd:element> + + <xsd:group name="typeReferenceElements"> + <xsd:choice> + <xsd:element ref="arrayOf" /> + <xsd:element name="pointerTo" type="typeReference" /> + <xsd:element name="referenceTo" type="typeReference" /> + <xsd:element ref="type" /> + <xsd:element ref="template" /> + </xsd:choice> + </xsd:group> + + <xsd:complexType name="typeReference"> + <xsd:group ref="typeReferenceElements" /> + </xsd:complexType> + + <xsd:complexType name="typeReferenceList"> + <xsd:sequence minOccurs="1" maxOccurs="unbounded"> + <xsd:group ref="typeReferenceElements" /> + </xsd:sequence> + </xsd:complexType> + + <xsd:element name="arrayOf"> + <xsd:complexType> + <xsd:complexContent> + <xsd:extension base="typeReference"> + <xsd:attribute name="rank" type="xsd:positiveInteger" use="required" /> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + </xsd:element> + + <xsd:element name="type"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="optionalModifier" type="typeReference" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element name="requiredModifier" type="typeReference" minOccurs="0" maxOccurs="unbounded" /> + <xsd:element ref="type" minOccurs="0" maxOccurs="1" /> + <xsd:element name="specialization" type="typeReferenceList" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="api" type="typeId" use="required" /> + <xsd:attribute name="ref" type="xsd:boolean" /> + </xsd:complexType> + </xsd:element> + + <!-- <xsd:element name="specialization" type="typeReferenceList" /> --> + + <xsd:element name="member"> + <xsd:complexType> + <xsd:sequence> + <xsd:element ref="type" minOccurs="0" maxOccurs="1" /> + </xsd:sequence> + <xsd:attribute name="name" type="xsd:string" use="optional" /> + <xsd:attribute name="api" type="xsd:string" use="optional" /> + <xsd:attribute name="target-api" type="xsd:string" use="optional" /> + <xsd:attribute name="display-api" type="xsd:string" use="optional" /> + </xsd:complexType> + </xsd:element> + + <xsd:complexType name="valueReference"> + <xsd:complexContent> + <xsd:extension base="typeReference"> + <xsd:choice> + <xsd:element name="value" type="xsd:string" /> + <xsd:element name="typeValue" type="typeReference" /> + <xsd:element name="enumValue" /> + <xsd:element name="nullValue" /> + </xsd:choice> + </xsd:extension> + </xsd:complexContent> + </xsd:complexType> + + <xsd:group name="valueReferenceElements"> + <xsd:choice> + <xsd:element name="value" type="xsd:string" /> + <xsd:element name="typeValue" type="typeReference" /> + <xsd:element name="enumValue" /> + <xsd:element name="nullValue" /> + </xsd:choice> + </xsd:group> + + <xsd:simpleType name="rootId"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="R:[_\w\.]+" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="namespaceId"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="N:([_\w]+\.)*[_\w]*" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="typeId"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="T:.+" /> + <!-- <xsd:pattern value="T:([_\w]+\.)*[_\w]+(\{.+\})?(@|\*|(\[\]))*" /> --> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="fieldReference"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="F:(\w+\.)*[_\w]+(\{.+\})?\.\w+" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="memberId"> + <xsd:restriction base="xsd:string"> + <xsd:pattern value="[FMPE]:.+" /> + <!-- <xsd:pattern value="[FMPE]:(\w+\.)*[_\w]+(\{.+\})?\.([_\.\w<>,]+|#ctor)(\(.+\))?(~(\w+\.)*[_\w]+(\{.+\})?(@|\*|(\[\]))*)?" /> --> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="apiId"> + <xsd:union memberTypes="rootId namespaceId typeId memberId" /> + </xsd:simpleType> + + <xsd:simpleType name="apiGroupType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="namespace" /> + <xsd:enumeration value="type" /> + <xsd:enumeration value="member" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="apiSubgroupType"> + <xsd:restriction base="xsd:string"> + <!-- type subgroups --> + <xsd:enumeration value="class" /> + <xsd:enumeration value="structure" /> + <xsd:enumeration value="interface" /> + <xsd:enumeration value="enumeration" /> + <xsd:enumeration value="delegate" /> + <!-- member subgroups --> + <xsd:enumeration value="constructor" /> + <xsd:enumeration value="method" /> + <xsd:enumeration value="property" /> + <xsd:enumeration value="field" /> + <xsd:enumeration value="event" /> + </xsd:restriction> + </xsd:simpleType> + + <xsd:simpleType name="apiSubsubgroupType"> + <xsd:restriction base="xsd:string"> + <!-- method subsubgroups --> + <xsd:enumeration value="operator" /> + </xsd:restriction> + </xsd:simpleType> + + + <xsd:simpleType name="visibilityType"> + <xsd:restriction base="xsd:string"> + <xsd:enumeration value="public" /> + <xsd:enumeration value="family" /> + <xsd:enumeration value="assembly" /> + <xsd:enumeration value="family or assembly" /> + <xsd:enumeration value="family and assembly" /> + <xsd:enumeration value="private" /> + </xsd:restriction> + </xsd:simpleType> + + <!-- format, layout --> + +</xsd:schema> diff --git a/tools/libcheck/RefFiles/gacload.txt b/tools/libcheck/RefFiles/gacload.txt index 370a4eb..46c2264 100644 --- a/tools/libcheck/RefFiles/gacload.txt +++ b/tools/libcheck/RefFiles/gacload.txt @@ -1,2 +1,2 @@ -mscorlib.dll:mscorlib, version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-system.xml.dll:System.XML, version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+mscorlib.dll:mscorlib, version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 +system.xml.dll:System.XML, version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 diff --git a/tools/libcheck/RefFiles/header.txt b/tools/libcheck/RefFiles/header.txt index e1d210a..3f44254 100644 --- a/tools/libcheck/RefFiles/header.txt +++ b/tools/libcheck/RefFiles/header.txt @@ -1,14 +1,14 @@ -In the following table, you will find a list of API changes introduced into the .Net Framework since Beta 2 was released in July of 2001. The table in this summary page links directly to details about the changes made. To see the changes for a particular namespace, select the row for that namespace and click the Details button. You can then search that particular namespace for specific details on any changes that were made from Beta 2 to the release version of the product.
-<p>
-When viewing the changes for a particular namespace, please note the following:
-<p>
-<ul>
-<li>Breaking changes show up on specific reports in the color red. A breaking change is interpreted as any change which would require an existing user of a class or interface to change their code. Breaking changes include removing a class or member on that class, changing the parameters or the order of parameters passed to a method, or changing the name of a method.
-<li>Where a particular change is an inherited change, it shows up on the report with a blue, italicized i beside it.
-Inherited members are shown on all classes. While this means that the report indicates a high number of changes, these are often due to a high level change on one class or interface, which affected all implementing or inheriting class.
-<li>If the inheritance or implementation details for a class changes, then you can hover your mouse over the type name to see the changed implementation for that class, as a tooltip. In these situations, a prompt is displayed beneath the class names indicating that you can do this. If you see this prompt, it indicates that the implementation or inheritance signature for the class has changed.
-<li>If a member has been obsoleted but not yet removed, it is displayed on the report with the term "[Obsolete]" in front of it
-<li>If a literal value has changed (a constant whose value is embedded at compile time and therefore, changing it's value is a breaking change), then the change is captured in the report, and the pre, and post values of the literal are displayed in the report
-<li>If an assembly does not appear on the summary page, then no changes have been made in that assembly
-</ul>
+In the following table, you will find a list of API changes introduced into the .Net Framework since Beta 2 was released in July of 2001. The table in this summary page links directly to details about the changes made. To see the changes for a particular namespace, select the row for that namespace and click the Details button. You can then search that particular namespace for specific details on any changes that were made from Beta 2 to the release version of the product. +<p> +When viewing the changes for a particular namespace, please note the following: +<p> +<ul> +<li>Breaking changes show up on specific reports in the color red. A breaking change is interpreted as any change which would require an existing user of a class or interface to change their code. Breaking changes include removing a class or member on that class, changing the parameters or the order of parameters passed to a method, or changing the name of a method. +<li>Where a particular change is an inherited change, it shows up on the report with a blue, italicized i beside it. +Inherited members are shown on all classes. While this means that the report indicates a high number of changes, these are often due to a high level change on one class or interface, which affected all implementing or inheriting class. +<li>If the inheritance or implementation details for a class changes, then you can hover your mouse over the type name to see the changed implementation for that class, as a tooltip. In these situations, a prompt is displayed beneath the class names indicating that you can do this. If you see this prompt, it indicates that the implementation or inheritance signature for the class has changed. +<li>If a member has been obsoleted but not yet removed, it is displayed on the report with the term "[Obsolete]" in front of it +<li>If a literal value has changed (a constant whose value is embedded at compile time and therefore, changing it's value is a breaking change), then the change is captured in the report, and the pre, and post values of the literal are displayed in the report +<li>If an assembly does not appear on the summary page, then no changes have been made in that assembly +</ul> <hr>
\ No newline at end of file diff --git a/tools/libcheck/RefFiles/ignorefiles.txt b/tools/libcheck/RefFiles/ignorefiles.txt index 3351373..c72e8c6 100644 --- a/tools/libcheck/RefFiles/ignorefiles.txt +++ b/tools/libcheck/RefFiles/ignorefiles.txt @@ -1,86 +1,86 @@ -aspnet_filter.dll
-aspnetmmcext.dll
-aspnetnetmmcext.dll
-microsoft.win32.interop.dll
-system.componentmodel.design.dll
-system.configuration.install.dll
-alink.dll
-alinkui.dll
-aspnet_isapi.dll
-aspnet_perf.dll
-aspnet_rc.dll
-c_g18030.dll
-c1.dll
-c1xx.dll
-c2.dll
-catalog.dll
-compprov.dll
-corperfmonext.dll
-cscomp.dll
-cscompui.dll
-custommarshalers.dll
-diasymreader.dll
-envdte.dll
-eventlogmessages.dll
-fusion.dll
-gdiplus.dll
-installutillib.dll
-itircl.dll
-itss.dll
-isymwrapper.dll
-jsc.resources.dll
-mcxhndlr.dll
-microsoft.jscript.dll
-microsoft.jscript.resources.dll
-mscorcfg.dll
-mscordacwks.dll
-mscordbc.dll
-mscordbi.dll
-mscorie.dll
-mscorjit.dll
-mscorld.dll
-mscormmc.dll
-mscorpe.dll
-mscorrc.dll
-mscorsec.dll
-mscorsn.dll
-mscorsvc.dll
-mscorsvr.dll
-mscortim.dll
-mscorveh.dll
-mscorwks.dll
-msobj10.dll
-mspdb70.dll
-msvbautl.dll
-msvcp70.dll
-msvcr70.dll
-msvcr70d.dll
-msvcr71.dll
-msvcr71d.dll
-netfxcfg.dll
-netfxcfgprov.dll
-normalization.dll
-office.dll
-perfcounter.dll
-shfusion.dll
-shfusres.dll
-sos.dll
-system.data.objectspaces.dll
-system.enterpriseservices.dll
-system.enterpriseservices.wrapper.dll
-system.enterpriseservices.thunk.dll
-vbc7ui.dll
-vjsc.dll
-vjscor.dll
-vjsharpcodeprovider.dll
-vjslibcw.dll
-vjsnativ.dll
-VJSWfcBrowserStubLib.dll
-vjswfccw.dll
-vjswfchtml.dll
-vsavb7rt.dll
-vsavb7rtui.dll
-winet_utils.dll
-wminet_utils.dll
-wmisec.dll
-wmiutils.dll
+aspnet_filter.dll +aspnetmmcext.dll +aspnetnetmmcext.dll +microsoft.win32.interop.dll +system.componentmodel.design.dll +system.configuration.install.dll +alink.dll +alinkui.dll +aspnet_isapi.dll +aspnet_perf.dll +aspnet_rc.dll +c_g18030.dll +c1.dll +c1xx.dll +c2.dll +catalog.dll +compprov.dll +corperfmonext.dll +cscomp.dll +cscompui.dll +custommarshalers.dll +diasymreader.dll +envdte.dll +eventlogmessages.dll +fusion.dll +gdiplus.dll +installutillib.dll +itircl.dll +itss.dll +isymwrapper.dll +jsc.resources.dll +mcxhndlr.dll +microsoft.jscript.dll +microsoft.jscript.resources.dll +mscorcfg.dll +mscordacwks.dll +mscordbc.dll +mscordbi.dll +mscorie.dll +mscorjit.dll +mscorld.dll +mscormmc.dll +mscorpe.dll +mscorrc.dll +mscorsec.dll +mscorsn.dll +mscorsvc.dll +mscorsvr.dll +mscortim.dll +mscorveh.dll +mscorwks.dll +msobj10.dll +mspdb70.dll +msvbautl.dll +msvcp70.dll +msvcr70.dll +msvcr70d.dll +msvcr71.dll +msvcr71d.dll +netfxcfg.dll +netfxcfgprov.dll +normalization.dll +office.dll +perfcounter.dll +shfusion.dll +shfusres.dll +sos.dll +system.data.objectspaces.dll +system.enterpriseservices.dll +system.enterpriseservices.wrapper.dll +system.enterpriseservices.thunk.dll +vbc7ui.dll +vjsc.dll +vjscor.dll +vjsharpcodeprovider.dll +vjslibcw.dll +vjsnativ.dll +VJSWfcBrowserStubLib.dll +vjswfccw.dll +vjswfchtml.dll +vsavb7rt.dll +vsavb7rtui.dll +winet_utils.dll +wminet_utils.dll +wmisec.dll +wmiutils.dll diff --git a/tools/libcheck/RefFiles/splitNamespaces.txt b/tools/libcheck/RefFiles/splitNamespaces.txt index 0faacbc..c3d83f4 100644 --- a/tools/libcheck/RefFiles/splitNamespaces.txt +++ b/tools/libcheck/RefFiles/splitNamespaces.txt @@ -1,5 +1,5 @@ -System
-System.Web
-System.Web.UI.WebControls
-System.Windows.Forms
+System +System.Web +System.Web.UI.WebControls +System.Windows.Forms System.WinForms
\ No newline at end of file diff --git a/tools/libcheck/RefFiles/splitfiles.txt b/tools/libcheck/RefFiles/splitfiles.txt index b7917f6..82f8d02 100644 --- a/tools/libcheck/RefFiles/splitfiles.txt +++ b/tools/libcheck/RefFiles/splitfiles.txt @@ -1,23 +1,23 @@ -microsoft.visualstudio.vcprojectengine.dll
-microsoft.visualstudio.dll
-microsoft.visualbasic.compatibility.dll
-vjslib.dll
-vjssupuilib.dll
-vjswfc.dll
-microsoft.vsdesigner.dll
-mscorcfg.dll
-mscorlib.dll
-system.data.dll
-system.design.dll
-system.diagnostics.dll
-system.dll
-system.drawing.dll
-system.io.dll
-system.net.dll
-system.text.regularexpressions.dll
-system.timers.dll
-system.web.dll
-system.web.services.dll
-system.windows.forms.dll
-system.winforms.dll
-system.xml.dll
+microsoft.visualstudio.vcprojectengine.dll +microsoft.visualstudio.dll +microsoft.visualbasic.compatibility.dll +vjslib.dll +vjssupuilib.dll +vjswfc.dll +microsoft.vsdesigner.dll +mscorcfg.dll +mscorlib.dll +system.data.dll +system.design.dll +system.diagnostics.dll +system.dll +system.drawing.dll +system.io.dll +system.net.dll +system.text.regularexpressions.dll +system.timers.dll +system.web.dll +system.web.services.dll +system.windows.forms.dll +system.winforms.dll +system.xml.dll diff --git a/tools/libcheck/RefFiles/splitranges.txt b/tools/libcheck/RefFiles/splitranges.txt index 550c7ee..a563aff 100644 --- a/tools/libcheck/RefFiles/splitranges.txt +++ b/tools/libcheck/RefFiles/splitranges.txt @@ -1,149 +1,149 @@ -4 ,all,c
-4 ,all,d ,l
-4 ,all,m ,r
-4 ,all,s
-10,all,b
-10,all,ca ,cy
-10,all,cz ,dy
-10,all,dz ,j
-10,all,k ,l
-10,all,m ,pf
-10,all,pg ,r
-10,all,sa ,sy
-10,all,sz ,ty
-10,all,tz
-15,all,b
-15,all,c ,cg
-15,all,ch,cr
-15,all,cs,h
-15,all,i ,l
-15,all,m ,o
-15,all,p ,r
-15,all,s ,sd
-15,all,se,sg
-15,all,sh,sm
-15,all,sn,s
-15,all,t ,td
-15,all,te,tl
-15,all,tm,t
-15,all,u
-20,all,b
-20,all,c ,cg
-20,all,ch,ck
-20,all,cl,cr
-20,all,cs,d
-20,all,e,h
-20,all,i ,j
-20,all,k ,l
-20,all,m ,my
-20,all,mz,oy
-20,all,oz,qy
-20,all,qz,ry
-20,all,rz,sd
-20,all,se,sg
-20,all,sh,sm
-20,all,sn,s
-20,all,t ,td
-20,all,te,tl
-20,all,tm,t
-20,all,u
-20,mscorlib.dll,b
-20,mscorlib.dll,c ,cg
-20,mscorlib.dll,ch,ck
-20,mscorlib.dll,cl,cr
-20,mscorlib.dll,cs,d
-20,mscorlib.dll,e,h
-20,mscorlib.dll,i ,j
-20,mscorlib.dll,k ,l
-20,mscorlib.dll,m ,my
-20,mscorlib.dll,mz,oy
-20,mscorlib.dll,oz,qy
-20,mscorlib.dll,qz,ry
-20,mscorlib.dll,rz,sd
-20,mscorlib.dll,se,sg
-20,mscorlib.dll,sh,sm
-20,mscorlib.dll,sn,s
-20,mscorlib.dll,t ,td
-20,mscorlib.dll,te,tl
-20,mscorlib.dll,tm,t
-20,mscorlib.dll,u
-20,system.windows.forms.dll,bf
-20,system.windows.forms.dll,bg,cg
-20,system.windows.forms.dll,ch,ck
-20,system.windows.forms.dll,cl,cr
-20,system.windows.forms.dll,cs,d
-20,system.windows.forms.dll,e,h
-20,system.windows.forms.dll,i ,j
-20,system.windows.forms.dll,k ,l
-20,system.windows.forms.dll,m ,my
-20,system.windows.forms.dll,mz,oy
-20,system.windows.forms.dll,oz,qy
-20,system.windows.forms.dll,qz,ry
-20,system.windows.forms.dll,rz,sd
-20,system.windows.forms.dll,se,sg
-20,system.windows.forms.dll,sh,sm
-20,system.windows.forms.dll,sn,s
-20,system.windows.forms.dll,t ,td
-20,system.windows.forms.dll,te,tl
-20,system.windows.forms.dll,tm,t
-20,system.windows.forms.dll,u
-30,all,bf
-30,all,bg,cg
-30,all,ch,ck
-30,all,cl,cn
-30,all,co,cr
-30,all,cs,de
-30,all,df,d
-30,all,e ,f
-30,all,g ,h
-30,all,i ,j
-30,all,k ,k
-30,all,l ,l
-30,all,m ,n
-30,all,o ,o
-30,all,p ,pl
-30,all,pm,p
-30,all,q ,rf
-30,all,rg,r
-30,all,s ,sd
-30,all,se,sg
-30,all,sh,sm
-30,all,sn,s
-30,all,t ,td
-30,all,te,tg
-30,all,th,tl
-30,all,tm,tq
-30,all,tr,t
-30,all,u,v
-30,all,w,w
-30,all,x
-30,system.windows.forms.dll,bf
-30,system.windows.forms.dll,bg,cg
-30,system.windows.forms.dll,ch,ck
-30,system.windows.forms.dll,cl,com
-30,system.windows.forms.dll,con,cs
-30,system.windows.forms.dll,ct,de
-30,system.windows.forms.dll,df,d
-30,system.windows.forms.dll,e ,f
-30,system.windows.forms.dll,g ,h
-30,system.windows.forms.dll,i ,j
-30,system.windows.forms.dll,k ,k
-30,system.windows.forms.dll,l ,lir
-30,system.windows.forms.dll,lis,l
-30,system.windows.forms.dll,m ,n
-30,system.windows.forms.dll,o ,o
-30,system.windows.forms.dll,p ,pl
-30,system.windows.forms.dll,pm,p
-30,system.windows.forms.dll,q ,rf
-30,system.windows.forms.dll,rg,rm
-30,system.windows.forms.dll,rn,sa
-30,system.windows.forms.dll,sb,sd
-30,system.windows.forms.dll,se,sm
-30,system.windows.forms.dll,sn,s
-30,system.windows.forms.dll,t ,td
-30,system.windows.forms.dll,te,tg
-30,system.windows.forms.dll,th,tl
-30,system.windows.forms.dll,tm,tq
-30,system.windows.forms.dll,tr,t
-30,system.windows.forms.dll,u ,u
+4 ,all,c +4 ,all,d ,l +4 ,all,m ,r +4 ,all,s +10,all,b +10,all,ca ,cy +10,all,cz ,dy +10,all,dz ,j +10,all,k ,l +10,all,m ,pf +10,all,pg ,r +10,all,sa ,sy +10,all,sz ,ty +10,all,tz +15,all,b +15,all,c ,cg +15,all,ch,cr +15,all,cs,h +15,all,i ,l +15,all,m ,o +15,all,p ,r +15,all,s ,sd +15,all,se,sg +15,all,sh,sm +15,all,sn,s +15,all,t ,td +15,all,te,tl +15,all,tm,t +15,all,u +20,all,b +20,all,c ,cg +20,all,ch,ck +20,all,cl,cr +20,all,cs,d +20,all,e,h +20,all,i ,j +20,all,k ,l +20,all,m ,my +20,all,mz,oy +20,all,oz,qy +20,all,qz,ry +20,all,rz,sd +20,all,se,sg +20,all,sh,sm +20,all,sn,s +20,all,t ,td +20,all,te,tl +20,all,tm,t +20,all,u +20,mscorlib.dll,b +20,mscorlib.dll,c ,cg +20,mscorlib.dll,ch,ck +20,mscorlib.dll,cl,cr +20,mscorlib.dll,cs,d +20,mscorlib.dll,e,h +20,mscorlib.dll,i ,j +20,mscorlib.dll,k ,l +20,mscorlib.dll,m ,my +20,mscorlib.dll,mz,oy +20,mscorlib.dll,oz,qy +20,mscorlib.dll,qz,ry +20,mscorlib.dll,rz,sd +20,mscorlib.dll,se,sg +20,mscorlib.dll,sh,sm +20,mscorlib.dll,sn,s +20,mscorlib.dll,t ,td +20,mscorlib.dll,te,tl +20,mscorlib.dll,tm,t +20,mscorlib.dll,u +20,system.windows.forms.dll,bf +20,system.windows.forms.dll,bg,cg +20,system.windows.forms.dll,ch,ck +20,system.windows.forms.dll,cl,cr +20,system.windows.forms.dll,cs,d +20,system.windows.forms.dll,e,h +20,system.windows.forms.dll,i ,j +20,system.windows.forms.dll,k ,l +20,system.windows.forms.dll,m ,my +20,system.windows.forms.dll,mz,oy +20,system.windows.forms.dll,oz,qy +20,system.windows.forms.dll,qz,ry +20,system.windows.forms.dll,rz,sd +20,system.windows.forms.dll,se,sg +20,system.windows.forms.dll,sh,sm +20,system.windows.forms.dll,sn,s +20,system.windows.forms.dll,t ,td +20,system.windows.forms.dll,te,tl +20,system.windows.forms.dll,tm,t +20,system.windows.forms.dll,u +30,all,bf +30,all,bg,cg +30,all,ch,ck +30,all,cl,cn +30,all,co,cr +30,all,cs,de +30,all,df,d +30,all,e ,f +30,all,g ,h +30,all,i ,j +30,all,k ,k +30,all,l ,l +30,all,m ,n +30,all,o ,o +30,all,p ,pl +30,all,pm,p +30,all,q ,rf +30,all,rg,r +30,all,s ,sd +30,all,se,sg +30,all,sh,sm +30,all,sn,s +30,all,t ,td +30,all,te,tg +30,all,th,tl +30,all,tm,tq +30,all,tr,t +30,all,u,v +30,all,w,w +30,all,x +30,system.windows.forms.dll,bf +30,system.windows.forms.dll,bg,cg +30,system.windows.forms.dll,ch,ck +30,system.windows.forms.dll,cl,com +30,system.windows.forms.dll,con,cs +30,system.windows.forms.dll,ct,de +30,system.windows.forms.dll,df,d +30,system.windows.forms.dll,e ,f +30,system.windows.forms.dll,g ,h +30,system.windows.forms.dll,i ,j +30,system.windows.forms.dll,k ,k +30,system.windows.forms.dll,l ,lir +30,system.windows.forms.dll,lis,l +30,system.windows.forms.dll,m ,n +30,system.windows.forms.dll,o ,o +30,system.windows.forms.dll,p ,pl +30,system.windows.forms.dll,pm,p +30,system.windows.forms.dll,q ,rf +30,system.windows.forms.dll,rg,rm +30,system.windows.forms.dll,rn,sa +30,system.windows.forms.dll,sb,sd +30,system.windows.forms.dll,se,sm +30,system.windows.forms.dll,sn,s +30,system.windows.forms.dll,t ,td +30,system.windows.forms.dll,te,tg +30,system.windows.forms.dll,th,tl +30,system.windows.forms.dll,tm,tq +30,system.windows.forms.dll,tr,t +30,system.windows.forms.dll,u ,u 30,system.windows.forms.dll,v
\ No newline at end of file diff --git a/tools/libcheck/RefFiles/translations.txt b/tools/libcheck/RefFiles/translations.txt index 6f131a0..ab9e3cf 100644 --- a/tools/libcheck/RefFiles/translations.txt +++ b/tools/libcheck/RefFiles/translations.txt @@ -1,80 +1,80 @@ -//Accessibility
-Assembly,internal
-Family,protected
-FamOrAssem,protected internal
-Private,private
-Public,public
-FamAndAssem,protected
-PrivateSope,private, This should not be in the report - not publicly visible.
-
-Abstract,abstract
-Final,sealed
-InitOnly,readonly
-Literal,const
-NewSlot,new
-VtableLayoutMask,new, necessary because in MethodAttributes this is the same # as NewSlot.
-ReuseSlot,override
-Static,static
-Virtual,virtual
-
-//???,extern
-//???,override
-//???,ref
-//???,out
-
-//Remove these words
-SpecialName,
-RTSpecialName,
-
-//Types
-Void,void
-System.Void,void
-Object,object
-System.Object,object
-String,string
-System.String,string
-Boolean,bool
-System.Boolean,bool
-Char,char
-System.Char,char
-Byte,byte
-System.Byte,byte
-SByte,sbyte
-System.SByte,sbyte
-Int16,short
-System.Int16,short
-Int32,int
-System.Int32,int
-Int64,long
-System.Int64,long
-UInt16,ushort
-System.UInt16,ushort
-UInt32,uint
-System.UInt32,uint
-UInt64,ulong
-System.UInt64,ulong
-Single,float
-System.Single,float
-Double,double
-System.Double,double
-Decimal,decimal
-System.Decimal,decimal
-ValueType,struct
-System.ValueType,struct
-Enum,enum
-System.Enum,enum
-
-//Other keywords
-Class,class
-Interface,interface
-Protected,protected
-Internal,internal
-New,new
-Override,override
-Sealed,sealed
-Readonly,readonly
-Struct,struct
-Delegate,delegate
-Attribute,attribute
-ByRef,ref
+//Accessibility +Assembly,internal +Family,protected +FamOrAssem,protected internal +Private,private +Public,public +FamAndAssem,protected +PrivateSope,private, This should not be in the report - not publicly visible. + +Abstract,abstract +Final,sealed +InitOnly,readonly +Literal,const +NewSlot,new +VtableLayoutMask,new, necessary because in MethodAttributes this is the same # as NewSlot. +ReuseSlot,override +Static,static +Virtual,virtual + +//???,extern +//???,override +//???,ref +//???,out + +//Remove these words +SpecialName, +RTSpecialName, + +//Types +Void,void +System.Void,void +Object,object +System.Object,object +String,string +System.String,string +Boolean,bool +System.Boolean,bool +Char,char +System.Char,char +Byte,byte +System.Byte,byte +SByte,sbyte +System.SByte,sbyte +Int16,short +System.Int16,short +Int32,int +System.Int32,int +Int64,long +System.Int64,long +UInt16,ushort +System.UInt16,ushort +UInt32,uint +System.UInt32,uint +UInt64,ulong +System.UInt64,ulong +Single,float +System.Single,float +Double,double +System.Double,double +Decimal,decimal +System.Decimal,decimal +ValueType,struct +System.ValueType,struct +Enum,enum +System.Enum,enum + +//Other keywords +Class,class +Interface,interface +Protected,protected +Internal,internal +New,new +Override,override +Sealed,sealed +Readonly,readonly +Struct,struct +Delegate,delegate +Attribute,attribute +ByRef,ref Out,out
\ No newline at end of file |