summaryrefslogtreecommitdiffstats
path: root/tools/Sandcastle/Presentation/vs2005
diff options
context:
space:
mode:
Diffstat (limited to 'tools/Sandcastle/Presentation/vs2005')
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml4
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/feedBack_content.xml4
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml78
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml38
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js50
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js4
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js7
-rw-r--r--tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css9
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config117
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/reference-core-componentized.config374
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config373
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/reference.config344
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config66
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config66
-rw-r--r--tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config330
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp20.xsl143
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl183
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl112
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl25
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl289
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl217
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl817
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl (renamed from tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl)114
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl589
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/seeAlsoSection.xsl168
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl313
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl532
-rw-r--r--tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl34
28 files changed, 4208 insertions, 1192 deletions
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml
index 9063b63..50aef54 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/conceptual_content.xml
@@ -53,5 +53,9 @@
<p>This section contains the following subsections.</p>
</item>
<item id="RelatedTopicsLinkText">Related Topics</item>
+ <!-- resolve the autoOutline token -->
+ <item id="autoOutline">
+ <autoOutline/>
+ </item>
</content>
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/feedBack_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/feedBack_content.xml
index 6d3a068..2412a85 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/feedBack_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/feedBack_content.xml
@@ -4,6 +4,7 @@
<item id="fb_product"></item>
<item id="fb_deliverable"></item>
+ <item id="fb_subject">Customer%20Feedback</item>
<item id="fb_body"></item>
<item id="fb_headerFeedBack">Send Feedback</item>
@@ -17,6 +18,7 @@
<item id="feedback_fileVersion"></item>
<item id="feedback_topicVersion"></item>
<item id="feedback_body"></item>
+ <item id="feedback_subject"></item>
<item id="fb_Introduction">We value your feedback. To rate this topic and send feedback about this topic to the documentation team, click a rating, and then click <b>Send Feedback</b>. For assistance with support issues, refer to the technical support information included with the product.</item>
@@ -27,4 +29,4 @@
<item id="fb_Title">Documentation Feedback</item>
<item id="fb_altIcon">Display feedback instructions at the bottom of the page.</item>
-</content>
+</content> \ No newline at end of file
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
index 970abb0..dfd9de0 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/reference_content.xml
@@ -21,8 +21,15 @@
<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>
+ <!-- title for operator members -->
+ <item id="operatorTopicTitle">{0} Operator {1}</item>
+
+ <!-- title for op_explicit and op_implicit members -->
+ <item id="typeConversionTopicTitle">{0} Conversion {1}</item>
+ <!-- title for overload op_explicit and op_implicit topics -->
+ <item id="conversionOperatorTopicTitle">{0} Conversion Operators</item>
+
<item id="attachedPropertyTopicTitle">{0} Attached Property</item>
<item id="attachedEventTopicTitle">{0} Attached Event</item>
@@ -35,9 +42,17 @@
<!-- 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="MethodsTopicTitle">{0} Methods</item>
+
+ <!-- title for operator list topic that has [operators + no type conversions] -->
+ <item id="OperatorsTopicTitle">{0} Operators</item>
+ <!-- title for operator list topic that has [operators + type conversions] -->
+ <item id="OperatorsAndTypeConversionsTopicTitle">{0} Operators and Type Conversions</item>
+ <!-- title for operator list topic that has [no operators + type conversions] -->
+ <item id="TypeConversionsTopicTitle">{0} Type Conversions</item>
+
+ <item id="ConstructorsTopicTitle">{0} Constructors</item>
+ <item id="PropertiesTopicTitle">{0} Properties</item>
<item id="EventsTopicTitle">{0} Events</item>
<item id="AttachedPropertiesTopicTitle">{0} Attached Properties</item>
<item id="AttachedEventsTopicTitle">{0} Attached Events</item>
@@ -59,6 +74,14 @@
<item id="derivedTypesIndexEntry">{0}, derived types</item>
<item id="membersIndexEntry">{0}, all members</item>
<item id="methodsIndexEntry">{0}, methods</item>
+ <!-- index entry for operator list topic that has [operators + no type conversions] -->
+ <item id="operatorsIndexEntry">{0}, operators</item>
+ <!-- index entry for operator list topic that has [operators + type conversions] -->
+ <item id="operatorsAndTypeConversionsIndexEntry">{0}, operators and type conversions</item>
+ <!-- index entry for operator list topic that has [no operators + type conversions] -->
+ <item id="typeConversionsIndexEntry">{0}, type conversions</item>
+ <!-- index entries for op_explicit and op_implicit members -->
+ <item id="conversionOperatorIndexEntry">{0} conversion</item>
<item id="propertiesIndexEntry">{0}, properties</item>
<item id="fieldsIndexEntry">{0}, fields</item>
<item id="eventsIndexEntry">{0}, events</item>
@@ -111,7 +134,7 @@
<item id="implementsTitle">Implements</item>
<item id="examplesTitle">Examples</item>
<item id="threadSafetyTitle">Thread Safety</item>
- <item id="permissionsTitle">Permissions</item>
+ <item id="permissionsTitle">.NET Framework Security</item>
<item id="namespacesTitle">Namespaces</item>
<item id="typesTitle">Types</item>
<item id="allMembersTitle">Members</item>
@@ -142,6 +165,10 @@
<item id="exceptionConditionHeader">Condition</item>
<item id="permissionNameHeader">Permission</item>
<item id="permissionDescriptionHeader">Description</item>
+ <item id="requiresNameHeader">Requires</item>
+ <item id="ensuresNameHeader">Ensures</item>
+ <item id="ensuresOnThrowNameHeader">EnsuresOnThrow</item>
+ <item id="invariantsNameHeader">Invariants</item>
<!-- filter control text -->
<item id="allTypesFilterLabel">All Types</item>
@@ -180,9 +207,9 @@
<item id="ThreadSafety">Thread Safety</item>
<item id="ThreadSafetyBP">Any public <include item="staticKeyword"/> 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>
+ <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">
@@ -245,7 +272,7 @@
<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>
+ <font color="red"><b>Note: This API is now obsolete.</b></font>
</item>
<item id="definedBy">(Defined by {0}.)</item>
<item id="inheritedFrom">(Inherited from {0}.)</item>
@@ -429,9 +456,23 @@
<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>
+
+ <!-- Variance boilerplate text -->
+ <item id="inKeyword"><span class="languageSpecificText"><span class="cs"><span class="keyword">in</span> </span><span class="vb"><span class="keyword">In</span> </span><span class="cpp"><span class="keyword">in</span> </span><span class="nu"><span class="keyword">in</span> </span><span class="fs"></span></span></item>
+ <item id="outKeyword"><span class="languageSpecificText"><span class="cs"><span class="keyword">out</span> </span><span class="vb"><span class="keyword">Out</span> </span><span class="cpp"><span class="keyword">out</span> </span><span class="nu"><span class="keyword">out</span> </span><span class="fs"></span></span></item>
+
+ <item id="covariant">This type parameter is covariant. That is, you can use either the type you specified or any type that is more derived. </item>
+ <item id="contravariant">This type parameter is contavariant. That is, you can use either the type you specified or any type that is less derived. </item>
+ <item id="variance">For more information about covariance and contravariance, see <conceptualLink target="2678dc63-c7f9-4590-9ddc-0a4df684d42e" />.</item>
+
<!-- Non Cls Compliant boilerplate text-->
<item id="NotClsCompliant">This API is not CLS-compliant.</item>
<item id="AltClsCompliant">The CLS-compliant alternative is {0}.</item>
+
+ <!-- Security Critical Boilerplate text-->
+ <item id="typeSecurityCriticalBoilerplate">This type has a SecurityCriticalAttribute attribute, which restricts it to internal use by the .NET Framework for Silverlight class library. Application code that uses any member of this type throws a MethodAccessException.</item>
+ <item id="memberSecurityCriticalBoilerplate">This member has a SecurityCriticalAttribute attribute, which restricts it to internal use by the .NET Framework for Silverlight class library. Application code that uses this member throws a MethodAccessException.</item>
+ <item id="securityCritical">[SECURITY CRITICAL] </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.
@@ -446,10 +487,19 @@
<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="WinSvr2008">Windows Server 2008</item>
+ <item id="WinSvr2008R2">Windows Server 2008 R2</item>
<item id="WinXpMediaCenter">Windows XP Media Center Edition</item>
<item id="WinXPSE">Windows XP Starter Edition</item>
<item id="WinVista">Windows Vista</item>
+ <item id="Win7">Windows 7</item>
<item id="Xbox360">Xbox 360</item>
+ <item id="Zune">Zune</item>
+
+ <!-- Platforms boilerplate for Silverlight mref builds -->
+ <item id="silverlightplatforms">
+ For information on the operating systems and browsers supported by <include item="silverlight"/>, see "Supported Operating Systems and Browsers" in <conceptualLink target="d1c41046-1eef-4a73-8049-5c9f0487f7fc"/>.
+ </item>
<!-- framework ids:
These shared content item strings are used for the headings in the Version Information section
@@ -458,12 +508,15 @@
<item id="netfw">.NET Framework</item>
<item id="netcfw">.NET Compact Framework</item>
<item id="xnafw">XNA Framework</item>
+ <item id="silverlight">Silverlight</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="netfw40">4.0</item>
+ <item id="netfw35_1">3.5 SP1</item>
<item id="netfw35">3.5</item>
<item id="netfw30_1">3.0 SP1</item>
<item id="netfw30">3.0</item>
@@ -472,18 +525,23 @@
<item id="netfw11">1.1</item>
<item id="netfw10">1.0</item>
+ <item id="netcfw37">3.7</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>
+ <!-- silverlight version ids used in Version Information section. -->
+ <item id="silverlight20">2.0</item>
+ <item id="silverlight10">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>
<item id="secondaryFrameworkOverride"><br/><br/>In <include item="{0}"/>, this member is overridden by {1}.</item>
- <item id="secondaryFrameworkInherited"><br/><br/>In <include item="{0}"/>&#160;<include item="{1}"/>, this member is inherited from {2}<span class="languageSpecificText"><span class="cs">.</span><span class="vb">.</span><span class="cpp">::</span><span class="nu">.</span></span>{3}.</item>
+ <item id="secondaryFrameworkInherited"><br/><br/>In <include item="{0}"/>&#160;<include item="{1}"/>, this member is inherited from {2}<span class="languageSpecificText"><span class="cs">.</span><span class="vb">.</span><span class="cpp">::</span><span class="nu">.</span><span class="fs">.</span></span>{3}.</item>
<item id="secondaryFrameworkMember"><br/><br/>In <include item="{0}"/>&#160;<include item="{1}"/>, this member is {2}.</item>
<item id="useBaseSummary">This member overrides {0}.</item>
diff --git a/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml b/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
index f4a3d99..75d17fd 100644
--- a/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
+++ b/tools/Sandcastle/Presentation/vs2005/Content/shared_content.xml
@@ -19,19 +19,29 @@
<!-- header -->
<item id="header"><font color="DarkGray"></font><p/> </item>
+ <!-- freshness date -->
+ <item id="UpdateTitle"><font color="DarkGray">Updated: {0}</font></item>
+ <!-- if the TransformComponent of the BuildAssembler config file has the argument:
+ argument key="changeHistoryOptions" value="showDefaultFreshnessDate"
+ the "defaultFreshnessDate" item is used as the default freshness date for topics that don't have a Change History table. -->
+ <item id="defaultFreshnessDate"/>
+
+ <!-- change history table section-->
+ <item id="changeHistory">Change History</item>
+
<!-- topic title -->
<item id="nsrTitle">{0}</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>
+ <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</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>
@@ -50,9 +60,14 @@
<item id="ManagedCPlusPlusLabel">Visual C++</item>
<item id="JSharpLabel">J#</item>
<item id="JScriptLabel">JScript</item>
+ <item id="JavaScriptLabel">JavaScript</item>
+ <item id="XAMLLabel">XAML</item>
<!-- section titles -->
<item id="exceptionsTitle">Exceptions</item>
+ <item id="contractsTitle">Contracts</item>
+ <item id="setterTitle">Set</item>
+ <item id="getterTitle">Get</item>
<item id="SeeAlso">See&#160;Also</item>
<item id="SeeAlsoTasks">Tasks</item>
<item id="SeeAlsoReference">Reference</item>
@@ -100,6 +115,7 @@
<item id="JScript">JScript</item>
<item id="xmlLang">Xml</item>
<item id="JavaScript">JavaScript</item>
+ <item id="FSharp">F#</item>
<item id="html">Html</item>
<item id="visualbasicANDcsharp"><include item="VisualBasic"/> and <include item="CSharp"/></item>
<item id="other"></item>
@@ -196,7 +212,7 @@
</a>
</span>
</item>
-<item id="MailToLink">javascript:SubmitFeedback('<include item="fb_alias" />','<include item="fb_product" />','<include item="fb_deliverable" />','{0}','{1}','<include item="fb_body" />');</item>
+<item id="MailToLink">javascript:SubmitFeedback('<include item="fb_alias" />','<include item="fb_product" />','<include item="fb_deliverable" />','{0}','{1}','<include item="fb_body" />','<include item="fb_subject" />');</item>
<!-- 5 star rating feedback control in sandcastle scenario-->
<!--
@@ -235,7 +251,7 @@
</span>
</item>
-<item id="MailToLink">javascript:SubmitFeedback('<include item="feedback_alias" />','<include item="feedback_product" />','<include item="feedback_deliverable" />','<include item="feedback_fileVersion" />','<include item="feedback_topicVersion" />','<include item="feedback_body" />');</item>
+<item id="MailToLink">javascript:SubmitFeedback('<include item="feedback_alias" />','<include item="feedback_product" />','<include item="feedback_deliverable" />','<include item="feedback_fileVersion" />','<include item="feedback_topicVersion" />','<include item="feedback_body" />','<include item="feedback_subject" />');</item>
-->
<item id="copyrightStatement"><include item="copyrightText"/></item>
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
index e2d5767..42a9360 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/CommonUtilities.js
@@ -103,6 +103,8 @@ function GetDevlangCheckboxId(devlang)
return devlangsMenu.GetCheckboxId("JSharp");
case "JavaScript":
return devlangsMenu.GetCheckboxId("JavaScript");
+ case "FSharp":
+ return devlangsMenu.GetCheckboxId("FSharp");
default:
return "";
}
@@ -116,26 +118,36 @@ function styleSheetHandler(oneDevlang)
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';
+ sd['span.cs'].display = 'inline';
+ sd['span.vb'].display = 'none';
+ sd['span.cpp'].display = 'none';
+ sd['span.nu'].display = 'none';
+ sd['span.fs'].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';
- }
+ sd['span.cs'].display = 'none';
+ sd['span.vb'].display = 'inline';
+ sd['span.cpp'].display = 'none';
+ sd['span.nu'].display = 'none';
+ sd['span.fs'].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';
+ sd['span.fs'].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';
+ sd['span.fs'].display = 'none';
+ } else if (devlang == 'fs') {
+ sd['span.cs'].display = 'none';
+ sd['span.vb'].display = 'none';
+ sd['span.cpp'].display = 'none';
+ sd['span.nu'].display = 'none';
+ sd['span.fs'].display = 'inline';
+ }
}
function getStyleDictionary() {
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js b/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js
index 4f79de1..55ee44a 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/script_feedBack.js
@@ -82,9 +82,9 @@ function GetRating()
return sRating;
}
-function SubmitFeedback(alias, product, deliverable, productVersion, documentationVersion, defaultBody)
+function SubmitFeedback(alias, product, deliverable, productVersion, documentationVersion, defaultBody, defaultSubject)
{
- var subject = title
+ var subject = defaultSubject
+ " ("
+ "/1:"
+ product
diff --git a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
index 26bb631..ebc63a7 100644
--- a/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
+++ b/tools/Sandcastle/Presentation/vs2005/Scripts/script_manifold.js
@@ -99,6 +99,13 @@ function HideSelect()
i = n;
}
break;
+ case "fsharp":
+ for (m=0; m<spanEles.length; m++)
+ {
+ if (spanEles[m].getAttribute("codeLanguage") == "FSharp" && spanEles[m].style.display != "none" && n < i)
+ i = n;
+ }
+ break;
}
}
if (i != 10)
diff --git a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
index 8c7e864..5fe081f 100644
--- a/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
+++ b/tools/Sandcastle/Presentation/vs2005/Styles/Presentation.css
@@ -148,7 +148,7 @@ span.selflink {
}
span.nolink {
-
+ font-weight: bold;
}
/***********************************************************
@@ -233,7 +233,7 @@ div#header table tr#headerTableRow3 td
/* 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
+div#header table#bottomTable
{
border-top-color: #FFFFFF;
border-top-style: solid;
@@ -891,6 +891,11 @@ span.nu {
display: inline;
}
+span.fs
+{
+ display: none;
+}
+
span.code {
font-family: Monospace, Courier New, Courier;
font-size: 105%;
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
index 5458268..7025e18 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/conceptual.config
@@ -50,45 +50,106 @@
<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="\&#34;[^&#34;\r\n]*\&#34;" 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="\&#34;[^&#34;\r\n]*\&#34;" 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="\&#34;[^&#34;\r\n]*\&#34;" 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>
+ <!-- Resolve code snippets -->
+ <component type="Microsoft.Ddue.Tools.SnippetComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <examples>
+ <example directory="d:\SnippetComponentTest\parsnip" />
+ </examples>
+ <!-- Each excludedUnits/unitFolder node specifies the name of a folder to exclude at the unit-level of the sample tree.
+ The unit folders are typically named "CS", "VB", etc.
+ Many example folders have "CPP_OLD" unit folders containing snippets that we do NOT want to include in the build. -->
+ <excludedUnits>
+ <unitFolder name="CPP_OLD" />
+ </excludedUnits>
+ <!-- You can specify an optional Parsnip approval log, in which case snippets are included only if they are in approved example units in the log. -->
+ <!-- TFS 480671 says DO NOT USE Parsnip approval logs for DevDiv content; ALL snippets should be included, regardless of Parsnip results. -->
+ <!--
+ <approvalLogs>
+ <approvalLog file="\\docbuildtask\snippet_building\Orcas\parsnip\approved-all.xml" />
+ </approvalLogs>
+ -->
+
+ <!-- language nodes specify:
+ @unit: name of the unit folders in the sample tree that contain examples in this language
+ @languageId: id for this language used in Manifold transforms, etc.
+ optional color nodes to specify rules for coloring snippets in this language
+ The order of language nodes determines the order in which the snippets are displayed
+ -->
+ <languages>
+ <language unit="VB" languageId="VisualBasic" extension=".vb">
+ <color pattern="^\s*'[^\r\n]*" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="\b((AddHandler)|(AddressOf)|(Alias)|(And)|(AndAlso)|(As)|(Boolean)|(ByRef)|(Byte)|(ByVal)|(Call)|(Case)|(Catch)|(CBool)|(CByte)|(CChar)|(CDate)|(CDec)|(CDbl)|(Char)|(CInt)|(Class)|(CLng)|(CObj)|(Const)|(Continue)|(CSByte)|(CShort)|(CSng)|(CStr)|(CType)|(CUInt)|(CULng)|(CUShort)|(Date)|(Decimal)|(Declare)|(Default)|(Delegate)|(Dim)|(DirectCast)|(Do)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(EndIf)|(Enum)|(Erase)|(Error)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(GetType)|(GetXMLNamespace)|(Global)|(GoSub)|(GoTo)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(IsNot)|(Let)|(Lib)|(Like)|(Long)|(Loop)|(Me)|(Mod)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(MyClass)|(Namespace)|(Narrowing)|(New)|(Next)|(Not)|(Nothing)|(NotInheritable)|(NotOverridable)|(Object)|(Of)|(On)|(Operator)|(Option)|(Optional)|(Or)|(OrElse)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(ReDim)|(REM)|(RemoveHandler)|(Resume)|(Return)|(SByte)|(Select)|(Set)|(Shadows)|(Shared)|(Short)|(Single)|(Static)|(Step)|(Stop)|(String)|(Structure)|(Sub)|(SyncLock)|(Then)|(Throw)|(To)|(True)|(Try)|(TryCast)|(TypeOf)|(Variant)|(Wend)|(UInteger)|(ULong)|(UShort)|(Until)|(Using)|(When)|(Where)|(While)|(Widening)|(With)|(WithEvents)|(WriteOnly)|(Xor)|(#Const)|(#Else)|(#ElseIf)|(#End)|(#If))\b" class="keyword" />
+ </language>
+
+ <language unit="CS" languageId="CSharp" extension=".cs">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(byte)|(case)|(catch)|(char)|(checked)|(class)|(const)|(continue)|(decimal)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(explicit)|(extern)|(false)|(finally)|(fixed)|(float)|(for)|(foreach)|(from)|(get)|(goto)|(group)|(if)|(implicit)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(lock)|(long)|(namespace)|(new)|(null)|(object)|(operator)|(on)|(orderby)|(out)|(override)|(params)|(partial)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sbyte)|(sealed)|(select)|(set)|(short)|(sizeof)|(stackalloc)|(static)|(string)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(uint)|(ulong)|(unchecked)|(unsafe)|(ushort)|(using)|(value)|(var)|(yield)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" />
+ </language>
+
+ <language unit="CPP" languageId="ManagedCPlusPlus" extension=".cpp">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(delete)|(deprecated)|(dllexport)|(dllimport)|(do)|(double)|(else)|(enum)|(event)|(explicit)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(long)|(mutable)|(naked)|(namespace)|(new)|(noinline)|(noreturn)|(nothrow)|(novtable)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(safecast)|(sealed)|(selectany)|(short)|(signed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(thread)|(throw)|(true)|(try)|(typedef)|(typeid)|(typename)|(union)|(unsigned)|(using)|(uuid)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
+ </language>
+
+ <language unit="FS" languageId="FSharp" extension=".fs">
+ <color pattern="\(\*(.|\n)+?\*\)" class="comment" />"
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(and)|(as)|(asr)|(assert)|(atomic)|(base)|(begin)|(break)|(checked)|(class)|(component)|(const)|(constraint)|(constructor)|(continue)|(default)|(delegate)|(do)|(done)|(downcast)|(downto)|(eager)|(elif)|(else)|(end)|(event)|(exception)|(extern)|(external)|(false)|(finally)|(fixed)|(for)|(fun)|(function)|(functor)|(global)|(if)|(in)|(include)|(inherit)|(inline)|(interface)|(internal)|(land)|(lazy)|(let)|(lor)|(lsl)|(lsr)|(lxor)|(match)|(member)|(method)|(mixin)|(mod)|(module)|(mutable)|(namespace)|(new)|(null)|(object)|(of)|(open)|(or)|(override)|(parallel)|(private)|(process)|(protected)|(public)|(pure)|(rec)|(return)|(sealed)|(sig)|(static)|(struct)|(tailcall)|(then)|(to)|(trait)|(true)|(try)|(type)|(upcast)|(use)|(val)|(virtual)|(void)|(volatile)|(when)|(while)|(with)|(yield))\b" class="keyword" />
+ </language>
+
+ <language unit="JS" languageId="JScript" />
+ <language unit="JSL" languageId="JSharp" />
+ <language unit="Common" languageId="None" />
+ <language unit="XAML" languageId="XAML" />
+ </languages>
+
</component>
+ <!-- Copy in topicTypes -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <variable expression="/document/topic/*/ddue:relatedTopics/*/@xlink:href" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <index name="topicType" value="/metadata/topic" key="@id">
+ <data base="%DXROOT%\Data\ContentMetadata" recurse="true" files="*.contentmetadata.xml" />
+ </index>
+ <copy name="topicType" source="topicType" target="/document/topic/*/ddue:relatedTopics/*[@xlink:href='{0}' and not(@topicType_id)]" attribute="true" ignoreCase="true" missing-target="error" />
+ </component>
+ </components>
+ </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" />
+ <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="FSharp" name="FSharp" style="fs" />
</argument>
+ <!-- You can use the optional changeHistoryOptions argument to control display of freshness date and Change History sections.
+ If value='showDefaultFreshnessDate', all topics have a freshness date; default date is from 'defaultFreshnessDate' shared content item.
+ if value='omit', freshness date and Change History sections are omitted from all topics.
+ <argument key="changeHistoryOptions" value="omit" />
+ -->
</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" />
+ <targets input="%DXROOT%\Data\ArtStore" baseOutput=".\Output" outputPath="media" link="../media" map="%DXROOT%\Data\ArtSharedContent.loc.xml" />
</component>
<!-- resolve shared content -->
@@ -106,16 +167,16 @@
<!-- 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" />
+ <targets base="%FxReflectionData%\" 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" />
+ <save base=".\Output\html" path="concat($key,'.htm')" link="../html" 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" />
+ <component type="Microsoft.Ddue.Tools.HxfGeneratorComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll" input="%DXROOT%\Presentation\vs2005\seed.HxF" output="test.HxF" />
</components>
</builder>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/reference-core-componentized.config b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core-componentized.config
new file mode 100644
index 0000000..8081189
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core-componentized.config
@@ -0,0 +1,374 @@
+<configuration>
+ <dduetools>
+ <builder>
+ <context>
+ <namespace prefix="ddue" uri="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ </context>
+ <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 files=".\reflection.xml" />
+ </index>
+ <copy name="reflection" source="*" target="/document/reference" missing-entry="error" missing-source="error" missing-target="error" />
+ </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="topicdata|apidata|typedata|family|templates|attributes" target="/document/reference/containers//type[@api=$key]" missing-entry="error" missing-source="error" missing-target="error" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in type version data on memberlist topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference/topicdata/@typeTopicId)" source="versions" target="/document/reference/topicdata" />
+ </component>
+
+ <!-- Copy in members version data for overload list topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference[topicdata[@subgroup='overload']]/elements//element/@api)" source="versions" target="/document/reference[topicdata[@subgroup='overload']]/elements//element[@api=$key]" />
+ </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>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Generate syntax -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="/document/reference/topicdata/@group='api'" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <syntax input="/document/reference" output="/document/syntax" />
+ <generators>
+ <generator name="VisualBasic" type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="VisualBasicUsage" type="Microsoft.Ddue.Tools.VisualBasicUsageSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="CSharp" type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="ManagedCPlusPlus" type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="JSharp" type="Microsoft.Ddue.Tools.JSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="JScript" type="Microsoft.Ddue.Tools.JScriptDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.XamlUsageSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll">
+ <!-- filter files specify xaml configuration info, e.g. to control the assemblies whose apis get xaml syntax -->
+ <filter files="%DXROOT%\Presentation\shared\configuration\xamlSyntax.config"/>
+ </generator>
+ <generator type="Microsoft.Ddue.Tools.AspNetSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ </generators>
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in metadata attributes -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="metadata" value="/metadata/topic" key="@id">
+ <data files=".\SupportFiles\*Metadata.xml" />
+ </index>
+ <index name="version" value="/metadata/topic" key="@id">
+ <data files="Version.xml" />
+ </index>
+ <copy name="metadata" source="*" target="/document/metadata" missing-target="error" />
+ <copy name="metadata" key="string('*')" source="*" target="/document/metadata" missing-target="error" />
+ <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>
+
+ <!-- Copy in comments -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="comments" value="/doc/members/member" key="@name" cache="100">
+ <data base=".\DdueXml" recurse="true" files="*.xml" />
+ </index>
+ <copy name="comments" source="*" target="/document/comments" missing-target="error" />
+ </component>
+
+ <!-- Copy in comments of overidden member -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/comments/ddue:dduexml/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/overrides/member/@api)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:parameters|ddue:dduexml/ddue:returnValue" target="/document/comments/ddue:dduexml" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments of parent topics for inherited overload topics -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata/@parentTopicId)" source="*" target="/document/comments" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in HowDoI tasks -->
+ <component type="Microsoft.Ddue.Tools.TaskGrabberComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5"/>
+ <keywords topic="/metadata/topic[keyword[@index='B']]" keyword="keyword[@index='B']" files=".\SupportFiles\HowDoIKeywords\*.xml"/>
+ <source value="/topic/ddue:developerHowToDocument" key="../@id">
+ <data files=".\SupportFiles\HowDoIData\*.xml"/>
+ </source>
+ <copy source="ddue:title|ddue:introduction|ddue:codeExample" target="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:codeReference[starts-with(.,'HOWDOI#')]"/>
+ </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="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="\b((AddHandler)|(AddressOf)|(Alias)|(And)|(AndAlso)|(As)|(Boolean)|(ByRef)|(Byte)|(ByVal)|(Call)|(Case)|(Catch)|(CBool)|(CByte)|(CChar)|(CDate)|(CDec)|(CDbl)|(Char)|(CInt)|(Class)|(CLng)|(CObj)|(Const)|(Continue)|(CSByte)|(CShort)|(CSng)|(CStr)|(CType)|(CUInt)|(CULng)|(CUShort)|(Date)|(Decimal)|(Declare)|(Default)|(Delegate)|(Dim)|(DirectCast)|(Do)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(EndIf)|(Enum)|(Erase)|(Error)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(GetType)|(GetXMLNamespace)|(Global)|(GoSub)|(GoTo)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(IsNot)|(Let)|(Lib)|(Like)|(Long)|(Loop)|(Me)|(Mod)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(MyClass)|(Namespace)|(Narrowing)|(New)|(Next)|(Not)|(Nothing)|(NotInheritable)|(NotOverridable)|(Object)|(Of)|(On)|(Operator)|(Option)|(Optional)|(Or)|(OrElse)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(ReDim)|(REM)|(RemoveHandler)|(Resume)|(Return)|(SByte)|(Select)|(Set)|(Shadows)|(Shared)|(Short)|(Single)|(Static)|(Step)|(Stop)|(String)|(Structure)|(Sub)|(SyncLock)|(Then)|(Throw)|(To)|(True)|(Try)|(TryCast)|(TypeOf)|(Variant)|(Wend)|(UInteger)|(ULong)|(UShort)|(Until)|(Using)|(When)|(Where)|(While)|(Widening)|(With)|(WithEvents)|(WriteOnly)|(Xor)|(#Const)|(#Else)|(#ElseIf)|(#End)|(#If))\b" class="keyword" />
+ </colors>
+ <colors language="CSharp">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(byte)|(case)|(catch)|(char)|(checked)|(class)|(const)|(continue)|(decimal)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(explicit)|(extern)|(false)|(finally)|(fixed)|(float)|(for)|(foreach)|(from)|(get)|(goto)|(group)|(if)|(implicit)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(lock)|(long)|(namespace)|(new)|(null)|(object)|(operator)|(on)|(orderby)|(out)|(override)|(params)|(partial)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sbyte)|(sealed)|(select)|(set)|(short)|(sizeof)|(stackalloc)|(static)|(string)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(uint)|(ulong)|(unchecked)|(unsafe)|(ushort)|(using)|(value)|(var)|(vield)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" />
+ </colors>
+ <colors language="ManagedCPlusPlus">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(delete)|(deprecated)|(dllexport)|(dllimport)|(do)|(double)|(else)|(enum)|(event)|(explicit)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(long)|(mutable)|(naked)|(namespace)|(new)|(noinline)|(noreturn)|(nothrow)|(novtable)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(safecast)|(sealed)|(selectany)|(short)|(signed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(thread)|(throw)|(true)|(try)|(typedef)|(typeid)|(typename)|(union)|(unsigned)|(using)|(uuid)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
+ </colors>
+ </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]" missing-entry="error" missing-source="error" missing-target="error" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" missing-target="error" />
+ </component>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/overrides/member/@api)" source="ddue:dduexml/ddue:summary" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ </components>
+ </component>
+
+ <!-- Add platforms data -->
+ <component type="Microsoft.Ddue.Tools.PlatformsComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <!-- The order of filter files in this config determines the order of platforms in the output. -->
+ <filter files=".\SupportFiles\Platforms\WinVista.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXP.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXpMediaCenter.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXPPro64.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXPSE.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinSvr2003.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinSvr2000.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinME.xml"/>
+ <filter files=".\SupportFiles\Platforms\Win98.xml"/>
+ <filter files=".\SupportFiles\Platforms\WindowsCE.xml"/>
+ <filter files=".\SupportFiles\Platforms\SmartPhone.xml"/>
+ <filter files=".\SupportFiles\Platforms\PocketPC.xml"/>
+ <filter files=".\SupportFiles\Platforms\Xbox360.xml"/>
+ </component>
+
+ <!-- Copy in comments for a member list topic's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata[@group='list' and @subgroup!='overload'])" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata[@group='list' and @subgroup!='overload']/@typeTopicId)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments for a member's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean((/document/reference/topicdata[@group='list' and @subgroup='overload']) | (/document/reference/apidata[@group='member']))" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/containers/type/@api)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </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="/document//ddue:token" item="string(.)" />
+ </component>
+
+ <!-- Copy in topicTypes -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <variable expression="/document/comments/ddue:relatedTopics/*/@xlink:href" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <index name="topicType" value="/metadata/topic" key="@id">
+ <data base="%DXROOT%\Data\ContentMetadata" recurse="true" files="*.contentmetadata.xml" />
+ </index>
+ <copy name="topicType" source="topicType" target="/document/comments/ddue:relatedTopics/*[@xlink:href='{0}' and not(@topicType_id)]" attribute="true" ignoreCase="true" missing-target="error" />
+ </component>
+ </components>
+ </component>
+
+ <!-- transform -->
+ <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <transform file="%DXROOT%\Presentation\vs2005\transforms\main_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" />
+ </argument>
+ <argument key="omitAptcaBoilerplate" value="false" />
+ <argument key="RTMReleaseDate" value="June 2007" />
+ </transform>
+ </component>
+
+ <!-- resolve art links -->
+ <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets input="%DXROOT%\Data\ArtStore" baseOutput=".\Output" outputPath="concat(/html/head/meta[@name='container']/@content,'\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\reference_content.xml" />
+ <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
+ </component>
+
+ <!-- resolve conceptual links -->
+ <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets base="%DXROOT%\Data\XmlComp" type="index"/>
+ </component>
+
+ <!-- resolve reference links -->
+ <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets files=".\reflection.xml" type="LocalOrIndex" />
+ </component>
+
+<!--
+ <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <xpath>/</xpath>
+ </component>
+-->
+
+ <!-- Write out intellisense -->
+ <component type="Microsoft.Ddue.Tools.IntellisenseComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <output directory=".\Intellisense" />
+ <expressions root="/html/body/div[@id='mainSection']/div[@id='mainBody']"
+ assembly="string(span[@sdata='assembly'])"
+ summary="span[@sdata='authoredSummary']"
+ parameters="div[@id='syntaxSection']/div[@id='parameters']/dl"
+ parameterContent="dd/span[@sdata='authoredParameterSummary']"
+ templates="div[@id='syntaxSection']/div[@id='genericParameters']/dl"
+ templateContent="dd"
+ returns="div[@id='syntaxSection']/div[@id='returns']/span[@sdata='authoredValueSummary']"
+ exception="div[@id='ddueExceptionsSection']/div[@class='tableSection']/table/tr/td[2]"
+ exceptionCref="../td[1]/span[@sdata='cer']"
+ enumeration="div[@id='enumerationSection']/div[@id='membersSection']/table[@class='members']/tr/td[3]"
+ enumerationApi="../td[2]"
+ memberSummary="span[@sdata='memberAuthoredSummary']" />
+ </component>
+
+ <!-- save the result -->
+ <component type="Microsoft.Ddue.Tools.SaveComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <save base=".\Output" path="concat(/html/head/meta[@name='container']/@content,'\html\',/html/head/meta[@name='file']/@content,'.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="test.HXF" />
+
+ </components>
+ </builder>
+ </dduetools>
+</configuration>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config
new file mode 100644
index 0000000..56a14dd
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/reference-core.config
@@ -0,0 +1,373 @@
+<configuration>
+ <dduetools>
+ <builder>
+ <context>
+ <namespace prefix="ddue" uri="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ </context>
+ <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 files=".\reflection.xml" />
+ </index>
+ <copy name="reflection" source="*" target="/document/reference" missing-entry="error" missng-source="error" missing-target="error" />
+ </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="topicdata|apidata|typedata|family|templates|attributes" target="/document/reference/containers//type[@api=$key]" missing-entry="error" missing-source="error" missing-target="error" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in type version data on memberlist topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference/topicdata/@typeTopicId)" source="versions" target="/document/reference/topicdata" />
+ </component>
+
+ <!-- Copy in members version data for overload list topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference[topicdata[@subgroup='overload']]/elements//element/@api)" source="versions" target="/document/reference[topicdata[@subgroup='overload']]/elements//element[@api=$key]" />
+ </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>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Generate syntax -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="/document/reference/topicdata/@group='api'" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.SyntaxComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <syntax input="/document/reference" output="/document/syntax" />
+ <generators>
+ <generator name="VisualBasic" type="Microsoft.Ddue.Tools.VisualBasicDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="VisualBasicUsage" type="Microsoft.Ddue.Tools.VisualBasicUsageSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="CSharp" type="Microsoft.Ddue.Tools.CSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="ManagedCPlusPlus" type="Microsoft.Ddue.Tools.CPlusPlusDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="JSharp" type="Microsoft.Ddue.Tools.JSharpDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator name="JScript" type="Microsoft.Ddue.Tools.JScriptDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.XamlUsageSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll">
+ <!-- filter files specify xaml configuration info, e.g. to control the assemblies whose apis get xaml syntax -->
+ <filter files="%DXROOT%\Presentation\shared\configuration\xamlSyntax.config"/>
+ </generator>
+ <generator type="Microsoft.Ddue.Tools.AspNetSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ </generators>
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in metadata attributes -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="metadata" value="/metadata/topic" key="@id">
+ <data files=".\SupportFiles\*Metadata.xml" />
+ </index>
+ <index name="version" value="/metadata/topic" key="@id">
+ <data files="Version.xml" />
+ </index>
+ <copy name="metadata" source="*" target="/document/metadata" missing-target="error" />
+ <copy name="metadata" key="string('*')" source="*" target="/document/metadata" missing-target="error" />
+ <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>
+
+ <!-- Copy in comments -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="comments" value="/doc/members/member" key="@name" cache="100">
+ <data base=".\DdueXml" recurse="true" files="*.xml" />
+ </index>
+ <copy name="comments" source="*" target="/document/comments" missing-target="error" />
+ </component>
+
+ <!-- Copy in comments of overidden member -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/comments/ddue:dduexml/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/overrides/member/@api)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:parameters|ddue:dduexml/ddue:returnValue" target="/document/comments/ddue:dduexml" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments of parent topics for inherited overload topics -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata/@parentTopicId)" source="*" target="/document/comments" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in HowDoI tasks -->
+ <component type="Microsoft.Ddue.Tools.TaskGrabberComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5"/>
+ <keywords topic="/metadata/topic[keyword[@index='B']]" keyword="keyword[@index='B']" files=".\SupportFiles\HowDoIKeywords\*.xml"/>
+ <source value="/topic/ddue:developerHowToDocument" key="../@id">
+ <data files=".\SupportFiles\HowDoIData\*.xml"/>
+ </source>
+ <copy source="ddue:title|ddue:introduction|ddue:codeExample" target="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:codeReference[starts-with(.,'HOWDOI#')]"/>
+ </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="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="\b((AddHandler)|(AddressOf)|(Alias)|(And)|(AndAlso)|(As)|(Boolean)|(ByRef)|(Byte)|(ByVal)|(Call)|(Case)|(Catch)|(CBool)|(CByte)|(CChar)|(CDate)|(CDec)|(CDbl)|(Char)|(CInt)|(Class)|(CLng)|(CObj)|(Const)|(Continue)|(CSByte)|(CShort)|(CSng)|(CStr)|(CType)|(CUInt)|(CULng)|(CUShort)|(Date)|(Decimal)|(Declare)|(Default)|(Delegate)|(Dim)|(DirectCast)|(Do)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(EndIf)|(Enum)|(Erase)|(Error)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(GetType)|(GetXMLNamespace)|(Global)|(GoSub)|(GoTo)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(IsNot)|(Let)|(Lib)|(Like)|(Long)|(Loop)|(Me)|(Mod)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(MyClass)|(Namespace)|(Narrowing)|(New)|(Next)|(Not)|(Nothing)|(NotInheritable)|(NotOverridable)|(Object)|(Of)|(On)|(Operator)|(Option)|(Optional)|(Or)|(OrElse)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(ReDim)|(REM)|(RemoveHandler)|(Resume)|(Return)|(SByte)|(Select)|(Set)|(Shadows)|(Shared)|(Short)|(Single)|(Static)|(Step)|(Stop)|(String)|(Structure)|(Sub)|(SyncLock)|(Then)|(Throw)|(To)|(True)|(Try)|(TryCast)|(TypeOf)|(Variant)|(Wend)|(UInteger)|(ULong)|(UShort)|(Until)|(Using)|(When)|(Where)|(While)|(Widening)|(With)|(WithEvents)|(WriteOnly)|(Xor)|(#Const)|(#Else)|(#ElseIf)|(#End)|(#If))\b" class="keyword" />
+ </colors>
+ <colors language="CSharp">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(byte)|(case)|(catch)|(char)|(checked)|(class)|(const)|(continue)|(decimal)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(explicit)|(extern)|(false)|(finally)|(fixed)|(float)|(for)|(foreach)|(from)|(get)|(goto)|(group)|(if)|(implicit)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(lock)|(long)|(namespace)|(new)|(null)|(object)|(operator)|(on)|(orderby)|(out)|(override)|(params)|(partial)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sbyte)|(sealed)|(select)|(set)|(short)|(sizeof)|(stackalloc)|(static)|(string)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(uint)|(ulong)|(unchecked)|(unsafe)|(ushort)|(using)|(value)|(var)|(vield)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" />
+ </colors>
+ <colors language="ManagedCPlusPlus">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(delete)|(deprecated)|(dllexport)|(dllimport)|(do)|(double)|(else)|(enum)|(event)|(explicit)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(long)|(mutable)|(naked)|(namespace)|(new)|(noinline)|(noreturn)|(nothrow)|(novtable)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(safecast)|(sealed)|(selectany)|(short)|(signed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(thread)|(throw)|(true)|(try)|(typedef)|(typeid)|(typename)|(union)|(unsigned)|(using)|(uuid)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
+ </colors>
+ </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]" missing-entry="error" missing-source="error" missing-target="error" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" missing-target="error" />
+ </component>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/overrides/member/@api)" source="ddue:dduexml/ddue:summary" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ </components>
+ </component>
+
+ <!-- Add platforms data -->
+ <component type="Microsoft.Ddue.Tools.PlatformsComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <!-- The order of filter files in this config determines the order of platforms in the output. -->
+ <filter files=".\SupportFiles\Platforms\WinVista.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXP.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXpMediaCenter.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXPPro64.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinXPSE.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinSvr2003.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinSvr2000.xml"/>
+ <filter files=".\SupportFiles\Platforms\WinME.xml"/>
+ <filter files=".\SupportFiles\Platforms\Win98.xml"/>
+ <filter files=".\SupportFiles\Platforms\WindowsCE.xml"/>
+ <filter files=".\SupportFiles\Platforms\SmartPhone.xml"/>
+ <filter files=".\SupportFiles\Platforms\PocketPC.xml"/>
+ <filter files=".\SupportFiles\Platforms\Xbox360.xml"/>
+ </component>
+
+ <!-- Copy in comments for a member list topic's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata[@group='list' and @subgroup!='overload'])" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata[@group='list' and @subgroup!='overload']/@typeTopicId)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments for a member's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean((/document/reference/topicdata[@group='list' and @subgroup='overload']) | (/document/reference/apidata[@group='member']))" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/containers/type/@api)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </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="/document//ddue:token" item="string(.)" />
+ </component>
+
+ <!-- Copy in topicTypes -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <variable expression="/document/comments/ddue:relatedTopics/*/@xlink:href" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <index name="topicType" value="/metadata/topic" key="@id">
+ <data base="%DXROOT%\Data\ContentMetadata" recurse="true" files="*.contentmetadata.xml" />
+ </index>
+ <copy name="topicType" source="topicType" target="/document/comments/ddue:relatedTopics/*[@xlink:href='{0}' and not(@topicType_id)]" attribute="true" ignoreCase="true" missing-target="error" />
+ </component>
+ </components>
+ </component>
+
+ <!-- transform -->
+ <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <transform file="%DXROOT%\Presentation\vs2005\transforms\main_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" />
+ </argument>
+ <argument key="omitAptcaBoilerplate" value="false" />
+ <argument key="RTMReleaseDate" value="June 2007" />
+ </transform>
+ </component>
+
+ <!-- resolve art links -->
+ <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets input="%DXROOT%\Data\ArtStore" baseOutput=".\Output" outputPath="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\reference_content.xml" />
+ <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
+ </component>
+
+ <!-- resolve conceptual links -->
+ <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets base="%DXROOT%\Data\XmlComp" type="index"/>
+ </component>
+
+ <!-- resolve reference links -->
+ <component type="Microsoft.Ddue.Tools.ResolveReferenceLinksComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets files=".\reflection.xml" type="local" />
+ </component>
+<!--
+ <component type="Microsoft.Ddue.Tools.DisplayComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <xpath>/</xpath>
+ </component>
+ -->
+
+ <!-- Write out intellisense -->
+ <component type="Microsoft.Ddue.Tools.IntellisenseComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <output directory=".\Intellisense" />
+ <expressions root="/html/body/div[@id='mainSection']/div[@id='mainBody']"
+ assembly="string(span[@sdata='assembly'])"
+ summary="span[@sdata='authoredSummary']"
+ parameters="div[@id='syntaxSection']/div[@id='parameters']/dl"
+ parameterContent="dd/span[@sdata='authoredParameterSummary']"
+ templates="div[@id='syntaxSection']/div[@id='genericParameters']/dl"
+ templateContent="dd"
+ returns="div[@id='syntaxSection']/div[@id='returns']/span[@sdata='authoredValueSummary']"
+ exception="div[@id='ddueExceptionsSection']/div[@class='tableSection']/table/tr/td[2]"
+ exceptionCref="../td[1]/span[@sdata='cer']"
+ enumeration="div[@id='enumerationSection']/div[@id='membersSection']/table[@class='members']/tr/td[3]"
+ enumerationApi="../td[2]"
+ memberSummary="span[@sdata='memberAuthoredSummary']" />
+ </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')" link="../html" 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="test.HxF" />
+
+ </components>
+ </builder>
+ </dduetools>
+</configuration>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/reference.config b/tools/Sandcastle/Presentation/vs2005/configuration/reference.config
new file mode 100644
index 0000000..775ec5b
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/reference.config
@@ -0,0 +1,344 @@
+<configuration>
+ <dduetools>
+ <builder>
+
+ <context>
+ <namespace prefix="ddue" uri="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ </context>
+
+ <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="%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="topicdata|apidata|typedata|family|templates|attributes" target="/document/reference/containers//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in type version data on memberlist topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference/topicdata/@typeTopicId)" source="versions" target="/document/reference/topicdata" />
+ </component>
+
+ <!-- Copy in members version data for overload list topics -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" key="string(/document/reference[topicdata[@subgroup='overload']]/elements//element/@api)" source="versions" target="/document/reference[topicdata[@subgroup='overload']]/elements//element[@api=$key]" />
+ </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>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Generate syntax -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="/document/reference/topicdata/@group='api'" />
+ <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.VisualBasicUsageSyntaxGenerator" 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.JScriptDeclarationSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll" />
+ <generator type="Microsoft.Ddue.Tools.XamlUsageSyntaxGenerator" assembly="%DXROOT%\ProductionTools\SyntaxComponents.dll">
+ <!-- filter files specify xaml configuration info, e.g. to control the assemblies whose apis get xaml syntax -->
+ <filter files="%DXROOT%\Presentation\shared\configuration\xamlSyntax.config"/>
+ </generator>
+ </generators>
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in metadata attributes -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="metadata" value="/metadata/topic" key="@id">
+ <data files=".\SupportFiles\*Metadata.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" missing-target="error" />
+ <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>
+
+ <!-- Copy in comments -->
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <index name="comments" value="/doc/members/member" key="@name" cache="100">
+ <data base="%DXROOT%\Data\DdueXml" recurse="true" files="*.xml" />
+ <data base=".\DdueXml" recurse="true" files="*.xml" />
+ </index>
+ <copy name="comments" source="*" target="/document/comments" />
+ </component>
+
+ <!-- Copy in comments of overidden member -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/comments/ddue:dduexml/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/overrides/member/@api)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:parameters|ddue:dduexml/ddue:returnValue" target="/document/comments/ddue:dduexml" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments of parent topics for inherited overload topics -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata/@parentTopicId)" source="*" target="/document/comments" />
+ </component>
+ </then>
+ </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="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="\b((AddHandler)|(AddressOf)|(Alias)|(And)|(AndAlso)|(As)|(Boolean)|(ByRef)|(Byte)|(ByVal)|(Call)|(Case)|(Catch)|(CBool)|(CByte)|(CChar)|(CDate)|(CDec)|(CDbl)|(Char)|(CInt)|(Class)|(CLng)|(CObj)|(Const)|(Continue)|(CSByte)|(CShort)|(CSng)|(CStr)|(CType)|(CUInt)|(CULng)|(CUShort)|(Date)|(Decimal)|(Declare)|(Default)|(Delegate)|(Dim)|(DirectCast)|(Do)|(Double)|(Each)|(Else)|(ElseIf)|(End)|(EndIf)|(Enum)|(Erase)|(Error)|(Event)|(Exit)|(False)|(Finally)|(For)|(Friend)|(From)|(Function)|(Get)|(GetType)|(GetXMLNamespace)|(Global)|(GoSub)|(GoTo)|(Handles)|(If)|(Implements)|(Imports)|(In)|(Inherits)|(Integer)|(Interface)|(Is)|(IsNot)|(Let)|(Lib)|(Like)|(Long)|(Loop)|(Me)|(Mod)|(Module)|(MustInherit)|(MustOverride)|(MyBase)|(MyClass)|(Namespace)|(Narrowing)|(New)|(Next)|(Not)|(Nothing)|(NotInheritable)|(NotOverridable)|(Object)|(Of)|(On)|(Operator)|(Option)|(Optional)|(Or)|(OrElse)|(Overloads)|(Overridable)|(Overrides)|(ParamArray)|(Partial)|(Private)|(Property)|(Protected)|(Public)|(RaiseEvent)|(ReadOnly)|(ReDim)|(REM)|(RemoveHandler)|(Resume)|(Return)|(SByte)|(Select)|(Set)|(Shadows)|(Shared)|(Short)|(Single)|(Static)|(Step)|(Stop)|(String)|(Structure)|(Sub)|(SyncLock)|(Then)|(Throw)|(To)|(True)|(Try)|(TryCast)|(TypeOf)|(Variant)|(Wend)|(UInteger)|(ULong)|(UShort)|(Until)|(Using)|(When)|(Where)|(While)|(Widening)|(With)|(WithEvents)|(WriteOnly)|(Xor)|(#Const)|(#Else)|(#ElseIf)|(#End)|(#If))\b" class="keyword" />
+
+ </colors>
+ <colors language="CSharp">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(as)|(ascending)|(base)|(bool)|(break)|(by)|(byte)|(case)|(catch)|(char)|(checked)|(class)|(const)|(continue)|(decimal)|(default)|(delegate)|(descending)|(do)|(double)|(else)|(enum)|(equals)|(event)|(explicit)|(extern)|(false)|(finally)|(fixed)|(float)|(for)|(foreach)|(from)|(get)|(goto)|(group)|(if)|(implicit)|(in)|(int)|(interface)|(internal)|(into)|(is)|(join)|(let)|(lock)|(long)|(namespace)|(new)|(null)|(object)|(operator)|(on)|(orderby)|(out)|(override)|(params)|(partial)|(private)|(protected)|(public)|(readonly)|(ref)|(return)|(sbyte)|(sealed)|(select)|(set)|(short)|(sizeof)|(stackalloc)|(static)|(string)|(struct)|(switch)|(this)|(throw)|(true)|(try)|(typeof)|(uint)|(ulong)|(unchecked)|(unsafe)|(ushort)|(using)|(value)|(var)|(vield)|(virtual)|(volatile)|(void)|(where)|(while))\b" class="keyword" />
+ </colors>
+ <colors language="ManagedCPlusPlus">
+ <color pattern="/\*(.|\n)+?\*/" class="comment" />
+ <color pattern="\&#34;[^&#34;\r\n]*\&#34;" class="literal" />
+ <color pattern="//[^\r\n]*" class="comment" />
+ <color pattern="\b((abstract)|(array)|(bool)|(break)|(case)|(catch)|(char)|(class)|(const)|(continue)|(default)|(delegate)|(delete)|(deprecated)|(dllexport)|(dllimport)|(do)|(double)|(else)|(enum)|(event)|(explicit)|(extern)|(false)|(finally)|(float)|(for)|(friend)|(gcnew)|(generic)|(goto)|(if)|(initonly)|(inline)|(int)|(interface)|(literal)|(long)|(mutable)|(naked)|(namespace)|(new)|(noinline)|(noreturn)|(nothrow)|(novtable)|(nullptr)|(operator)|(private)|(property)|(protected)|(public)|(ref)|(register)|(return)|(safecast)|(sealed)|(selectany)|(short)|(signed)|(sizeof)|(static)|(struct)|(switch)|(template)|(this)|(thread)|(throw)|(true)|(try)|(typedef)|(typeid)|(typename)|(union)|(unsigned)|(using)|(uuid)|(value)|(virtual)|(void)|(volatile)|(while))\b" class="keyword" />
+ </colors>
+ </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.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/topicdata/@parentTopicId)" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/elements//element[@api=$key]/ddue:useBase)" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/elements//element[@api=$key]/overrides/member/@api)" source="ddue:dduexml/ddue:summary" target="/document/reference/elements//element[@api=$key]" />
+ </component>
+ </then>
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in comments for a member list topic's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean(/document/reference/topicdata[@group='list' and @subgroup!='overload'])" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/topicdata[@group='list' and @subgroup!='overload']/@typeTopicId)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </component>
+
+ <!-- Copy in comments for a member's declaring type. -->
+ <component type="Microsoft.Ddue.Tools.IfThenComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <if condition="boolean((/document/reference/topicdata[@group='list' and @subgroup='overload']) | (/document/reference/apidata[@group='member']))" />
+ <then>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <copy name="comments" key="string(/document/reference/containers/type/@api)"
+ source="ddue:dduexml/ddue:summary|ddue:dduexml/ddue:useBase|ddue:dduexml/ddue:obsoleteCodeEntity|ddue:dduexml/ddue:clsCompliantAlternative|ddue:dduexml/ddue:platformNotes|ddue:dduexml/ddue:internalOnly"
+ target="/document/reference/containers" />
+ </component>
+ </then>
+ </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="/document//ddue:token" item="string(.)" />
+ </component>
+
+ <!-- Copy in topicTypes -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <variable expression="/document/comments/ddue:relatedTopics/*/@xlink:href" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
+ <context prefix="xlink" name="http://www.w3.org/1999/xlink" />
+ <index name="topicType" value="/metadata/topic" key="@id">
+ <data base="%DXROOT%\Data\ContentMetadata" recurse="true" files="*.contentmetadata.xml" />
+ </index>
+ <copy name="topicType" source="topicType" target="/document/comments/ddue:relatedTopics/*[@xlink:href='{0}' and not(@topicType_id)]" attribute="true" ignoreCase="true" missing-target="error" />
+ </component>
+ </components>
+ </component>
+
+ <!-- transform -->
+ <component type="Microsoft.Ddue.Tools.TransformComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <transform file="%DXROOT%\Presentation\vs2005\transforms\main_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" />
+ </argument>
+ <argument key="omitAptcaBoilerplate" value="false" />
+ <argument key="RTMReleaseDate" value="June 2007" />
+ </transform>
+ </component>
+
+ <!-- resolve art links -->
+ <component type="Microsoft.Ddue.Tools.ResolveArtLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <targets input="%DXROOT%\Data\ArtStore" baseOutput=".\Output" outputPath="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\reference_content.xml" />
+ <content file="%DXROOT%\Presentation\shared\content\syntax_content.xml" />
+ </component>
+
+ <!-- resolve conceptual links -->
+ <component type="Microsoft.Ddue.Tools.ResolveConceptualLinksComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <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" /> -->
+ <targets files=".\reflection.xml" type="local" />
+ </component>
+
+ <!-- Write out intellisense -->
+ <component type="Microsoft.Ddue.Tools.IntellisenseComponent2" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <output directory=".\Intellisense" />
+ <expressions root="/html/body/div[@id='mainSection']/div[@id='mainBody']"
+ assembly="string(span[@sdata='assembly'])"
+ summary="span[@sdata='authoredSummary']"
+ parameters="div[@id='syntaxSection']/div[@id='parameters']/dl"
+ parameterContent="dd/span[@sdata='authoredParameterSummary']"
+ templates="div[@id='syntaxSection']/div[@id='genericParameters']/dl"
+ templateContent="dd"
+ returns="div[@id='syntaxSection']/div[@id='returns']/span[@sdata='authoredValueSummary']"
+ exception="div[@id='ddueExceptionsSection']/div[@class='tableSection']/table/tr/td[2]"
+ exceptionCref="../td[1]/span[@sdata='cer']"
+ enumeration="div[@id='enumerationSection']/div[@id='membersSection']/table[@class='members']/tr/td[3]"
+ enumerationApi="../td[2]"
+ memberSummary="span[@sdata='memberAuthoredSummary']" />
+ </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')" link="../html" 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="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 237a27e..0c5a7ff 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-scbuild.config
@@ -41,13 +41,55 @@
</components>
</component>
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <!-- Copy in extension method template/type data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/elements//element[@source='extension']/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@api=$key) and not(apidata)]" />
+ <copy name="reflection" source="templates" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@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">
+ <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>
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in templates type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/templates//type[@api=$key]" />
+ <copy name="reflection" source="templates" target="/document/reference/templates//type[@api=$key and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
</components>
</component>
@@ -73,6 +115,12 @@
<data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
</index>
<copy name="comments" source="*" target="/document/comments" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
</component>
<!-- Copy in reflection data and comments for members -->
@@ -88,7 +136,13 @@
</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]" />
+ <copy name="comments" source="summary|overloads|inheritdoc" target="/document/reference/elements//element[@api=$key]" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
</component>
</components>
</component>
@@ -108,7 +162,7 @@
<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" />
+ <language label="JavaScript" name="JavaScript" style="cs" />
</argument>
</transform>
</component>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
index e4b7612..956c5a6 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle-webref.config
@@ -41,13 +41,55 @@
</components>
</component>
- <!-- Copy in parameter data -->
- <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <!-- Copy in extension method template/type data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/elements//element[@source='extension']/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@api=$key) and not(apidata)]" />
+ <copy name="reflection" source="templates" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@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">
+ <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>
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in templates type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/templates//type[@api=$key]" />
+ <copy name="reflection" source="templates" target="/document/reference/templates//type[@api=$key and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/type[@api=$key]" />
+ </component>
</components>
</component>
@@ -73,6 +115,12 @@
<data base="%DxTempDir%\Comments\" recurse="false" files="*.xml" />
</index>
<copy name="comments" source="*" target="/document/comments" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
</component>
<!-- Copy in reflection data and comments for members -->
@@ -88,7 +136,13 @@
</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]" />
+ <copy name="comments" source="summary|overloads|inheritdoc" target="/document/reference/elements//element[@api=$key]" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
</component>
</components>
</component>
@@ -108,7 +162,7 @@
<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" />
+ <language label="JavaScript" name="JavaScript" style="cs" />
</argument>
</transform>
</component>
diff --git a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
index 8522fd9..7d45cf8 100644
--- a/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
+++ b/tools/Sandcastle/Presentation/vs2005/configuration/sandcastle.config
@@ -1,141 +1,195 @@
<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" />
+ <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 extension method template/type data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/elements//element[@source='extension']/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@api=$key) and not(apidata)]" />
+ <copy name="reflection" source="templates" target="/document/reference/elements//element[@source='extension']/templates//type[boolean(@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>
+
+ <!-- Copy in templates type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/templates//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata" target="/document/reference/templates//type[@api=$key]" />
+ <copy name="reflection" source="templates" target="/document/reference/templates//type[@api=$key and not(specialization)]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in return type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/returns//type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/returns//type[@api=$key]" />
+ </component>
+ </components>
+ </component>
+
+ <!-- Copy in event handler type reflection data -->
+ <component type="Microsoft.Ddue.Tools.ForEachComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <variable expression="/document/reference/eventhandler/type/@api" />
+ <components>
+ <component type="Microsoft.Ddue.Tools.CopyFromIndexComponent" assembly="%DXROOT%\ProductionTools\BuildComponents.dll">
+ <copy name="reflection" source="apidata|typedata|family|templates|containers|attributes" target="/document/reference/eventhandler/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.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" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
+ </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|inheritdoc" target="/document/reference/elements//element[@api=$key]" />
+ <components>
+ <!-- copy comments for inheritdoc -->
+ <component type="Microsoft.Ddue.Tools.InheritDocumentationComponent" assembly="%DXROOT%\ProductionTools\CopyComponents.dll">
+ <copy name="comments" use="reflection"/>
+ </component>
+ </components>
+ </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>
+ <language label="JavaScript" name="JavaScript" style="cs" />
+ </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/transforms/conceptualMetadataHelp20.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp20.xsl
new file mode 100644
index 0000000..0cb6330
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp20.xsl
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ 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:msxsl="urn:schemas-microsoft-com:xslt"
+ exclude-result-prefixes="msxsl"
+>
+
+ <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>
+ </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) &gt; 254">
+ <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" />
+ </xsl:when>
+ <xsl:when test="string-length($abstract) &gt; 0">
+ <MSHelp:Attr Name="Abstract" Value="{$abstract}" />
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- Autogenerate codeLang attributes based on the snippets -->
+ <xsl:call-template name="mshelpCodelangAttributes">
+ <xsl:with-param name="snippets" select="/document/topic/*//ddue:snippets/ddue:snippet" />
+ </xsl:call-template>
+
+ <!-- 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:stylesheet>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl
new file mode 100644
index 0000000..54af982
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/conceptualMetadataHelp30.xsl
@@ -0,0 +1,183 @@
+<?xml version="1.0" encoding="utf-8"?>
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
+ xmlns:msxsl="urn:schemas-microsoft-com:xslt"
+
+ exclude-result-prefixes="msxsl"
+>
+
+ <xsl:template name="insertKeywordsF1Metadata">
+
+ <!-- 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')">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="kIndexTermWithTechQualifier">
+ <parameter>
+ <xsl:value-of select="text()"/>
+ </parameter>
+ <parameter>
+ <xsl:value-of select="$docset"/>
+ </parameter>
+ <parameter>
+ <xsl:value-of select="$nestedKeywordText"/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="System.Keywords" content="{concat(text(),$nestedKeywordText)}" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+
+ <!-- authored F -->
+ <xsl:for-each select="/document/metadata/keyword[@index='F']">
+ <meta name="Microsoft.Help.F1">
+ <xsl:attribute name="content">
+ <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>
+ </meta>
+ </xsl:for-each>
+
+ <!-- authored B -->
+ <xsl:for-each select="/document/metadata/keyword[@index='B']">
+ <meta name="Microsoft.Help.F1">
+ <xsl:attribute name="content">
+ <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>
+ </meta>
+ </xsl:for-each>
+
+ </xsl:template>
+
+ <xsl:template name="insert30Metadata">
+
+ <!-- System.Language -->
+ <meta name="Language">
+ <includeAttribute name="content" item="locale" />
+ </meta>
+
+ <!-- System.Title -->
+ <!-- <title> is set elsewhere (eg, main_conceptual.xsl, utilities_reference.xsl) -->
+
+ <!-- System.Keywords -->
+ <xsl:call-template name="insertKeywordsF1Metadata" />
+
+ <!-- Microsoft.Help.Id -->
+ <meta name="Microsoft.Help.Id" content="{/document/topic/@id}" />
+
+ <!-- Microsoft.Help.Description -->
+ <xsl:variable name="abstract" select="string(/document/topic//ddue:para[1])" />
+ <xsl:if test="$abstract">
+ <meta name="Description">
+ <xsl:attribute name="content">
+ <xsl:call-template name="trimAtPeriod">
+ <xsl:with-param name="string" select="$abstract" />
+ </xsl:call-template>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+
+ <!-- Microsoft.Help.TocParent -->
+ <xsl:for-each select="/document/metadata/attribute[@name='TOCParent']">
+ <meta name="Microsoft.Help.TocParent" content="{.}" />
+ <meta name="Microsoft.Help.TocOrder" content="0" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.Product -->
+ <!-- Added by MTPS -->
+
+ <!-- Microsoft.Help.ProductVersion -->
+ <!-- Added by MTPS -->
+
+ <!-- Microsoft.Help.Category -->
+ <xsl:for-each select="/document/metadata/attribute[@name='Category']">
+ <meta name="Microsoft.Help.Category" content="{.}" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.ContentFilter -->
+ <xsl:for-each select="/document/metadata/attribute[@name='ContentFilter']">
+ <meta name="Microsoft.Help.ContentFilter" content="{.}" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.ContentType -->
+ <xsl:variable name="contentTypeDocStudio">
+ <xsl:variable name="lookupValue">
+ <xsl:value-of select="local-name(/document/topic/*[1])"/>
+ </xsl:variable>
+ <xsl:value-of select="msxsl:node-set($topicTypes)/topic[@name = $lookupValue]/text()"/>
+ </xsl:variable>
+
+ <xsl:variable name="contentTypeTopicType">
+ <xsl:variable name="lookupValue">
+ <xsl:value-of select="translate(/document/metadata/topicType/@id,
+ 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ')"/>
+ </xsl:variable>
+ <xsl:value-of select="msxsl:node-set($topicTypes)/topic[@guid = $lookupValue]/text()"/>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$contentTypeDocStudio">
+ <meta name="Microsoft.Help.ContentType" content="{$contentTypeDocStudio}" />
+ </xsl:when>
+ <xsl:when test="$contentTypeTopicType">
+ <meta name="Microsoft.Help.ContentType" content="{$contentTypeTopicType}" />
+ </xsl:when>
+ </xsl:choose>
+
+ <!-- Microsoft.Package.Book -->
+ <xsl:variable name="Book" select="/document/metadata/attribute[@name='Book']/text()" />
+ <xsl:if test="$Book">
+ <meta name="Microsoft.Package.Book" content="{$Book}" />
+ </xsl:if>
+
+ <!-- Source -->
+ <xsl:for-each select="/document/metadata/attribute[@name='Source']">
+ <meta name="Source" content="{.}" />
+ </xsl:for-each>
+
+ </xsl:template>
+
+
+ <xsl:variable name="topicTypes">
+ <topic guid="EF7DDB37-8ED3-4DFA-B38D-5A3CC1906034" name="">Concepts</topic>
+ <topic guid="1FE70836-AA7D-4515-B54B-E10C4B516E50" name="developerConceptualDocument">Concepts</topic>
+ <topic guid="B137C930-7BF7-48A2-A329-3ADCAEF8868E" name="developerOrientationDocument">Concepts</topic>
+ <topic guid="68F07632-C4C5-4645-8DFA-AC87DCB4BD54" name="developerSDKTechnologyOverviewArchitectureDocument">Concepts</topic>
+ <topic guid="CDB8C120-888F-447B-8AF8-F9540562E7CA" name="developerSDKTechnologyOverviewOrientationDocument">Concepts</topic>
+ <topic guid="356C57C4-384D-4AF2-A637-FDD6F088A033" name="developerSDKTechnologyOverviewScenariosDocument">Concepts</topic>
+ <topic guid="19F1BB0E-F32A-4D5F-80A9-211D92A8A715" name="developerSDKTechnologyOverviewTechnologySummaryDocument">Concepts</topic>
+ <topic guid="56DB00EC-28BA-4C0D-8694-28E8B244E236" name="developerWhitePaperDocument">Concepts</topic>
+ <topic guid="B137C930-7BF7-48A2-A329-3ADCAEF8868E" name="developerOrientationDocument">Concepts</topic>
+
+ <topic guid="DAC3A6A0-C863-4E5B-8F65-79EFC6A4BA09" name="developerHowToDocument">How To</topic>
+ <topic guid="4779DD54-5D0C-4CC3-9DB3-BF1C90B721B3" name="developerWalkthroughDocument">How To</topic>
+
+ <topic guid="A635375F-98C2-4241-94E7-E427B47C20B6" name="developerErrorMessageDocument">Reference</topic>
+ <topic guid="95DADC4C-A2A6-447A-AA36-B6BE3A4F8DEC" name="developerReferenceWithSyntaxDocument">Reference</topic>
+ <topic guid="F9205737-4DEC-4A58-AA69-0E621B1236BD" name="developerReferenceWithoutSyntaxDocument">Reference</topic>
+ <topic guid="38C8E0D1-D601-4DBA-AE1B-5BEC16CD9B01" name="developerTroubleshootingDocument">Reference</topic>
+ <topic guid="B8ED9F21-39A4-4967-928D-160CD2ED9DCE" name="developerUIReferenceDocument">Reference</topic>
+ <topic guid="3272D745-2FFC-48C4-9E9D-CF2B2B784D5F" name="developerXmlReference">Reference</topic>
+ <topic guid="A689E19C-2687-4881-8CE1-652FF60CF46C" name="developerGlossaryDocument">Reference</topic>
+
+ <topic guid="069EFD88-412D-4E2F-8848-2D5C3AD56BDE" name="developerSampleDocument">Samples</topic>
+ <topic guid="4BBAAF90-0E5F-4C86-9D31-A5CAEE35A416" name="developerSDKTechnologyOverviewCodeDirectoryDocument">Samples</topic>
+ <topic guid="4A273212-0AC8-4D72-8349-EC11CD2FF8CD" name="">Samples</topic>
+ </xsl:variable>
+
+</xsl:stylesheet>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl
index c878e22..a6cde9a 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/globalTemplates.xsl
@@ -174,7 +174,8 @@
<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'">
+ <!-- Added JavaScript to look for AJAX snippets as JScript represents javascript snippets-->
+ <xsl:if test="$codeLangLC='visualbasic' or $codeLangLC='csharp' or $codeLangLC='managedcplusplus' or $codeLangLC='jsharp' or $codeLangLC='jscript' or $codeLangLC='javascript' or $codeLangLC='fsharp' ">
<include item="{$codeLang}"/>
</xsl:if>
<xsl:text>&#xa0;</xsl:text>
@@ -182,6 +183,7 @@
<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="alt" item="copyImage" />
<includeAttribute name="title" item="copyImage" />
<includeAttribute name="src" item="iconPath">
<parameter>copycode.gif</parameter>
@@ -202,11 +204,6 @@
</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">
@@ -224,4 +221,107 @@
</include>
</xsl:template>
+ <xsl:template name="mshelpCodelangAttributes">
+ <xsl:param name="snippets" />
+ <xsl:for-each select="$snippets">
+
+ <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 = 'XAML' or @language = 'xaml'">
+ <xsl:text>XAML</xsl:text>
+ </xsl:when>
+ <xsl:when test="@language = 'JavaScript' or @language = 'javascript'">
+ <xsl:text>JavaScript</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'" />
+ <!-- If $codeLang is already authored, then do nothing -->
+ <xsl:when test="/document/metadata/attribute[@name='codelang']/text() = $codeLang" />
+ <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 name="codeLang">
+ <xsl:param name="codeLang" />
+ <MSHelp:Attr Name="codelang" Value="{$codeLang}" />
+ </xsl:template>
+
+ <xsl:template name="trimAtPeriod">
+ <xsl:param name="string" />
+
+ <xsl:variable name="trimmedString" select="substring(normalize-space($string), 1, 256)" />
+ <xsl:choose>
+ <xsl:when test="normalize-space($string) != $trimmedString">
+ <xsl:choose>
+ <xsl:when test="not(contains($trimmedString, '.'))">
+ <xsl:value-of select="$trimmedString"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="substringAndLastPeriod">
+ <xsl:with-param name="string" select="$trimmedString" />
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="normalize-space($string)"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="substringAndLastPeriod">
+ <xsl:param name="string" />
+
+ <xsl:if test="contains($string, '.')">
+ <xsl:variable name="after" select="substring-after($string, '.')" />
+ <xsl:value-of select="concat(substring-before($string, '.'),'.')" />
+ <xsl:if test="contains($after, '.')">
+ <xsl:call-template name="substringAndLastPeriod">
+ <xsl:with-param name="string" select="$after" />
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:if>
+ </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 099857d..b12b082 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/htmlBody.xsl
@@ -110,27 +110,32 @@
<!--all members only -->
<xsl:if test="$subgroup='members'">
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='constructor']">
+ <xsl:if test="/document/reference/elements/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']))]">
<!-- 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:if test="/document/reference/elements/element[apidata[@subgroup='method']][.//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 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:if test="/document/reference/elements/element/apidata[@subsubgroup='operator']">
+ <xsl:call-template name="memberTableLink">
+ <xsl:with-param name="headerGroup">operator</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="/document/reference/elements/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 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:if test="/document/reference/elements/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 name="memberTableLink">
<xsl:with-param name="headerGroup">property</xsl:with-param>
</xsl:call-template>
@@ -142,7 +147,7 @@
</xsl:call-template>
</xsl:if>
- <xsl:if test="/document/reference/elements/element/apidata[@subgroup='event' and not(@subsubgroup)]">
+ <xsl:if test="/document/reference/elements/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 name="memberTableLink">
<xsl:with-param name="headerGroup">event</xsl:with-param>
</xsl:call-template>
@@ -203,7 +208,7 @@
<xsl:template name="bodyHeaderTopTable">
<xsl:variable name="showDevlangsFilter" select="boolean(($languages != 'false') and (count($languages/language) &gt; 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)"/>
+ <xsl:variable name="showMemberFrameworksFilter" select="boolean($group='list' and $subgroup!='DerivedTypeList' and /document/reference/elements//element[count(versions/versions) &gt; 1])"/>
<table id="topTable" cellspacing="0" cellpadding="0">
<tr>
<td>
@@ -448,12 +453,14 @@ copyHoverImage - overview (not namespace); list (only overload lists ctor, metho
<includeAttribute name="src" item="iconPath">
<parameter>collapse_all.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="collapseImage" />
<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="alt" item="expandImage" />
<includeAttribute name="title" item="expandImage" />
</img>
<img id="collapseAllImage" style="display:none; height:0; width:0;">
@@ -480,12 +487,14 @@ copyHoverImage - overview (not namespace); list (only overload lists ctor, metho
<includeAttribute name="src" item="iconPath">
<parameter>copycode.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="copyImage" />
<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="alt" item="copyHoverImage" />
<includeAttribute name="title" item="copyHoverImage" />
</img>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
index 41daf9c..427d8be 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_conceptual.xsl
@@ -9,8 +9,12 @@
<xsl:output method="xml" indent="no" encoding="utf-8" />
+ <xsl:param name="changeHistoryOptions" />
<xsl:include href="htmlBody.xsl" />
<xsl:include href="utilities_dduexml.xsl" />
+ <xsl:include href="seeAlsoSection.xsl" />
+ <xsl:include href="conceptualMetadataHelp30.xsl"/>
+ <xsl:include href="conceptualMetadataHelp20.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)"/>
@@ -31,9 +35,11 @@
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>
<META NAME="save" CONTENT="history"/>
+ <xsl:call-template name="insertNoIndexNoFollow" />
<title>
<xsl:call-template name="topicTitlePlain"/>
</title>
+ <xsl:call-template name="insert30Metadata" />
<xsl:call-template name="insertStylesheets" />
<xsl:call-template name="insertScripts" />
<xsl:call-template name="insertMetadata" />
@@ -47,6 +53,12 @@
<!-- document head -->
+ <xsl:template name="insertNoIndexNoFollow">
+ <xsl:if test="/document/metadata/attribute[@name='NoSearch']">
+ <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW" />
+ </xsl:if>
+ </xsl:template>
+
<xsl:template name="insertStylesheets">
<link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
<!-- make mshelp links work -->
@@ -100,151 +112,6 @@
</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) &gt; 254">
- <MSHelp:Attr Name="Abstract" Value="{concat(substring($abstract,1,250), ' ...')}" />
- </xsl:when>
- <xsl:when test="string-length($abstract) &gt; 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']">
@@ -286,10 +153,11 @@
<div id="mainSection">
<div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()">
- <include item="header" />
- </div>
- <!--<xsl:call-template name="head" />-->
+ <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/>
+
+ <!-- 'header' shared content item is used to show optional boilerplate at the top of the topic's scrolling region, e.g. pre-release boilerplate -->
+ <include item="header" />
+
<xsl:call-template name="body" />
</div>
<xsl:call-template name="foot" />
@@ -297,12 +165,17 @@
</xsl:template>
- <!--<xsl:template name="head">
- <include item="header" />
- </xsl:template>-->
-
<xsl:template name="body">
+ <!-- freshness date -->
+ <xsl:call-template name="writeFreshnessDate">
+ <xsl:with-param name="ChangedHistoryDate" select="/document/topic/*//ddue:section[ddue:title = 'Change History']/ddue:content/ddue:table/ddue:row[1]/ddue:entry[1] |
+ /document/topic/*/ddue:changeHistory/ddue:content/ddue:table/ddue:row[1]/ddue:entry[1]" />
+ </xsl:call-template>
+
<xsl:apply-templates select="topic" />
+
+ <!-- changed table section -->
+ <xsl:call-template name="writeChangeHistorySection" />
</xsl:template>
<!-- sections that behave differently in conceptual and reference -->
@@ -332,13 +205,30 @@
<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:choose>
+ <xsl:when test="(normalize-space(ddue:content)='') and ddue:sections/ddue:section[ddue:title='Property Value']">
+ <xsl:call-template name="section">
+ <xsl:with-param name="toggleSwitch" select="'returnValue'"/>
+ <xsl:with-param name="title">
+ <include item="propertyValueTitle" />
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:apply-templates select="ddue:sections/ddue:section[ddue:title='Property Value']/*" />
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <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:otherwise>
+ </xsl:choose>
</xsl:if>
</xsl:template>
@@ -366,76 +256,20 @@
</xsl:if>
</xsl:template>
- <xsl:template match="ddue:relatedTopics">
+ <xsl:template match="ddue:relatedTopics">
<xsl:if test="$hasSeeAlsoSection">
- <xsl:call-template name="section">
+ <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="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:apply-templates select="/document/topic/*/ddue:relatedTopics" mode="seeAlso" />
+ </xsl:with-param>
+ </xsl:call-template>
</xsl:if>
- </xsl:template>
-
+ </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(.)!='']">
@@ -475,6 +309,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>footer.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="footerImage" />
<includeAttribute name="title" item="footerImage" />
</img>
</div>
@@ -544,7 +379,7 @@
<xsl:if test="starts-with($outlineType,'toplevel') and //ddue:relatedTopics[normalize-space(.)!='']">
<li>
<A>
- <xsl:attribute name="HREF">#seeAlsoSection</xsl:attribute>
+ <xsl:attribute name="HREF">#seeAlsoToggle</xsl:attribute>
<include item="RelatedTopicsLinkText"/>
</A>
</li>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
index b2a3f63..970ac6d 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_reference.xsl
@@ -7,11 +7,17 @@
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>
- <!-- stuff specific to comments authored in DDUEXML -->
+ <xsl:param name="omitAptcaBoilerplate"/>
+ <xsl:param name="changeHistoryOptions" />
+ <xsl:param name="omitXmlnsBoilerplate" select="'false'" />
+ <xsl:param name="omitVersionInformation" select="'false'" />
+
+ <!-- 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:include href="seeAlsoSection.xsl"/>
<xsl:variable name="summary" select="normalize-space(/document/comments/ddue:dduexml/ddue:summary)" />
@@ -26,18 +32,65 @@
(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="examplesSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0) and not($securityCriticalSection)"/>
<xsl:variable name="languageFilterSection" select="boolean(string-length(/document/comments/ddue:dduexml/ddue:codeExamples[normalize-space(.)]) > 0)" />
+ <xsl:variable name="securityCriticalSection"
+ select="boolean(
+ (/document/reference/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and
+ not(/document/reference/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute'])) or
+ (/document/reference/containers/type/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and
+ not(/document/reference/containers/type/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute'])) or
+ ($api-subgroup='property' and
+ (((/document/reference/getter and (/document/reference/getter/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/getter/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))) and
+ (/document/reference/setter and (/document/reference/setter/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/setter/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute'])))) or
+ ((/document/reference/getter and (/document/reference/getter/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/getter/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))) and not(/document/reference/setter)) or
+ (not(/document/reference/getter) and (/document/reference/setter and (/document/reference/setter/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/setter/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))))
+ )) or
+ ($api-subgroup='event' and
+ (((/document/reference/adder and (/document/reference/adder/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/adder/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))) and
+ (/document/reference/remover and (/document/reference/remover/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/remover/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute'])))) or
+ ((/document/reference/adder and (/document/reference/adder/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/adder/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))) and not(/document/reference/remover)) or
+ (not(/document/reference/adder) and (/document/reference/remover and (/document/reference/remover/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and not(/document/reference/remover/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))))
+ ))
+ )" />
+
<xsl:template name="body">
+ <!-- freshness date -->
+ <xsl:call-template name="writeFreshnessDate">
+ <xsl:with-param name="ChangedHistoryDate" select="/document/comments/ddue:dduexml//ddue:section[ddue:title = 'Change History']/ddue:content/ddue:table/ddue:row[1]/ddue:entry[1] |
+ /document/comments/ddue:dduexml/ddue:changeHistory/ddue:content/ddue:table/ddue:row[1]/ddue:entry[1]"/>
+ </xsl:call-template>
<!--internalOnly boilerplate -->
+ <xsl:if test="not($securityCriticalSection)">
<xsl:call-template name="internalOnly"/>
+ </xsl:if>
<!-- obsolete boilerplate -->
<xsl:if test="/document/reference/attributes/attribute/type[@api='T:System.ObsoleteAttribute']">
<xsl:call-template name="obsoleteSection" />
</xsl:if>
+ <!-- SecurityCritical boilerplate -->
+ <xsl:if test="$securityCriticalSection">
+ <xsl:choose>
+ <xsl:when test="boolean($api-group='type')">
+ <include item="typeSecurityCriticalBoilerplate" />
+ </xsl:when>
+ <xsl:when test="boolean($api-group='member')">
+ <xsl:choose>
+ <xsl:when test="(/document/reference/containers/type/attributes/attribute/type[@api='T:System.Security.SecurityCriticalAttribute'] and
+ not(/document/reference/containers/type/attributes/attribute/type[@api='T:System.Security.SecurityTreatAsSafeAttribute']))">
+ <include item="typeSecurityCriticalBoilerplate" />
+ </xsl:when>
+ <xsl:otherwise>
+ <include item="memberSecurityCriticalBoilerplate" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:if>
+
<!-- summary -->
<!-- useBase boilerplate -->
<xsl:if test="/document/comments/ddue:dduexml/ddue:useBase and /document/reference/overrides/member">
@@ -49,7 +102,10 @@
</xsl:if>
<xsl:choose>
<xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:summary[1]) != ''">
- <span data="authoredSummary">
+ <span sdata="authoredSummary">
+ <xsl:if test="$securityCriticalSection">
+ <p><include item="securityCritical" /></p>
+ </xsl:if>
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:summary[1]" />
</span>
</xsl:when>
@@ -70,7 +126,7 @@
<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>
+ <parameter><referenceLink target="T:System.FlagsAttribute" /></parameter>
</include>
</p>
</xsl:if>
@@ -142,22 +198,30 @@
</xsl:when>
</xsl:choose>
<!-- exceptions -->
+ <xsl:if test="not($securityCriticalSection)">
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:exceptions" />
+ </xsl:if>
<!-- remarks -->
- <xsl:if test="not($group='namespace')">
+ <xsl:if test="not($group='namespace') and not($securityCriticalSection)">
<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 test="/document/comments/ddue:dduexml/ddue:remarks">
+ <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:remarks" />
</xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="WriteRemarksSection">
+ <xsl:with-param name="node" select="document/comments/ddue:dduexml" />
+ </xsl:call-template>
+ </xsl:otherwise>
</xsl:choose>
</xsl:if>
<!-- example -->
+ <xsl:if test="not($securityCriticalSection)">
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:codeExamples" />
+ </xsl:if>
<!-- permissions -->
+ <xsl:if test="not($securityCriticalSection)">
<xsl:call-template name="permissionsSection"/>
+ </xsl:if>
<!-- inheritance -->
<xsl:apply-templates select="/document/reference/family" />
<!-- other comment sections -->
@@ -173,6 +237,9 @@
<!-- see also -->
<xsl:call-template name="seeAlsoSection"/>
+ <!-- changed table section -->
+ <xsl:call-template name="writeChangeHistorySection" />
+
</xsl:template>
<xsl:template name="obsoleteSection">
@@ -204,7 +271,7 @@
<xsl:param name="name" />
<xsl:choose>
<xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter) != ''">
- <span data="authoredParameterSummary">
+ <span sdata="authoredParameterSummary">
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:parameters[1]/ddue:parameter[string(ddue:parameterReference)=$name]/ddue:content" />
</span>
</xsl:when>
@@ -217,7 +284,7 @@
<xsl:template name="getReturnsDescription">
<xsl:choose>
<xsl:when test="normalize-space(/document/comments/ddue:dduexml/ddue:returnValue[1]) != ''">
- <span data="authoredValueSummary">
+ <span sdata="authoredValueSummary">
<xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:returnValue[1]" />
</span>
</xsl:when>
@@ -228,6 +295,9 @@
</xsl:template>
<xsl:template match="returns">
+ <xsl:choose>
+ <xsl:when test="$api-subgroup='field' and normalize-space(/document/comments/ddue:dduexml/ddue:returnValue[1]) = '' and normalize-space(/document/comments/ddue:dduexml/ddue:returnValue[2]) = ''"/>
+ <xsl:otherwise>
<div id="returns">
<xsl:call-template name="subSection">
<xsl:with-param name="title">
@@ -252,6 +322,8 @@
</xsl:with-param>
</xsl:call-template>
</div>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:template>
<xsl:template match="templates">
<div id="genericParameters">
@@ -260,12 +332,19 @@
<xsl:with-param name="content">
<xsl:for-each select="template">
<xsl:variable name="parameterName" select="@name" />
+ <xsl:variable name="contravariant">
+ <xsl:if test="variance/@contravariant='true'"><include item="inKeyword"/></xsl:if>
+ </xsl:variable>
+ <xsl:variable name="covariant">
+ <xsl:if test="variance/@covariant='true'"><include item="outKeyword" /></xsl:if>
+ </xsl:variable>
<dl paramName="{$parameterName}">
<dt>
- <span class="parameter"><xsl:value-of select="$parameterName"/></span>
+ <xsl:copy-of select="$contravariant"/><xsl:copy-of select="$covariant" /><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" />
+ <xsl:if test="variance"><p><xsl:if test="variance/@contravariant='true'"><include item="contravariant" /></xsl:if><xsl:if test="variance/@covariant='true'"><include item="covariant" /></xsl:if><include item="variance" /></p></xsl:if>
</dd>
</dl>
</xsl:for-each>
@@ -277,7 +356,7 @@
<xsl:template name="getElementDescription">
<xsl:choose>
<xsl:when test="normalize-space(ddue:summary[1]) != ''">
- <span data="memberAuthoredSummary">
+ <span sdata="memberAuthoredSummary">
<xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" />
</span>
</xsl:when>
@@ -326,6 +405,11 @@
<div id="syntaxCodeBlocks" class="code">
<xsl:call-template name="syntaxBlocks" />
</div>
+ <xsl:apply-templates select="/document/syntax/div[@codeLanguage=XAML]"/>
+
+ <!-- Show the authored XAML Values section, if any. -->
+ <xsl:call-template name="showXamlValuesSection"/>
+
<!-- parameters & return value -->
<xsl:apply-templates select="/document/reference/templates" />
<xsl:apply-templates select="/document/reference/parameters" />
@@ -392,7 +476,7 @@
<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:variable name="showAptcaBoilerplate" select="boolean(/document/reference/containers/library/noAptca and $omitAptcaBoilerplate!='true')"/>
<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'" />
@@ -434,56 +518,10 @@
<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 name="codelangAttributes">
+ <xsl:call-template name="mshelpCodelangAttributes">
+ <xsl:with-param name="snippets" select="/document/comments/ddue:dduexml/ddue:codeExamples/ddue:codeExample/ddue:legacy/ddue:content/ddue:snippets/ddue:snippet" />
+ </xsl:call-template>
</xsl:template>
<xsl:template match="ddue:codeEntityReference" mode="abstract">
@@ -492,20 +530,6 @@
</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">
@@ -515,6 +539,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>footer.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="footerImage" />
<includeAttribute name="title" item="footerImage" />
</img>
</div>
@@ -535,5 +560,37 @@
</include>
</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">
+ <xsl:choose>
+ <xsl:when test="count(/document/comments/ddue:dduexml/ddue:relatedTopics/*) > 0">
+ <xsl:apply-templates select="/document/comments/ddue:dduexml/ddue:relatedTopics" mode="seeAlso">
+ <xsl:with-param name="autoGenerateLinks" select="'true'" />
+ </xsl:apply-templates>
+ </xsl:when>
+ <xsl:otherwise>
+ <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:with-param>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </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 3b9b642..9954a00 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/main_sandcastle.xsl
@@ -1,25 +1,25 @@
<?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 -->
+ <!-- stuff specified to comments authored in DDUEXML -->
+ <xsl:param name="omitXmlnsBoilerplate" select="'false'" />
-
- <xsl:include href="htmlBody.xsl"/>
+ <xsl:include href="htmlBody.xsl"/>
<xsl:include href="utilities_reference.xsl" />
- <xsl:variable name="summary" select="normalize-space(/document/comments/summary)" />
+ <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
+ <xsl:variable name="hasSeeAlsoSection" select="boolean((count(/document/comments//seealso | /document/reference/elements/element/overloads//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" /> -->
+
+ <!-- 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:apply-templates select="/document/comments/summary" />
<xsl:if test="$subgroup='overload'">
<xsl:apply-templates select="/document/reference/elements" mode="overloadSummary" />
</xsl:if>
@@ -27,72 +27,74 @@
<xsl:if test="not($group='list' or $group='root' or $group='namespace')">
<xsl:call-template name="requirementsInfo"/>
</xsl:if>
- <!-- syntax -->
+ <!-- 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>
+ <!-- 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: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" />
+ <!-- exceptions -->
+ <xsl:call-template name="exceptions" />
+ <!-- contracts -->
+ <xsl:call-template name="contracts" />
+ <!-- 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 -->
+ <!-- see also -->
<xsl:call-template name="seealso" />
- </xsl:template>
+ </xsl:template>
- <xsl:template name="getParameterDescription">
- <xsl:param name="name" />
- <xsl:apply-templates select="/document/comments/param[@name=$name]" />
- </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="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="getElementDescription">
+ <xsl:apply-templates select="summary[1]" />
+ </xsl:template>
<xsl:template name="getOverloadSummary">
<xsl:apply-templates select="overloads" mode="summary"/>
@@ -103,28 +105,28 @@
</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="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: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>
@@ -133,7 +135,7 @@
<xsl:apply-templates select="example"/>
</xsl:template>
- <xsl:template match="value">
+ <xsl:template match="value">
<xsl:call-template name="subSection">
<xsl:with-param name="title">
<include item="fieldValueTitle" />
@@ -142,9 +144,9 @@
<xsl:apply-templates />
</xsl:with-param>
</xsl:call-template>
- </xsl:template>
+ </xsl:template>
- <xsl:template match="returns">
+ <xsl:template match="returns">
<xsl:call-template name="subSection">
<xsl:with-param name="title">
<include item="methodValueTitle" />
@@ -179,28 +181,38 @@
</xsl:call-template>
</xsl:template>
- <xsl:template match="remarks">
- <xsl:call-template name="section">
+ <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: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: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: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="para">
+ <p>
+ <xsl:apply-templates />
+ </p>
+ </xsl:template>
+
+ <xsl:template match="code">
- <xsl:template match="code">
-
<xsl:variable name="codeLang">
<xsl:choose>
<xsl:when test="@language = 'vbs'">
@@ -243,34 +255,253 @@
<xsl:with-param name="codeLang" select="$codeLang" />
</xsl:call-template>
- </xsl:template>
+ </xsl:template>
- <xsl:template name="exceptions">
- <xsl:if test="count(/document/comments/exception) &gt; 0">
- <xsl:call-template name="section">
+ <xsl:template name="exceptions">
+ <xsl:if test="count(/document/comments/exception) &gt; 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">
+ <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>
+ <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="contracts">
+ <xsl:variable name="requires" select="/document/comments/requires" />
+ <xsl:variable name="ensures" select="/document/comments/ensures" />
+ <xsl:variable name="ensuresOnThrow" select="/document/comments/ensuresOnThrow" />
+ <xsl:variable name="invariants" select="/document/comments/invariant" />
+ <xsl:variable name="setter" select="/document/comments/setter" />
+ <xsl:variable name="getter" select="/document/comments/getter" />
+ <xsl:variable name="pure" select="/document/comments/pure" />
+ <xsl:if test="$requires or $ensures or $ensuresOnThrow or $invariants or $setter or $getter or $pure">
+ <xsl:call-template name="section">
+ <xsl:with-param name="toggleSwitch" select="'contracts'"/>
+ <xsl:with-param name="title">
+ <include item="contractsTitle" />
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <!--Purity-->
+ <xsl:if test="$pure">
+ <xsl:text>This method is pure.</xsl:text>
+ </xsl:if>
+ <!--Contracts-->
+ <div class="tableSection">
+ <xsl:if test="$getter">
+ <xsl:variable name="getterRequires" select="$getter/requires"/>
+ <xsl:variable name="getterEnsures" select="$getter/ensures"/>
+ <xsl:variable name="getterEnsuresOnThrow" select="$getter/ensuresOnThrow"/>
+ <xsl:call-template name="subSection">
+ <xsl:with-param name="title">
+ <include item="getterTitle" />
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="$getterRequires">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="requiresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$getterRequires"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$getterEnsures">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$getterEnsures"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$getterEnsuresOnThrow">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresOnThrowNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$getterEnsuresOnThrow"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$setter">
+ <xsl:variable name="setterRequires" select="$setter/requires"/>
+ <xsl:variable name="setterEnsures" select="$setter/ensures"/>
+ <xsl:variable name="setterEnsuresOnThrow" select="$setter/ensuresOnThrow"/>
+ <xsl:call-template name="subSection">
+ <xsl:with-param name="title">
+ <include item="setterTitle" />
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="$setterRequires">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="requiresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$setterRequires"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$setterEnsures">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$setterEnsures"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$setterEnsuresOnThrow">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresOnThrowNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$setterEnsuresOnThrow"/>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$requires">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="requiresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$requires"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$ensures">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$ensures"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$ensuresOnThrow">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="ensuresOnThrowNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$ensuresOnThrow"/>
+ </xsl:call-template>
+ </xsl:if>
+ <xsl:if test="$invariants">
+ <xsl:call-template name="contractsTable">
+ <xsl:with-param name="title">
+ <include item="invariantsNameHeader"/>
+ </xsl:with-param>
+ <xsl:with-param name="contracts" select="$invariants"/>
+ </xsl:call-template>
+ </xsl:if>
+ </div>
+ <!--Contracts link-->
+ <div class="contractsLink">
+ <a>
+ <xsl:attribute name="target">
+ <xsl:text>_blank</xsl:text>
+ </xsl:attribute>
+ <xsl:attribute name="href">
+ <xsl:text>http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx</xsl:text>
+ </xsl:attribute>
+ <xsl:text>Learn more about contracts</xsl:text>
+ </a>
</div>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:if>
- </xsl:template>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="contractsTable">
+ <xsl:param name="title"/>
+ <xsl:param name="contracts"/>
+ <table width="100%" cellspacing="3" cellpadding="5" frame="lhs" >
+ <tr>
+ <th class="contractsNameColumn">
+ <xsl:copy-of select="$title"/>
+ </th>
+ </tr>
+ <xsl:for-each select="$contracts">
+ <tr>
+ <td>
+ <div class="code" style="margin-bottom: 0pt; white-space: pre-wrap;">
+ <pre style="margin-bottom: 0pt">
+ <xsl:value-of select="."/>
+ </pre>
+ </div>
+ <xsl:if test="@description or @inheritedFrom or @exception">
+ <div style="font-size:95%; margin-left: 10pt;
+ margin-bottom: 0pt">
+ <table
+ class="contractaux"
+ width="100%" frame="void" rules="none" border="0">
+ <colgroup>
+ <col width="10%"/>
+ <col width="90%"/>
+ </colgroup>
+ <xsl:if test="@description">
+ <tr style="border-bottom: 0px none;">
+ <td style="border-bottom: 0px none;">
+ <i><xsl:text>Description: </xsl:text></i>
+ </td>
+ <td style="border-bottom: 0px none;">
+ <xsl:value-of select="@description"/>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@inheritedFrom">
+ <tr style="border-bottom: 0px none;">
+ <td style="border-bottom: 0px none;">
+ <i><xsl:text>Inherited From: </xsl:text></i>
+ </td>
+ <td style="border-bottom: 0px none;">
+ <referenceLink target="{@inheritedFrom}">
+ <xsl:value-of select="@inheritedFromTypeName"/>
+ </referenceLink>
+ </td>
+ </tr>
+ </xsl:if>
+ <xsl:if test="@exception">
+ <tr style="border-bottom: 0px none;">
+ <td style="border-bottom: 0px none;">
+ <i><xsl:text>Exception: </xsl:text></i>
+ </td>
+ <td style="border-bottom: 0px none;">
+ <referenceLink target="{@exception}" qualified="true" />
+ </td>
+ </tr>
+ </xsl:if>
+ </table>
+ </div>
+ </xsl:if>
+ </td>
+ </tr>
+ </xsl:for-each>
+ </table>
+ </xsl:template>
<xsl:template name="permissions">
<xsl:if test="count(/document/comments/permission) &gt; 0">
@@ -282,25 +513,25 @@
<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>
+ <th class="permissionNameColumn">
+ <include item="permissionNameHeader" />
+ </th>
+ <th class="permissionDescriptionColumn">
+ <include item="permissionDescriptionHeader" />
+ </th>
</tr>
- </xsl:for-each>
- </table>
+ <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>
@@ -308,7 +539,7 @@
</xsl:template>
<xsl:template name="seealso">
- <xsl:if test="$hasSeeAlsoSection">
+ <xsl:if test="$hasSeeAlsoSection">
<xsl:call-template name="section">
<xsl:with-param name="toggleSwitch" select="'seeAlso'" />
<xsl:with-param name="title">
@@ -316,9 +547,11 @@
</xsl:with-param>
<xsl:with-param name="content">
<xsl:call-template name="autogenSeeAlsoLinks"/>
- <xsl:for-each select="/document/comments/seealso | /document/comments/summary/seealso">
+ <xsl:for-each select="/document/comments//seealso | /document/reference/elements/element/overloads//seealso">
<div class="seeAlsoStyle">
- <xsl:apply-templates select="." />
+ <xsl:apply-templates select=".">
+ <xsl:with-param name="displaySeeAlso" select="true()" />
+ </xsl:apply-templates>
</div>
</xsl:for-each>
</xsl:with-param>
@@ -326,46 +559,52 @@
</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='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='number']">
+ <ol>
+ <xsl:for-each select="item">
+ <li>
+ <xsl:apply-templates />
+ </li>
+ </xsl:for-each>
+ </ol>
+ </xsl:template>
- <xsl:template match="list[@type='table']">
+ <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>
+ <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>
+ </xsl:template>
- <!-- inline tags -->
+ <!-- inline tags -->
<xsl:template match="see[@cref]">
<xsl:choose>
@@ -380,59 +619,87 @@
</xsl:choose>
</xsl:template>
- <xsl:template match="seealso[@href]">
+ <xsl:template match="see[@href]">
<xsl:choose>
<xsl:when test="normalize-space(.)">
<a>
- <xsl:attribute name="href"><xsl:value-of select="@href"/></xsl:attribute>
+ <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: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="seealso[@href]">
+ <xsl:param name="displaySeeAlso" select="false()" />
+ <xsl:if test="$displaySeeAlso">
+ <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:if>
+ </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 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 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 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 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 class="cs">false</span>
+ <span class="vb">False</span>
+ <span class="cpp">false</span>
</span>
</xsl:when>
<xsl:when test="@langword='abstract'">
@@ -449,43 +716,58 @@
</span>
<xsl:choose>
<xsl:when test="@langword='null' or @langword='Nothing' or @langword='nullptr'">
- <span class="nu"><include item="nullKeyword"/></span>
+ <span class="nu">
+ <include item="nullKeyword"/>
+ </span>
</xsl:when>
<xsl:when test="@langword='static' or @langword='Shared'">
- <span class="nu"><include item="staticKeyword"/></span>
+ <span class="nu">
+ <include item="staticKeyword"/>
+ </span>
</xsl:when>
<xsl:when test="@langword='virtual' or @langword='Overridable'">
- <span class="nu"><include item="virtualKeyword"/></span>
+ <span class="nu">
+ <include item="virtualKeyword"/>
+ </span>
</xsl:when>
<xsl:when test="@langword='true' or @langword='True'">
- <span class="nu"><include item="trueKeyword"/></span>
+ <span class="nu">
+ <include item="trueKeyword"/>
+ </span>
</xsl:when>
<xsl:when test="@langword='false' or @langword='False'">
- <span class="nu"><include item="falseKeyword"/></span>
+ <span class="nu">
+ <include item="falseKeyword"/>
+ </span>
</xsl:when>
<xsl:when test="@langword='abstract'">
- <span class="nu"><include item="abstractKeyword"/></span>
+ <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:param name="displaySeeAlso" select="false()" />
+ <xsl:if test="$displaySeeAlso">
+ <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:if>
</xsl:template>
<xsl:template match="c">
<span class="code">
- <xsl:value-of select="." />
+ <xsl:apply-templates/>
</span>
</xsl:template>
@@ -527,14 +809,14 @@
<include item="runningHeaderText" />
</xsl:template>
- <!-- pass through html tags -->
+ <!-- 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>
+ <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|map|area">
+ <xsl:copy>
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates />
+ </xsl:copy>
+ </xsl:template>
<!-- extra tag support -->
@@ -574,6 +856,7 @@
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="noteAltText" />
<includeAttribute name="title" item="noteAltText" />
</img>
<xsl:text> </xsl:text>
@@ -588,40 +871,40 @@
</div>
</xsl:template>
- <!-- move these off into a shared file -->
+ <!-- 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}" />
-
+
+ <referenceLink target="{$id}" qualified="{$qualified}" />
+
</xsl:template>
-
- <xsl:template name="section">
+
+ <xsl:template name="section">
<xsl:param name="toggleSwitch" />
- <xsl:param name="title" />
- <xsl:param name="content" />
-
+ <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>
-
+
+ <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>
<xsl:template name="subSection">
<xsl:param name="title" />
@@ -631,7 +914,7 @@
<xsl:copy-of select="$title" />
</h4>
<xsl:copy-of select="$content" />
-
+
</xsl:template>
<xsl:template name="memberIntro">
@@ -643,55 +926,10 @@
<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 name="codelangAttributes">
+ <xsl:call-template name="mshelpCodelangAttributes">
+ <xsl:with-param name="snippets" select="/document/comments/example/code" />
+ </xsl:call-template>
</xsl:template>
<!-- Footer stuff -->
@@ -704,10 +942,11 @@
<includeAttribute name="src" item="iconPath">
<parameter>footer.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="footerImage" />
<includeAttribute name="title" item="footerImage" />
</img>
</div>
-
+
<include item="footer">
<parameter>
<xsl:value-of select="$key"/>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl
index 8869703..59fe84a 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_metadata.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp20.xsl
@@ -44,7 +44,12 @@
</xsl:when>
</xsl:choose>
- <xsl:call-template name="mshelpCodelangAttributes" />
+ <!-- Assembly Version-->
+ <xsl:if test="$api-group != 'namespace'">
+ <MSHelp:Attr Name="AssemblyVersion" Value="{/document/reference/containers/library/assemblydata/@version}" />
+ </xsl:if>
+
+ <xsl:call-template name="codelangAttributes" />
<xsl:call-template name="versionMetadata" />
<xsl:call-template name="authoredMetadata" />
</xml>
@@ -217,7 +222,7 @@
<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,'..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')}" />
@@ -231,33 +236,38 @@
</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: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" select="/document/reference/apidata/@name" />
+ <!-- Namespace + Type + Member -->
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.', $member)}" />
<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)}" />
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.get_', $member)}" />
</xsl:if>
<xsl:if test="/document/reference/propertydata[@set='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.set_',/document/reference/apidata/@name)}" />
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.set_', $member)}" />
</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)}" />
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.add_', $member)}" />
</xsl:if>
<xsl:if test="/document/reference/eventdata[@remove='true']">
- <MSHelp:Attr Name="APIName" Value="{concat($apiTypeName,'.remove_',/document/reference/apidata/@name)}" />
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.remove_', $member)}" />
</xsl:if>
</xsl:when>
+ <!-- for operators, add APIName attribute op accessor methods -->
+ <xsl:when test="boolean($api-subsubgroup='operator')">
+ <MSHelp:Attr Name="APIName" Value="{concat($namespace, '.', $type, '.op_', $member)}" />
+ </xsl:when>
</xsl:choose>
</xsl:when>
</xsl:choose>
@@ -502,11 +512,6 @@
</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">
@@ -531,6 +536,11 @@
</xsl:variable>
<xsl:choose>
<xsl:when test="normalize-space($devlang)=''"/>
+ <xsl:when test="$devlang = 'VJ#'">
+ <xsl:if test="boolean(/document/reference/versions/versions[@name='netfw']//version[not(@name='netfw35')])">
+ <MSHelp:Attr Name="DevLang" Value="{$devlang}" />
+ </xsl:if>
+ </xsl:when>
<xsl:otherwise>
<MSHelp:Attr Name="DevLang" Value="{$devlang}" />
</xsl:otherwise>
@@ -615,6 +625,9 @@
<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 = 'FSharp' or $devlang = 'f#' or $devlang = 'fs' or $devlang = 'F#'" >
+ <xsl:text>FSharp</xsl:text>
+ </xsl:when>
<xsl:when test="$devlang = 'xaml' or $devlang = 'XAML'">
<xsl:text>XAML</xsl:text>
</xsl:when>
@@ -768,6 +781,41 @@
<xsl:call-template name="textNames" />
</xsl:for-each>
</xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$topic-subgroup='Operators'">
+ <xsl:variable name="operators" select="document/reference/elements/element[not(apidata[@name='Explicit' or @name='Implicit'])]"/>
+ <xsl:variable name="conversions" select="document/reference/elements/element[apidata[@name='Explicit' or @name='Implicit']]" />
+ <xsl:variable name="entryType">
+ <xsl:choose>
+ <!-- operators + type conversions -->
+ <xsl:when test="count($operators) &gt; 0 and count($conversions) &gt; 0">
+ <xsl:value-of select="'operatorsAndTypeConversions'" />
+ </xsl:when>
+ <!-- no operators + type conversions -->
+ <xsl:when test="not(count($operators) &gt; 0) and count($conversions) &gt; 0">
+ <xsl:value-of select="'typeConversions'" />
+ </xsl:when>
+ <!-- operators + no type conversions -->
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="msxsl:node-set($names)/name">
+ <MSHelp:Keyword Index="K">
+ <includeAttribute name="Term" item="{$entryType}IndexEntry">
+ <parameter>
+ <include item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </MSHelp:Keyword>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
<xsl:for-each select="msxsl:node-set($names)/name">
<MSHelp:Keyword Index="K">
<includeAttribute name="Term" item="{$subgroup}IndexEntry">
@@ -781,9 +829,12 @@
</includeAttribute>
</MSHelp:Keyword>
</xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
</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="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" />
@@ -793,7 +844,7 @@
<MSHelp:Keyword Index="K">
<includeAttribute name="Term" item="constructorIndexEntry">
<parameter>
- <include item="{$api-subgroup}IndexEntry">
+ <include item="{$typeSubgroup}IndexEntry">
<parameter>
<xsl:value-of select="." />
</parameter>
@@ -817,10 +868,30 @@
</MSHelp:Keyword>
</xsl:for-each>
</xsl:when>
+ <!-- op_explicit and op_implicit members -->
+ <xsl:when test="$topic-group='api' and $api-subsubgroup='operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ <xsl:variable name="names">
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="operatorTextNames" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:for-each select="msxsl:node-set($names)/name">
+ <MSHelp:Keyword Index="K">
+ <includeAttribute name="Term" item="conversionOperatorIndexEntry">
+ <parameter>
+ <xsl:copy-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>
+ <!-- overload op_explicit and op_implicit topics -->
+ <xsl:when test="$api-subsubgroup='operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ </xsl:when>
<!-- explicit interface implementation -->
<xsl:when test="/document/reference/proceduredata/@virtual='true' and /document/reference/memberdata/@visibility='private'">
<xsl:variable name="entryType">
@@ -877,6 +948,9 @@
</xsl:when>
<xsl:otherwise>
<xsl:choose>
+ <xsl:when test="$api-subsubgroup='operator'">
+ <xsl:value-of select="$api-subsubgroup"/>
+ </xsl:when>
<xsl:when test="$subgroup='overload'">
<xsl:value-of select="/document/reference/apidata/@subgroup"/>
</xsl:when>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl
new file mode 100644
index 0000000..a5b7e77
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/metadataHelp30.xsl
@@ -0,0 +1,589 @@
+<?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:msxsl="urn:schemas-microsoft-com:xslt"
+ >
+
+ <!-- <xsl:import href="../../shared/transforms/utilities_metadata.xsl" /> -->
+
+ <xsl:template name="authoredMetadata30">
+
+ <xsl:for-each select="/document/metadata/keyword[@index='K']">
+ <meta name="System.Keywords">
+ <xsl:attribute name="content">
+ <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>
+ </meta>
+ </xsl:for-each>
+
+ <!-- authored F -->
+ <xsl:for-each select="/document/metadata/keyword[@index='F']">
+ <meta name="Microsoft.Help.F1">
+ <xsl:attribute name="content">
+ <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>
+ </meta>
+ </xsl:for-each>
+
+ <!-- authored B -->
+ <xsl:for-each select="/document/metadata/keyword[@index='B']">
+ <meta name="Microsoft.Help.F1">
+ <xsl:attribute name="content">
+ <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>
+ </meta>
+ </xsl:for-each>
+
+ </xsl:template>
+
+
+
+ <xsl:template name="helpMetadata30">
+ <!-- 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="$namespace != ''">
+ <meta name="Microsoft.Help.F1" content="{$namespace}" />
+ </xsl:if>
+ </xsl:when>
+
+ <!-- type memberlist topics do NOT get F keywords -->
+ <xsl:when test="$group='list' and $subgroup='members'"/>
+
+ <!-- type overview pages get 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="typeNameWithTicks" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$namespace=''">
+ <meta name="Microsoft.Help.F1" content="{$type}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="Microsoft.Help.F1" content="{concat($namespace,'.',$type)}" />
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <!-- for enums, write F1 keywords for each enum member -->
+ <xsl:if test="$subgroup = 'enumeration'">
+ <xsl:for-each select="/document/reference/elements/element">
+ <xsl:choose>
+ <xsl:when test="$namespace=''">
+ <meta name="Microsoft.Help.F1" content="{concat($type, '.', apidata/@name)}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="Microsoft.Help.F1" content="{concat($namespace,'.',$type, '.', apidata/@name)}" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:if>
+
+ <!-- Insert additional F1 keywords to support XAML for class, struct, and enum topics in a set of namespaces. -->
+ <xsl:call-template name="xamlMSHelpFKeywords30"/>
+ </xsl:when>
+
+ <!-- overload list pages get namespace.type.member keyword -->
+ <xsl:when test="$group='list' and $subgroup='overload'">
+ <xsl:variable name="containingTypeId" select="/document/reference/containers/type[1]/@api" />
+ <!-- do not write F1 keyword for overload list topics that contain only inherited members -->
+ <xsl:if test="/document/reference/elements//element/containers/type[1][@api=$containingTypeId]">
+ <xsl:call-template name="memberF1KeywordsHelp30"/>
+ </xsl:if>
+ </xsl:when>
+
+
+ <!-- member pages -->
+ <xsl:when test="$group='member'">
+ <xsl:choose>
+ <!-- no F1 help entries for overload signature topics -->
+ <xsl:when test="/document/reference/memberdata/@overload"/>
+
+ <!-- no F1 help entries for explicit interface implementation members -->
+ <xsl:when test="/document/reference[memberdata[@visibility='private'] and proceduredata[@virtual = 'true']]"/>
+
+ <!-- other member pages get namespace.type.member keywords -->
+ <xsl:otherwise>
+ <xsl:call-template name="memberF1KeywordsHelp30"/>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="memberF1KeywordsHelp30">
+ <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 "#ctor" as the member name -->
+ <xsl:when test="/document/reference/apidata[@subgroup='constructor']">#ctor</xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="/document/reference/apidata/@name"/>
+ <!-- for generic members, include tick notation for number of generic template parameters. -->
+ <xsl:if test="/document/reference/templates/template">
+ <xsl:text>``</xsl:text>
+ <xsl:value-of select="count(/document/reference/templates/template)"/>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <xsl:when test="$namespace=''">
+ <meta name="Microsoft.Help.F1" content="{concat($type, '.', $member)}" />
+ </xsl:when>
+ <xsl:otherwise>
+ <meta name="Microsoft.Help.F1" content="{concat($namespace, '.', $type, '.', $member)}" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!--
+ Insert additional F1 keywords for class, struct, and enum topics in a set of WPF namespaces.
+ 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="xamlMSHelpFKeywords30">
+ <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,'#')))">
+ <meta name="Microsoft.Help.F1" content="{concat($var_wpf_f1index_prefix_1, /document/reference/apidata/@name)}"/>
+ </xsl:if>
+ </xsl:if>
+ </xsl:template>
+
+ <!-- Index Logic -->
+
+ <xsl:template name="indexMetadata30">
+ <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>
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="namespaceIndexEntry">
+ <parameter>
+ <xsl:value-of select="msxsl:node-set($names)/name" />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ <xsl:if test="boolean($namespace != '')">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="$namespace"/>
+ <xsl:text>.</xsl:text>
+ <xsl:copy-of select="." />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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'">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="aboutTypeIndexEntry">
+ <parameter>
+ <include item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$api-subgroup}MemberIndexEntry">
+ <parameter>
+ <xsl:value-of select="apidata/@name" />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="membersIndexEntry">
+ <parameter>
+ <include item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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:choose>
+ <xsl:when test="$topic-subgroup='Operators'">
+ <xsl:variable name="operators" select="document/reference/elements/element[not(apidata[@name='Explicit' or @name='Implicit'])]"/>
+ <xsl:variable name="conversions" select="document/reference/elements/element[apidata[@name='Explicit' or @name='Implicit']]" />
+ <xsl:variable name="entryType">
+ <xsl:choose>
+ <!-- operators + type conversions -->
+ <xsl:when test="count($operators) &gt; 0 and count($conversions) &gt; 0">
+ <xsl:value-of select="'operatorsAndTypeConversions'" />
+ </xsl:when>
+ <!-- no operators + type conversions -->
+ <xsl:when test="not(count($operators) &gt; 0) and count($conversions) &gt; 0">
+ <xsl:value-of select="'typeConversions'" />
+ </xsl:when>
+ <!-- operators + no type conversions -->
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:for-each select="msxsl:node-set($names)/name">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$entryType}IndexEntry">
+ <parameter>
+ <include item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="msxsl:node-set($names)/name">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$subgroup}IndexEntry">
+ <parameter>
+ <include item="{$api-subgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+ </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="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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="constructorIndexEntry">
+ <parameter>
+ <include item="{$typeSubgroup}IndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </include>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="constructorTypeIndexEntry">
+ <parameter>
+ <xsl:value-of select="." />
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </xsl:for-each>
+ </xsl:when>
+ <!-- op_explicit and op_implicit members -->
+ <xsl:when test="$topic-group='api' and $api-subsubgroup='operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ <xsl:variable name="names">
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="operatorTextNames" />
+ </xsl:for-each>
+ </xsl:variable>
+ <xsl:for-each select="msxsl:node-set($names)/name">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="conversionOperatorIndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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>
+ <!-- overload op_explicit and op_implicit topics -->
+ <xsl:when test="$api-subsubgroup='operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ </xsl:when>
+ <!-- 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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$entryType}ExplicitIndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$entryType}ExplicitIndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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="$api-subsubgroup='operator'">
+ <xsl:value-of select="$api-subsubgroup"/>
+ </xsl:when>
+ <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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$entryType}IndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </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">
+ <meta name="System.Keywords">
+ <includeAttribute name="content" item="{$entryType}IndexEntry">
+ <parameter>
+ <xsl:copy-of select="."/>
+ </parameter>
+ </includeAttribute>
+ </meta>
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:when>
+ <!-- derived type lists get unqualified sub-entries -->
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="insert30Metadata">
+
+ <!-- System.Language -->
+ <meta name="Language">
+ <includeAttribute name="content" item="locale" />
+ </meta>
+
+ <!-- System.Title -->
+ <!-- <title> is set elsewhere (eg, main_conceptual.xsl, utilities_reference.xsl) -->
+
+ <!-- System.Keywords -->
+ <!-- Microsoft.Help.F1 -->
+ <xsl:call-template name="indexMetadata30" />
+ <xsl:call-template name="helpMetadata30" />
+ <xsl:call-template name="authoredMetadata30" />
+
+ <!-- Microsoft.Help.Id -->
+ <meta name="Microsoft.Help.Id" content="{$key}" />
+
+ <!-- Microsoft.Help.Description -->
+ <xsl:if test="$abstractSummary">
+ <meta name="Description">
+ <xsl:attribute name="content">
+ <xsl:call-template name="trimAtPeriod">
+ <xsl:with-param name="string" select="$abstractSummary" />
+ </xsl:call-template>
+ </xsl:attribute>
+ </meta>
+ </xsl:if>
+
+ <!-- Microsoft.Help.TocParent -->
+ <xsl:for-each select="/document/metadata/attribute[@name='TOCParent']">
+ <meta name="Microsoft.Help.TocParent" content="{.}" />
+ <meta name="Microsoft.Help.TocOrder" content="0" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.Product -->
+ <!-- Added by MTPS -->
+
+ <!-- Microsoft.Help.ProductVersion -->
+ <!-- Added by MTPS -->
+
+ <!-- Microsoft.Help.Category -->
+ <xsl:for-each select="/document/metadata/attribute[@name='Category']">
+ <meta name="Microsoft.Help.Category" content="{.}" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.ContentFilter -->
+ <xsl:for-each select="/document/metadata/attribute[@name='ContentFilter']">
+ <meta name="Microsoft.Help.ContentFilter" content="{.}" />
+ </xsl:for-each>
+
+ <!-- Microsoft.Help.ContentType -->
+ <meta name="Microsoft.Help.ContentType" content="Reference" />
+
+ <!-- Microsoft.Package.Book -->
+ <xsl:variable name="Book" select="/document/metadata/attribute[@name='Book']/text()" />
+ <xsl:if test="$Book">
+ <meta name="Microsoft.Package.Book" content="{$Book}" />
+ </xsl:if>
+
+
+
+ </xsl:template>
+
+
+
+</xsl:stylesheet>
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/seeAlsoSection.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/seeAlsoSection.xsl
new file mode 100644
index 0000000..f9a234f
--- /dev/null
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/seeAlsoSection.xsl
@@ -0,0 +1,168 @@
+<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"
+ >
+
+ <msxsl:script language="C#" implements-prefix="ddue">
+ <msxsl:using namespace="System" />
+ <msxsl:using namespace="System.Globalization"/>
+ <msxsl:using namespace="System.Text.RegularExpressions" />
+ <![CDATA[
+ public static string ToUpper(string id) {
+ return id.Trim().ToUpper(System.Globalization.CultureInfo.InvariantCulture);
+ }
+ //Regular expression to check that a string is in a valid Guid representation.
+ private static Regex guidChecker = new Regex("[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}", RegexOptions.None);
+
+ public static string GuidChecker(string id) {
+ return guidChecker.IsMatch(id).ToString();
+ }
+
+ public static string CompareDate(string RTMReleaseDate, string changedHistoryDate) {
+
+ CultureInfo culture = CultureInfo.InvariantCulture;
+ DateTime dt1 = DateTime.MinValue;
+ DateTime dt2 = DateTime.MinValue;
+
+ try {
+ dt1 = DateTime.Parse(RTMReleaseDate, culture);
+ }
+ catch (FormatException) {
+ Console.WriteLine(string.Format("Error: CompareDate: Unable to convert '{0}' for culture {1}.", RTMReleaseDate, culture.Name));
+ return "notValidDate";
+ }
+
+ try {
+ dt2 = DateTime.Parse(changedHistoryDate,culture);
+ }
+ catch (FormatException) {
+ Console.WriteLine(string.Format("Error: CompareDate: Unable to convert '{0}' for culture {1}.", changedHistoryDate, culture.Name));
+ return "notValidDate";
+ }
+
+ if (DateTime.Compare(dt2, dt1) > 0) return changedHistoryDate;
+ else return RTMReleaseDate;
+ }
+
+ public static string IsValidDate(string dateString) {
+
+ CultureInfo culture = CultureInfo.InvariantCulture;
+ DateTime dt = DateTime.MinValue;
+
+ try {
+ dt = DateTime.Parse(dateString, culture);
+ }
+ catch (FormatException) {
+ Console.WriteLine(string.Format("Error: IsValidDate: Unable to convert '{0}' for culture {1}.", dateString, culture.Name));
+ return "false";
+ }
+
+ return "true";
+ }
+
+ ]]>
+ </msxsl:script>
+
+ <!-- Tasks -->
+ <xsl:variable name="HowTo" select="'DAC3A6A0-C863-4E5B-8F65-79EFC6A4BA09'" />
+ <xsl:variable name="Walkthrough" select="'4779DD54-5D0C-4CC3-9DB3-BF1C90B721B3'" />
+ <xsl:variable name="Sample" select="'069EFD88-412D-4E2F-8848-2D5C3AD56BDE'" />
+ <xsl:variable name="Troubleshooting" select="'38C8E0D1-D601-4DBA-AE1B-5BEC16CD9B01'" />
+
+ <!-- Reference -->
+ <xsl:variable name="ReferenceWithoutSyntax" select="'F9205737-4DEC-4A58-AA69-0E621B1236BD'" />
+ <xsl:variable name="ReferenceWithSyntax" select="'95DADC4C-A2A6-447A-AA36-B6BE3A4F8DEC'" />
+ <xsl:variable name="XMLReference" select="'3272D745-2FFC-48C4-9E9D-CF2B2B784D5F'" />
+ <xsl:variable name="ErrorMessage" select="'A635375F-98C2-4241-94E7-E427B47C20B6'" />
+ <xsl:variable name="UIReference" select="'B8ED9F21-39A4-4967-928D-160CD2ED9DCE'" />
+
+ <!-- Concepts -->
+ <xsl:variable name="Conceptual" select="'1FE70836-AA7D-4515-B54B-E10C4B516E50'" />
+ <xsl:variable name="SDKTechnologyOverviewArchitecture" select="'68F07632-C4C5-4645-8DFA-AC87DCB4BD54'" />
+ <xsl:variable name="SDKTechnologyOverviewCodeDirectory" select="'4BBAAF90-0E5F-4C86-9D31-A5CAEE35A416'" />
+ <xsl:variable name="SDKTechnologyOverviewScenarios" select="'356C57C4-384D-4AF2-A637-FDD6F088A033'" />
+ <xsl:variable name="SDKTechnologyOverviewTechnologySummary" select="'19F1BB0E-F32A-4D5F-80A9-211D92A8A715'" />
+
+ <!-- Other Resources -->
+ <xsl:variable name="Orientation" select="'B137C930-7BF7-48A2-A329-3ADCAEF8868E'" />
+ <xsl:variable name="WhitePaper" select="'56DB00EC-28BA-4C0D-8694-28E8B244E236'" />
+ <xsl:variable name="CodeEntity" select="'4A273212-0AC8-4D72-8349-EC11CD2FF8CD'" />
+ <xsl:variable name="Glossary" select="'A689E19C-2687-4881-8CE1-652FF60CF46C'" />
+ <xsl:variable name="SDKTechnologyOverviewOrientation" select="'CDB8C120-888F-447B-8AF8-F9540562E7CA'" />
+
+ <xsl:template match="ddue:relatedTopics" mode="seeAlso">
+ <xsl:param name="autoGenerateLinks" select="'false'" />
+
+ <!-- Tasks -->
+ <xsl:if test="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) = $HowTo or ddue:ToUpper(@topicType_id) = $Walkthrough or ddue:ToUpper(@topicType_id) = $Sample or ddue:ToUpper(@topicType_id) = $Troubleshooting) and ddue:GuidChecker(@xlink:href) = 'True']" >
+ <xsl:call-template name="seeAlsoSubSection">
+ <xsl:with-param name="headerGroup" select="'SeeAlsoTasks'" />
+ <xsl:with-param name="members" select="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) = $HowTo or ddue:ToUpper(@topicType_id) = $Walkthrough or ddue:ToUpper(@topicType_id) = $Sample or ddue:ToUpper(@topicType_id) = $Troubleshooting) and ddue:GuidChecker(@xlink:href) = 'True']" />
+ <xsl:with-param name="autoGenerateLinks" select="'false'" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Reference -->
+ <xsl:if test="(ddue:link | ddue:legacyLink)[((ddue:ToUpper(@topicType_id) = $ReferenceWithoutSyntax or ddue:ToUpper(@topicType_id) = $ReferenceWithSyntax or ddue:ToUpper(@topicType_id) = $XMLReference or ddue:ToUpper(@topicType_id) = $ErrorMessage or ddue:ToUpper(@topicType_id) = $UIReference) and ddue:GuidChecker(@xlink:href) = 'True') or ddue:GuidChecker(@xlink:href) = 'False'] |
+ ddue:codeEntityReference or
+ $autoGenerateLinks = 'true'">
+ <xsl:call-template name="seeAlsoSubSection">
+ <xsl:with-param name="headerGroup" select="'SeeAlsoReference'" />
+ <xsl:with-param name="members" select="(ddue:link | ddue:legacyLink)[((ddue:ToUpper(@topicType_id) = $ReferenceWithoutSyntax or ddue:ToUpper(@topicType_id) = $ReferenceWithSyntax or ddue:ToUpper(@topicType_id) = $XMLReference or ddue:ToUpper(@topicType_id) = $ErrorMessage or ddue:ToUpper(@topicType_id) = $UIReference) and ddue:GuidChecker(@xlink:href) = 'True') or ddue:GuidChecker(@xlink:href) = 'False'] |
+ ddue:codeEntityReference" />
+ <xsl:with-param name="autoGenerateLinks" select="$autoGenerateLinks" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Concepts -->
+ <xsl:if test="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) = $Conceptual or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewArchitecture or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewCodeDirectory or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewScenarios or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewTechnologySummary) and ddue:GuidChecker(@xlink:href) = 'True']">
+ <xsl:call-template name="seeAlsoSubSection">
+ <xsl:with-param name="headerGroup" select="'SeeAlsoConcepts'" />
+ <xsl:with-param name="members" select="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) = $Conceptual or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewArchitecture or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewCodeDirectory or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewScenarios or ddue:ToUpper(@topicType_id) = $SDKTechnologyOverviewTechnologySummary) and ddue:GuidChecker(@xlink:href) = 'True']" />
+ <xsl:with-param name="autoGenerateLinks" select="'false'" />
+ </xsl:call-template>
+ </xsl:if>
+
+ <!-- Other Resources -->
+ <xsl:if test="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) != $HowTo and ddue:ToUpper(@topicType_id) != $Walkthrough and ddue:ToUpper(@topicType_id) != $Sample and ddue:ToUpper(@topicType_id) != $Troubleshooting and ddue:ToUpper(@topicType_id) != $Conceptual and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewArchitecture and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewCodeDirectory and
+ ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewScenarios and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewTechnologySummary and ddue:ToUpper(@topicType_id) != $ReferenceWithoutSyntax and ddue:ToUpper(@topicType_id) != $ReferenceWithSyntax and ddue:ToUpper(@topicType_id) != $XMLReference and ddue:ToUpper(@topicType_id) != $ErrorMessage and ddue:ToUpper(@topicType_id) != $UIReference and
+ ddue:GuidChecker(@xlink:href) = 'True') or (not(@topicType_id) and ddue:GuidChecker(@xlink:href) = 'True')] or
+ ddue:dynamicLink[@type = 'inline'] or
+ ddue:externalLink" >
+ <xsl:call-template name="seeAlsoSubSection">
+ <xsl:with-param name="headerGroup" select="'SeeAlsoOtherResources'" />
+ <xsl:with-param name="members" select="(ddue:link | ddue:legacyLink)[(ddue:ToUpper(@topicType_id) != $HowTo and ddue:ToUpper(@topicType_id) != $Walkthrough and ddue:ToUpper(@topicType_id) != $Sample and ddue:ToUpper(@topicType_id) != $Troubleshooting and ddue:ToUpper(@topicType_id) != $Conceptual and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewArchitecture and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewCodeDirectory and
+ ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewScenarios and ddue:ToUpper(@topicType_id) != $SDKTechnologyOverviewTechnologySummary and ddue:ToUpper(@topicType_id) != $ReferenceWithoutSyntax and ddue:ToUpper(@topicType_id) != $ReferenceWithSyntax and ddue:ToUpper(@topicType_id) != $XMLReference and ddue:ToUpper(@topicType_id) != $ErrorMessage and ddue:ToUpper(@topicType_id) != $UIReference and
+ ddue:GuidChecker(@xlink:href) = 'True') or (not(@topicType_id) and ddue:GuidChecker(@xlink:href) = 'True')] |
+ ddue:dynamicLink[@type = 'inline'] |
+ ddue:externalLink" />
+ <xsl:with-param name="autoGenerateLinks" select="'false'" />
+ </xsl:call-template>
+ </xsl:if>
+
+ </xsl:template>
+
+ <xsl:template name="seeAlsoSubSection">
+ <xsl:param name="headerGroup" />
+ <xsl:param name="members" />
+ <xsl:param name="autoGenerateLinks" />
+ <xsl:call-template name="subSection">
+ <xsl:with-param name="title">
+ <include item="{$headerGroup}"/>
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:if test="$autoGenerateLinks='true'">
+ <xsl:call-template name="autogenSeeAlsoLinks"/>
+ </xsl:if>
+ <xsl:for-each select="$members">
+ <div class="seeAlsoStyle">
+ <xsl:apply-templates select="." />
+ </div>
+ </xsl:for-each>
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
index 24b78ca..40d4cbe 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_dduexml.xsl
@@ -13,14 +13,16 @@
<!-- the Remarks section includes content from these nodes, excluding the xaml sections are captured in the xaml syntax processing -->
<xsl:template name="HasRemarksContent">
+ <xsl:param name="node" />
+
<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(
+ <xsl:when test="normalize-space($node/ddue:remarks/ddue:content)">true</xsl:when>
+ <xsl:when test="normalize-space($node/ddue:notesForImplementers)">true</xsl:when>
+ <xsl:when test="normalize-space($node/ddue:notesForCallers)">true</xsl:when>
+ <xsl:when test="normalize-space($node/ddue:notesForInheritors)">true</xsl:when>
+ <xsl:when test="normalize-space($node/ddue:platformNotes)">true</xsl:when>
+ <xsl:when test="normalize-space($node/ddue:remarks/ddue:sections/ddue:section[not(
starts-with(@address,'xamlValues') or
starts-with(@address,'xamlTextUsage') or
starts-with(@address,'xamlAttributeUsage') or
@@ -34,40 +36,10 @@
</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:call-template name="WriteRemarksSection">
+ <xsl:with-param name="node" select=".." />
+ </xsl:call-template>
+ </xsl:template>
<xsl:template match="ddue:codeExamples">
<xsl:if test="normalize-space(.)">
@@ -204,6 +176,10 @@
</xsl:for-each>
</xsl:template>
+ <xsl:template match="ddue:platformNotes/ddue:platformNote/ddue:content/ddue:para">
+ <xsl:apply-templates />
+ </xsl:template>
+
<xsl:template match="ddue:schemaHierarchy">
<xsl:for-each select="ddue:link">
<xsl:call-template name="indent">
@@ -238,6 +214,9 @@
<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 = 'f#' or @language = 'fs' or @language = 'F#'" >
+ <xsl:text>FSharp</xsl:text>
+ </xsl:when>
<xsl:when test="@language = 'xml'">
<xsl:text>xmlLang</xsl:text>
</xsl:when>
@@ -278,79 +257,6 @@
</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 />
@@ -428,6 +334,9 @@
<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 = 'f#' or @language = 'fs' or @language = 'F#'">
+ <xsl:text>FSharp</xsl:text>
+ </xsl:when>
<xsl:when test="@language = 'xml'">
<xsl:text>xmlLang</xsl:text>
</xsl:when>
@@ -440,6 +349,9 @@
<xsl:when test="@language = 'xaml' or @language = 'XAML'">
<xsl:text>XAML</xsl:text>
</xsl:when>
+ <xsl:when test="@language = 'javascript' or @language = 'JavaScript'">
+ <xsl:text>JavaScript</xsl:text>
+ </xsl:when>
<xsl:otherwise>
<xsl:text>other</xsl:text>
</xsl:otherwise>
@@ -500,6 +412,7 @@
<xsl:choose>
<xsl:when test="@class='tip'">
<img class="note">
+ <includeAttribute name="alt" item="tipAltText" />
<includeAttribute name="title" item="tipAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -509,6 +422,7 @@
</xsl:when>
<xsl:when test="@class='caution' or @class='warning'">
<img class="note">
+ <includeAttribute name="alt" item="cautionAltText" />
<includeAttribute name="title" item="cautionAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_caution.gif</parameter>
@@ -518,6 +432,7 @@
</xsl:when>
<xsl:when test="@class='security note'">
<img class="note">
+ <includeAttribute name="alt" item="securityAltText" />
<includeAttribute name="title" item="securityAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_security.gif</parameter>
@@ -527,6 +442,7 @@
</xsl:when>
<xsl:when test="@class='important'">
<img class="note">
+ <includeAttribute name="alt" item="importantAltText" />
<includeAttribute name="title" item="importantAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_caution.gif</parameter>
@@ -536,6 +452,7 @@
</xsl:when>
<xsl:when test="@class='visual basic note'">
<img class="note">
+ <includeAttribute name="alt" item="visualBasicAltText" />
<includeAttribute name="title" item="visualBasicAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -545,6 +462,7 @@
</xsl:when>
<xsl:when test="@class='visual c# note'">
<img class="note">
+ <includeAttribute name="alt" item="visualC#AltText" />
<includeAttribute name="title" item="visualC#AltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -554,6 +472,7 @@
</xsl:when>
<xsl:when test="@class='visual c++ note'">
<img class="note">
+ <includeAttribute name="alt" item="visualC++AltText" />
<includeAttribute name="title" item="visualC++AltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -563,6 +482,7 @@
</xsl:when>
<xsl:when test="@class='visual j# note'">
<img class="note">
+ <includeAttribute name="alt" item="visualJ#AltText" />
<includeAttribute name="title" item="visualJ#AltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -572,6 +492,7 @@
</xsl:when>
<xsl:when test="@class='note'">
<img class="note">
+ <includeAttribute name="alt" item="noteAltText" />
<includeAttribute name="title" item="noteAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -581,6 +502,7 @@
</xsl:when>
<xsl:otherwise>
<img class="note">
+ <includeAttribute name="alt" item="noteAltText" />
<includeAttribute name="title" item="noteAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -605,7 +527,8 @@
</xsl:template>
<xsl:template match="ddue:section">
- <xsl:if test="descendant::ddue:content[normalize-space(.)]">
+ <!-- display the section only if it has content (text or media)-->
+ <xsl:if test="descendant::ddue:content[normalize-space(.)] or descendant::ddue:mediaLink">
<xsl:apply-templates select="@address" />
<!-- Count all the possible ancestor root nodes -->
@@ -630,6 +553,9 @@
<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>
+ <!-- Don't render the 'Change History' section here; it's handled in the writeChangeHistorySection template. -->
+ <xsl:when test="ddue:title = 'Change History'" />
+
<xsl:when test="$total = 0">
<xsl:variable name="sectionCount">
<xsl:value-of select="count(preceding-sibling::ddue:section)"/>
@@ -686,15 +612,13 @@
</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:if test="ddue:caption">
+ <div class="caption">
+ <xsl:apply-templates select="ddue:caption" />
+ </div>
+ <br />
+ </xsl:if>
+ <artLink target="{ddue:image/@xlink:href}" />
</xsl:template>
<xsl:template match="ddue:procedure">
@@ -791,7 +715,7 @@
<xsl:template match="ddue:languageKeyword">
<xsl:variable name="word" select="." />
- <span data="langKeyword" value="{$word}">
+ <span sdata="langKeyword" value="{$word}">
<xsl:choose>
<!-- mref topics get special handling for keywords like null, etc. -->
<xsl:when test="/document/reference/apidata">
@@ -802,12 +726,16 @@
<span class="cs">null</span>
<span class="vb">Nothing</span>
<span class="cpp">nullptr</span>
+ <span class="fs">unit</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) -->
+ <languageKeyword>static</languageKeyword> (<languageKeyword>Shared</languageKeyword> in Visual Basic)
+
+ This also needs to have F# added should it be uncommented.
+ -->
<!--
<xsl:when test="$word='static' or $word='Shared'">
<span class="cs">static</span>
@@ -1327,6 +1255,7 @@
<tr>
<th align="left">
<img class="note">
+ <includeAttribute name="alt" item="noteAltText" />
<includeAttribute name="title" item="noteAltText" />
<includeAttribute item="iconPath" name="src">
<parameter>alert_note.gif</parameter>
@@ -1360,4 +1289,138 @@
</div>
</xsl:template>
+ <!-- Display a date to show when the topic was last updated. -->
+ <xsl:template name="writeFreshnessDate">
+ <!-- The $ChangedHistoryDate param is from the authored changeHistory table, if any. -->
+ <xsl:param name="ChangedHistoryDate" />
+ <!-- Determine whether the authored date is a valid date string. -->
+ <xsl:variable name="validChangeHistoryDate">
+ <xsl:choose>
+ <xsl:when test="normalize-space($ChangedHistoryDate)=''"/>
+ <xsl:when test="ddue:IsValidDate(normalize-space($ChangedHistoryDate)) = 'true'">
+ <xsl:value-of select="normalize-space($ChangedHistoryDate)"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:choose>
+ <!-- display nothing if the 'changeHistoryOptions' argument is set to 'omit' -->
+ <xsl:when test="$changeHistoryOptions = 'omit'"/>
+
+ <!-- if it's a valid date, display the freshness line. -->
+ <xsl:when test="normalize-space($validChangeHistoryDate)">
+ <p>
+ <include item="UpdateTitle">
+ <parameter>
+ <xsl:value-of select="normalize-space($validChangeHistoryDate)"/>
+ </parameter>
+ </include>
+ </p>
+ </xsl:when>
+
+ <!-- use a default date if no ChangedHistoryDate and the 'changeHistoryOptions' argument is set to 'showDefaultFreshnessDate' -->
+ <xsl:when test="$changeHistoryOptions = 'showDefaultFreshnessDate'">
+ <p>
+ <include item="UpdateTitle">
+ <parameter>
+ <include item="defaultFreshnessDate"/>
+ </parameter>
+ </include>
+ </p>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="writeChangeHistorySection">
+ <xsl:if test="$changeHistoryOptions!='omit'">
+ <!-- conceptual authored content is in /document/topic/*; mref content is in /document/comments/ddue:dduexml. -->
+ <xsl:for-each select="/document/comments/ddue:dduexml | /document/topic/*">
+ <!-- Get the change history section content, which can be in changeHistory or a section with title='Change History'. -->
+ <xsl:variable name="changeHistoryContent">
+ <xsl:choose>
+ <xsl:when test="ddue:changeHistory/ddue:content/ddue:table/ddue:row/ddue:entry[normalize-space(.)]">
+ <xsl:apply-templates select="ddue:changeHistory/ddue:content"/>
+ </xsl:when>
+ <xsl:when test=".//ddue:section[ddue:title = 'Change History']/ddue:content/ddue:table/ddue:row/ddue:entry[normalize-space(.)]">
+ <xsl:apply-templates select=".//ddue:section[ddue:title = 'Change History']/ddue:content"/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:if test="normalize-space($changeHistoryContent)">
+ <xsl:call-template name="section">
+ <xsl:with-param name="toggleSwitch" select="'changeHistory'"/>
+ <xsl:with-param name="title">
+ <include item="changeHistory" />
+ </xsl:with-param>
+ <xsl:with-param name="content">
+ <xsl:copy-of select="$changeHistoryContent" />
+ </xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template match="ddue:span">
+ <xsl:choose>
+ <!-- Process the markup added by MTMarkup tool -->
+ <xsl:when test="@class='tgtSentence' or @class='srcSentence'">
+ <span>
+ <xsl:copy-of select="@*" />
+ <xsl:apply-templates />
+ </span>
+ </xsl:when>
+ <!-- fix bug 361746 - use copy-of, so that span class="keyword", "literal" and "comment"
+ nodes are copied to preserve code colorization in snippets -->
+ <xsl:when test="@class='keyword' or @class='literal' or @class='comment'">
+ <xsl:copy-of select="."/>
+ </xsl:when>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Don't render the changeHistory section here; it's handled in the writeChangeHistorySection template. -->
+ <xsl:template match="ddue:changeHistory"/>
+
+ <xsl:template name="WriteRemarksSection">
+ <xsl:param name="node" />
+
+ <xsl:variable name="hasRemarks">
+ <xsl:call-template name="HasRemarksContent">
+ <xsl:with-param name="node" select="$node" />
+ </xsl:call-template>
+ </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 select="$node/ddue:remarks/*" />
+ <xsl:apply-templates select="$node/ddue:notesForImplementers"/>
+ <xsl:apply-templates select="$node/ddue:notesForCallers"/>
+ <xsl:apply-templates select="$node/ddue:notesForInheritors"/>
+ <xsl:apply-templates select="$node/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 select="$node/ddue:remarks/*" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+ </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 2137e5f..8edafbc 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/utilities_reference.xsl
@@ -16,8 +16,10 @@
<xsl:param name="key" />
<xsl:param name="metadata" value="false" />
<xsl:param name="languages">false</xsl:param>
+ <xsl:param name="componentizeBy">namespace</xsl:param>
- <xsl:include href="utilities_metadata.xsl" />
+ <xsl:include href="metadataHelp30.xsl" />
+ <xsl:include href="metadataHelp20.xsl"/>
<xsl:include href="xamlSyntax.xsl"/>
<xsl:template match="/">
@@ -25,7 +27,9 @@
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"/>
<META NAME="save" CONTENT="history"/>
+ <xsl:call-template name="insertNoIndexNoFollow" />
<title><xsl:call-template name="topicTitlePlain"/></title>
+ <xsl:call-template name="insert30Metadata" />
<xsl:call-template name="insertStylesheets" />
<xsl:call-template name="insertScripts" />
<xsl:call-template name="insertFilename" />
@@ -80,6 +84,12 @@
<!-- document head -->
+ <xsl:template name="insertNoIndexNoFollow">
+ <xsl:if test="/document/metadata/attribute[@name='NoSearch']">
+ <META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW" />
+ </xsl:if>
+ </xsl:template>
+
<xsl:template name="insertStylesheets">
<link rel="stylesheet" type="text/css" href="../styles/presentation.css" />
<!-- make mshelp links work -->
@@ -240,6 +250,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>CFW.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="CompactFrameworkAltText" />
<includeAttribute name="title" item="CompactFrameworkAltText" />
</img>
</xsl:if>
@@ -249,6 +260,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>xna.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="XNAFrameworkAltText" />
<includeAttribute name="title" item="XNAFrameworkAltText" />
</img>
</xsl:if>
@@ -262,11 +274,28 @@
<xsl:text> </xsl:text>
<include item="obsoleteRed" />
</xsl:if>
- <xsl:call-template name="getElementDescription" />
+ <xsl:call-template name="getEnumMemberDescription" />
</td>
</tr>
</xsl:template>
+ <xsl:template name="getEnumMemberDescription">
+ <xsl:choose>
+ <xsl:when test="normalize-space(ddue:summary[1]) != ''">
+ <span sdata="memberAuthoredSummary">
+ <xsl:apply-templates select="ddue:summary[1]/ddue:para/node()" />
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <span sdata="memberAuthoredSummary">
+ <xsl:apply-templates select="ddue:summary[2]/ddue:para/node()" />
+ </span>
+ </xsl:otherwise>
+ </xsl:choose>
+ <!-- enum members may have additional authored content in the remarks node -->
+ <xsl:apply-templates select="ddue:remarks/ddue:content" />
+ </xsl:template>
+
<xsl:template match="element" mode="derivedType">
<tr>
<td>
@@ -291,141 +320,52 @@
</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:template name="extensionMethodDisplayLink">
+ <xsl:variable name="showParameters">
+ <xsl:choose>
+ <xsl:when test="@overload='true'">true</xsl:when>
+ <xsl:otherwise>false</xsl:otherwise>
+ </xsl:choose>
</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>
+ <referenceLink target="{@api}" display-target="extension" show-parameters="{$showParameters}">
+ <extensionMethod>
+ <xsl:copy-of select="@*"/>
+ <xsl:copy-of select="apidata|templates|parameters|containers"/>
+ </extensionMethod>
+ </referenceLink>
</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 test="$componentizeBy='assembly'">
+ <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:when>
+ <!-- the default is to componentize by namespace. For non-componentized builds, the <meta name="container"> value is ignored. -->
<xsl:otherwise>
- <xsl:text>Namespaces</xsl:text>
+ <xsl:choose>
+ <!-- get the namespace name from containers/namespace/@api for most members -->
+ <xsl:when test="normalize-space(substring-after(/document/reference/containers/namespace/@api,':'))">
+ <xsl:value-of select="normalize-space(substring-after(/document/reference/containers/namespace/@api,':'))"/>
+ </xsl:when>
+ <!-- use 'default_namespace' for members in the default namespace (where namespace/@api == 'N:') -->
+ <xsl:when test="normalize-space(/document/reference/containers/namespace/@api)"><xsl:text>default_namespace</xsl:text></xsl:when>
+ <!-- for the default namespace topic, use 'default_namespace' -->
+ <xsl:when test="/document/reference/apidata[@group='namespace' and @name='']"><xsl:text>default_namespace</xsl:text></xsl:when>
+ <!-- for other namespace topics, get the name from apidata/@name -->
+ <xsl:when test="/document/reference/apidata/@group='namespace'">
+ <xsl:value-of select="normalize-space(/document/reference/apidata/@name)"/>
+ </xsl:when>
+ <xsl:otherwise><xsl:text>unknown</xsl:text></xsl:otherwise>
+ </xsl:choose>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
@@ -518,7 +458,15 @@
<!-- the subsubgroup, subgroup, or group determines the title -->
<xsl:choose>
<xsl:when test="string($api-subsubgroup)">
- <xsl:value-of select="$api-subsubgroup" />
+ <xsl:choose>
+ <!-- topic title for op_explicit and op_implicit members -->
+ <xsl:when test="$api-subsubgroup='operator' and (document/reference/apidata/@name = 'Explicit' or document/reference/apidata/@name = 'Implicit')">
+ <xsl:value-of select="'typeConversion'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$api-subsubgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="string($api-subgroup)">
<xsl:value-of select="$api-subgroup"/>
@@ -531,13 +479,51 @@
<!-- 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:choose>
+ <!-- topic title for overload op_explicit and op_implicit members -->
+ <xsl:when test="$api-subsubgroup = 'operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name = 'Implicit')">
+ <xsl:value-of select="'conversionOperator'"/>
+ </xsl:when>
+ <!-- topic title for overload operator members -->
+ <xsl:when test="$api-subsubgroup='operator'">
+ <xsl:value-of select="$api-subsubgroup" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$api-subgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
</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:choose>
+ <xsl:when test="$topic-subgroup='Operators'">
+ <xsl:variable name="operators" select="document/reference/elements/element[not(apidata[@name='Explicit' or @name='Implicit'])]"/>
+ <xsl:variable name="conversions" select="document/reference/elements/element[apidata[@name='Explicit' or @name='Implicit']]" />
+ <xsl:choose>
+ <!-- operators + type conversions -->
+ <xsl:when test="count($operators) &gt; 0 and count($conversions) &gt; 0">
+ <xsl:value-of select="'OperatorsAndTypeConversions'" />
+ </xsl:when>
+ <!-- no operators + type conversions -->
+ <xsl:when test="not(count($operators) &gt; 0) and count($conversions) &gt; 0">
+ <xsl:value-of select="'TypeConversions'" />
+ </xsl:when>
+ <!-- operators + no type conversions -->
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
+ <!-- overload root titles -->
+ <xsl:when test="$topic-group='root'">
+ <xsl:value-of select="$topic-group" />
+ </xsl:when>
</xsl:choose>
<xsl:text>TopicTitle</xsl:text>
</xsl:attribute>
@@ -548,10 +534,19 @@
</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 test="document/reference/memberdata/@overload or ($api-subsubgroup = 'operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit'))">
+ <xsl:choose>
+ <xsl:when test="$api-subsubgroup = 'operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="operatorTypesPlain" />
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="parameterTypesPlain" />
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
</parameter>
</include>
@@ -580,7 +575,15 @@
<xsl:when test="$topic-group='api'">
<xsl:choose>
<xsl:when test="string($api-subsubgroup)">
- <xsl:value-of select="$api-subsubgroup" />
+ <xsl:choose>
+ <!-- topic tilte for op_explicit and op_implicit members -->
+ <xsl:when test="$api-subsubgroup='operator' and (document/reference/apidata/@name = 'Explicit' or document/reference/apidata/@name = 'Implicit')">
+ <xsl:value-of select="'typeConversion'"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$api-subsubgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
<xsl:when test="string($api-subgroup)">
<xsl:value-of select="$api-subgroup" />
@@ -593,13 +596,51 @@
<!-- 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:choose>
+ <!-- topic title for overload op_explicit and op_implicit members -->
+ <xsl:when test="$api-subsubgroup = 'operator' and (document/reference/apidata/@name= 'Explicit' or document/reference/apidata/@name= 'Implicit')">
+ <xsl:value-of select="'conversionOperator'"/>
+ </xsl:when>
+ <!-- topic title for overload operator members -->
+ <xsl:when test="$api-subsubgroup='operator'">
+ <xsl:value-of select="$api-subsubgroup" />
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$api-subgroup"/>
+ </xsl:otherwise>
+ </xsl:choose>
</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:choose>
+ <xsl:when test="$topic-subgroup='Operators'">
+ <xsl:variable name="operators" select="document/reference/elements/element[not(apidata[@name='Explicit' or @name='Implicit'])]"/>
+ <xsl:variable name="conversions" select="document/reference/elements/element[apidata[@name='Explicit' or @name='Implicit']]" />
+ <xsl:choose>
+ <!-- operators + type conversions -->
+ <xsl:when test="count($operators) &gt; 0 and count($conversions) &gt; 0">
+ <xsl:value-of select="'OperatorsAndTypeConversions'" />
+ </xsl:when>
+ <!-- no operators + type conversions -->
+ <xsl:when test="not(count($operators) &gt; 0) and count($conversions) &gt; 0">
+ <xsl:value-of select="'TypeConversions'" />
+ </xsl:when>
+ <!-- operators + no type conversions -->
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="$topic-subgroup" />
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:when>
+ <!-- overload root titles -->
+ <xsl:when test="$topic-group='root'">
+ <xsl:value-of select="$topic-group" />
+ </xsl:when>
</xsl:choose>
<xsl:text>TopicTitle</xsl:text>
<!--</xsl:otherwise>
@@ -610,10 +651,19 @@
</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 test="document/reference/memberdata/@overload or ($api-subsubgroup= 'operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit'))">
+ <xsl:choose>
+ <xsl:when test="$api-subsubgroup = 'operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="operatorTypesDecorated" />
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:for-each select="/document/reference">
+ <xsl:call-template name="parameterTypesDecorated" />
+ </xsl:for-each>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
</parameter>
</include>
@@ -630,11 +680,11 @@
<div id="mainSection">
<div id="mainBody">
- <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()">
- <include item="header" />
- </div>
-
- <!--<xsl:call-template name="head" />-->
+ <div id="allHistory" class="saveHistory" onsave="saveAll()" onload="loadAll()"/>
+
+ <!-- 'header' shared content item is used to show optional boilerplate at the top of the topic's scrolling region, e.g. pre-release boilerplate -->
+ <include item="header" />
+
<xsl:call-template name="body" />
</div>
<xsl:call-template name="foot" />
@@ -642,10 +692,6 @@
</xsl:template>
- <!--<xsl:template name="head">
- <include item="header" />
- </xsl:template>-->
-
<xsl:template name="syntaxBlocks">
<xsl:for-each select="/document/syntax/div[@codeLanguage]">
@@ -852,7 +898,7 @@
<xsl:call-template name="memberIntro" />
- <xsl:if test="element/apidata[@subgroup='constructor']">
+ <xsl:if test="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 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']))]" />
@@ -860,7 +906,7 @@
</xsl:if>
<!-- method table -->
- <xsl:if test="element/apidata[@subgroup='method' and not(@subsubgroup)]">
+ <xsl:if test="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 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']))]" />
@@ -868,7 +914,7 @@
</xsl:if>
<!-- operator table -->
- <xsl:if test="element/apidata[@subsubgroup='operator']">
+ <xsl:if test="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 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']))]" />
@@ -884,7 +930,7 @@
</xsl:if>
<!-- field table -->
- <xsl:if test="element/apidata[@subgroup='field']">
+ <xsl:if test="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 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']))]" />
@@ -892,7 +938,7 @@
</xsl:if>
<!-- property table -->
- <xsl:if test="element/apidata[@subgroup='property' and not(@subsubgroup)]">
+ <xsl:if test="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 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']))]" />
@@ -908,7 +954,7 @@
</xsl:if>
<!-- event table -->
- <xsl:if test="element/apidata[@subgroup='event' and not(@subsubgroup)]">
+ <xsl:if test="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 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']))]" />
@@ -927,7 +973,7 @@
<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:with-param name="members" select="element[.//memberdata[@visibility='private'] and .//proceduredata[@virtual = 'true']]" />
</xsl:call-template>
</xsl:if>
@@ -937,7 +983,7 @@
<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>
@@ -966,7 +1012,8 @@
<!-- 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:sort select="topicdata/@eiiName | apidata/@name" />
+ <xsl:sort select="count(templates/*)" />
</xsl:apply-templates>
</table>
</xsl:with-param>
@@ -1111,6 +1158,36 @@
</xsl:choose>
</xsl:template>
+ <xsl:template name="IsMemberExplicit">
+ <xsl:choose>
+ <xsl:when test="element">
+ <xsl:for-each select="element">
+ <xsl:call-template name="IsMemberExplicit"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
+ <xsl:text>yes</xsl:text>
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <xsl:template name="IsConversionOperator">
+ <xsl:choose>
+ <xsl:when test="element">
+ <xsl:for-each select="element">
+ <xsl:call-template name="IsConversionOperator"/>
+ </xsl:for-each>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:if test="apidata/@subsubgroup='operator' and (apidata/@name='Explicit' or apidata/@name='Implicit') and not(memberdata/@overload)">
+ <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">
@@ -1140,6 +1217,12 @@
<xsl:variable name="privateMember">
<xsl:call-template name="IsMemberPrivate"/>
</xsl:variable>
+ <xsl:variable name="explicitMember">
+ <xsl:call-template name="IsMemberExplicit" />
+ </xsl:variable>
+ <xsl:variable name="conversionOperator">
+ <xsl:call-template name="IsConversionOperator" />
+ </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>
@@ -1154,7 +1237,7 @@
<xsl:if test="normalize-space($privateMember)!=''">
<xsl:text>private;</xsl:text>
</xsl:if>
- <xsl:if test="memberdata[@visibility='private'] and proceduredata[@virtual = 'true']">
+ <xsl:if test="normalize-space($explicitMember) != ''">
<xsl:text>explicit;</xsl:text>
</xsl:if>
<xsl:if test="normalize-space($staticMember)!=''">
@@ -1210,6 +1293,12 @@
</td>
<td>
<xsl:choose>
+ <xsl:when test="normalize-space($conversionOperator)!=''">
+ <referenceLink target="{@api}" show-parameters="true" />
+ </xsl:when>
+ <xsl:when test="@source='extension'">
+ <xsl:call-template name="extensionMethodDisplayLink"/>
+ </xsl:when>
<xsl:when test="@display-api">
<referenceLink target="{@api}" display-target="{@display-api}" show-parameters="{$showParameters}" />
</xsl:when>
@@ -1224,7 +1313,7 @@
<xsl:text> </xsl:text>
<include item="obsoleteRed" />
</xsl:if>
- <xsl:if test="topicdata[@subgroup='overload']">
+ <xsl:if test="topicdata[@subgroup='overload'] or @overload='true'">
<include item="Overloaded"/>
<xsl:text> </xsl:text>
</xsl:if>
@@ -1397,6 +1486,7 @@
<xsl:value-of select="concat($typeVisibility,$typeSubgroup,'.gif')" />
</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" />
<includeAttribute name="title" item="{concat($typeVisibility,$typeSubgroup,'AltText')}" />
</img>
@@ -1438,6 +1528,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>pubinterface.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="ExplicitInterfaceAltText" />
<includeAttribute name="title" item="ExplicitInterfaceAltText" />
</img>
</xsl:if>
@@ -1450,9 +1541,11 @@
</includeAttribute>
<xsl:choose>
<xsl:when test="apidata/@subsubgroup">
+ <includeAttribute name="alt" item="{concat($memberVisibility,apidata/@subsubgroup,'AltText')}" />
<includeAttribute name="title" item="{concat($memberVisibility,apidata/@subsubgroup,'AltText')}" />
</xsl:when>
<xsl:otherwise>
+ <includeAttribute name="alt" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" />
<includeAttribute name="title" item="{concat($memberVisibility,$memberSubgroup,'AltText')}" />
</xsl:otherwise>
</xsl:choose>
@@ -1463,6 +1556,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>static.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="staticAltText" />
<includeAttribute name="title" item="staticAltText" />
</img>
</xsl:if>
@@ -1472,6 +1566,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>CFW.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="CompactFrameworkAltText" />
<includeAttribute name="title" item="CompactFrameworkAltText" />
</img>
</xsl:if>
@@ -1481,6 +1576,7 @@
<includeAttribute name="src" item="iconPath">
<parameter>xna.gif</parameter>
</includeAttribute>
+ <includeAttribute name="alt" item="XNAFrameworkAltText" />
<includeAttribute name="title" item="XNAFrameworkAltText" />
</img>
</xsl:if>
@@ -1497,14 +1593,16 @@
<xsl:call-template name="assembliesInfo"/>
<!-- some apis display a XAML xmlns uri -->
- <xsl:call-template name="xamlXmlnsInfo"/>
+ <xsl:if test="$omitXmlnsBoilerplate != 'true'">
+ <xsl:call-template name="xamlXmlnsInfo"/>
+ </xsl:if>
</xsl:template>
<xsl:template name="assemblyNameAndModule">
<xsl:param name="library" select="/document/reference/containers/library"/>
<include item="assemblyNameAndModule">
<parameter>
- <span data="assembly">
+ <span sdata="assembly">
<xsl:value-of select="$library/@assembly"/>
</span>
</parameter>
@@ -1546,23 +1644,32 @@
<!-- Platform information -->
- <xsl:template match="platforms">
+ <xsl:template match="platforms[platform]">
<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:choose>
+ <xsl:when test="/document/reference/versions/versions[@name='silverlight']//version">
+ <p>
+ <include item="silverlightplatforms"/>
+ </p>
+ </xsl:when>
+ <xsl:otherwise>
+ <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:otherwise>
+ </xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
@@ -1570,15 +1677,17 @@
<!-- 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:if test="$omitVersionInformation != 'true'">
+ <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:if>
</xsl:template>
<xsl:template name="processVersions">
@@ -1664,6 +1773,7 @@
<xsl:for-each select="ancestors/type">
<xsl:sort select="position()" data-type="number" order="descending" />
+ <!-- <xsl:sort select="@api"/> -->
<xsl:call-template name="indent">
<xsl:with-param name="count" select="position()" />
@@ -1696,6 +1806,9 @@
<xsl:otherwise>
<xsl:for-each select="descendents/type">
+ <xsl:sort select="@api" />
+
+ <xsl:if test="not(self::type/@api=preceding-sibling::*/self::type/@api)">
<xsl:call-template name="indent">
<xsl:with-param name="count" select="$ancestorCount + 2" />
</xsl:call-template>
@@ -1705,6 +1818,7 @@
</xsl:apply-templates>
<br/>
+ </xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
@@ -1761,6 +1875,7 @@
<span class="vb">.</span>
<span class="cpp">::</span>
<span class="nu">.</span>
+ <span class="fs">.</span>
</span>
<xsl:for-each select="/document/reference/implements/member">
<xsl:for-each select="type">
@@ -1771,6 +1886,7 @@
<span class="vb">.</span>
<span class="cpp">::</span>
<span class="nu">.</span>
+ <span class="fs">.</span>
</span>
<xsl:value-of select="apidata/@name" />
<xsl:apply-templates select="templates" mode="decorated" />
@@ -1781,14 +1897,37 @@
<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:if test="not($api-subsubgroup='operator'and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit'))">
+ <span class="languageSpecificText">
+ <span class="cs">.</span>
+ <span class="vb">.</span>
+ <span class="cpp">::</span>
+ <span class="nu">.</span>
+ <span class="fs">.</span>
+ </span>
+ </xsl:if>
<xsl:for-each select="/document/reference[1]">
- <xsl:value-of select="apidata/@name" />
+ <xsl:choose>
+ <xsl:when test="$api-subsubgroup='operator' and (apidata/@name='Explicit' or apidata/@name='Implicit')">
+ <xsl:text>&#xa0;</xsl:text>
+ <span class="languageSpecificText">
+ <span class="cs"><xsl:value-of select="apidata/@name" /></span>
+ <span class="vb">
+ <xsl:choose>
+ <xsl:when test="apidata/@name='Explicit'"><xsl:text>Narrowing</xsl:text></xsl:when>
+ <xsl:when test="apidata/@name='Implicit'"><xsl:text>Widening</xsl:text></xsl:when>
+ <xsl:otherwise><xsl:value-of select="apidata/@name" /></xsl:otherwise>
+ </xsl:choose>
+ </span>
+ <span class="cpp"><xsl:value-of select="apidata/@name" /></span>
+ <span class="nu"><xsl:value-of select="apidata/@name" /></span>
+ <span class="fs"><xsl:value-of select="apidata/@name" /></span>
+ </span>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:value-of select="apidata/@name" />
+ </xsl:otherwise>
+ </xsl:choose>
<xsl:apply-templates select="templates" mode="decorated" />
</xsl:for-each>
</xsl:when>
@@ -1826,7 +1965,14 @@
<xsl:for-each select="/document/reference/containers/type[1]">
<xsl:call-template name="typeNamePlain" />
</xsl:for-each>
- <xsl:text>.</xsl:text>
+ <xsl:choose>
+ <xsl:when test="$api-subsubgroup='operator' and (document/reference/apidata/@name='Explicit' or document/reference/apidata/@name='Implicit')">
+ <xsl:text>&#xa0;</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>.</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
</xsl:if>
<xsl:choose>
<!-- EII names are interfaceName.interfaceMemberName, not memberName -->
diff --git a/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl b/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl
index 1fc6e45..0fe5223 100644
--- a/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl
+++ b/tools/Sandcastle/Presentation/vs2005/transforms/xamlSyntax.xsl
@@ -109,8 +109,6 @@
</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:
@@ -151,8 +149,6 @@
</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:
@@ -222,8 +218,6 @@
</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:
@@ -259,8 +253,6 @@
</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.
@@ -283,19 +275,19 @@
<!-- Displays one of the standard XAML boilerplate strings. -->
<xsl:template name="ShowXamlSyntaxBoilerplate">
<xsl:param name="param0"/>
+ <!-- TFS bug 303004: DO NOT SHOW ANY xaml syntax boilerplate strings. -->
+ <xsl:variable name="boilerplateId"/>
+
+ <!-- If future requirements call for showing one or more boilerplate strings for xaml,
+ use the commented out code to specify the ids of the shared content items to include.
+ NOTE: the markup like div/@class[.='interfaceOverviewXamlSyntax' is added by XamlUsageSyntax.cs in BuildAssembler. -->
+ <!--
<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:value-of select="div/@class[.='interfaceOverviewXamlSyntax' or
+ .='propertyXamlSyntax_abstractType' or
+ .='classXamlSyntax_abstract']"/>
</xsl:variable>
+ -->
<xsl:if test="$boilerplateId!=''">
<span codeLanguage="XAML">
@@ -402,7 +394,7 @@
<!-- Display the XAML Values section. -->
<xsl:template name="showXamlValuesSection">
<xsl:for-each select="//ddue:section[starts-with(@address,'xamlValues')]">
- <span codeLanguage="XAML">
+ <div id="xamlValues">
<p/>
<xsl:call-template name="subSection">
<xsl:with-param name="title">
@@ -412,7 +404,7 @@
<xsl:apply-templates select="ddue:content"/>
</xsl:with-param>
</xsl:call-template>
- </span>
+ </div>
</xsl:for-each>
</xsl:template>