Updated documentation.

master
Robert Baron 2017-11-05 09:20:38 -05:00
parent d68b98cef9
commit ddf3b0462b
997 changed files with 7576664 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,48 @@
Sandcastle Help File Builder
----------------------------
This package allows you to deploy the Sandcastle Help File Builder tools inside of a project to build help files
without installing the tools manually such as on a build server. The following limitations apply:
- You must install one or more of the Reflection Data Set packages based on which platform types you need:
.NETCore, .NETFramework, .NETMicroFramework, .NETPortable, Silverlight, WindowsPhone, WindowsPhoneApp,
and/or UniversalWindows.
If multiple versions are available for any given reflection data set package, download the latest version as
it will cover all prior versions as well.
- Set the project's ComponentPath property to the package folder so that the project can find the reflection
data files and any other third-party build components, plug-ins, presentation styles, etc. deployed as NuGet
packages.
- Only the website, MS Help Viewer, Open XML, and markdown help file formats are supported unconditionally as
there are no external tool dependencies for them.
- To build Help 1 output, the required help compiler tools and components must be installed separately. Help file
builds using that formats will fail if those components are not installed.
- Any third-party build components, plug-ins, presentation styles, etc. not deployed as NuGet packages must be
included within your project and must be placed within the project folder so that they can be found.
- The SHFBROOT environment variable does not need to be defined. However, the help file project must contain a
conditional property that defines the relative path to the SHFB tools folder within the main PropertyGroup
element.
Example:
<PropertyGroup>
<!-- NOTE: Update the version number in the path (YYYY.M.D.R) to match the package version -->
<SHFBROOT Condition=" '$(SHFBROOT)' == '' ">$(MSBuildThisFileDirectory)..\packages\EWSoftware.SHFB.YYYY.M.D.R\Tools\</SHFBROOT>
... other SHFB project properties ...
</PropertyGroup>
- No standalone GUI or Visual Studio support is provided for managing the help project and none of the non-essential
tools or help files are included in this package in order to keep its size down to the bare minimum. If wanted,
those items must be downloaded and installed from the GitHub project site using the guided installer:
https://GitHub.com/EWSoftware/SHFB
See this help topic for more details on XCOPY/NuGet Build Server Deployment:
http://EWSoftware.github.io/SHFB/html/50ad2c8c-5004-4b4c-a77f-97b8c403c9f2.htm

View File

@ -0,0 +1,59 @@
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="Microsoft.Ddue.Tools.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<!-- If you get an HTTP status 407 or 417 error, try one of the following methods to configure BuildAssember
to work with your proxy server so that it can contact the MSDN web service to resolve framework reference
links. -->
<!-- Method 1 (this works most often so try it first) -->
<!--
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy usesystemdefault="true"/>
</defaultProxy>
</system.net>
-->
<!-- Method 2 (update the URL for your proxy) -->
<!--
<system.net>
<defaultProxy enabled="true" useDefaultCredentials="true">
<proxy bypassonlocal="true" proxyaddress="http://yourproxy:8080" />
</defaultProxy>
</system.net>
-->
<!-- Method 3 (update the URL for your proxy) -->
<!--
<system.net>
<defaultProxy useDefaultCredentials="true">
<proxy scriptLocation="http://your.server.com/proxy.pac" usesystemdefault="true" />
</defaultProxy>
</system.net>
-->
<!-- Add this element just after the defaultProxy element in the system.net section above if you get an
HTTP 417 error. -->
<!--
<settings>
<servicePointManager expect100Continue="false" />
</settings>
-->
<applicationSettings>
<Microsoft.Ddue.Tools.Properties.Settings>
<setting name="BuildComponents_MtpsContentService_ContentService" serializeAs="String">
<value>http://services.msdn.microsoft.com/ContentServices/ContentService.asmx</value>
</setting>
</Microsoft.Ddue.Tools.Properties.Settings>
</applicationSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>

Binary file not shown.

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- The reflection information file to use -->
<reflectionInfo file="..\..\..\TestCaseProject\Doc\Help\Working\reflection.org" />
<!-- The inherited documentation output filename -->
<inheritedDocs file="..\..\..\TestCaseProject\Doc\Help\Working\_InheritedDocs_.xml" />
<!-- This is used to see duplicate comment key warnings. They can usually
be ignored. Comment this element out to suppress them. -->
<showDuplicateWarning />
<!-- The XML comments file list. The "cacheSize" attribute represents the
size of the index cache (the maximum number of XML comments files in
memory). -->
<commentsFiles cacheSize="100">
<!-- The <import> elements represent XML comments files that act as a
source for inherited documentation but are not themselves scanned for
<inheritdoc /> tags. The <scan> elements represent files that will
be scanned for the tags and can also contain inherited documentation.
For both, a "path" and/or "file" attribute can be specified. The
"path" attribute is used to indicate that all XML files in the folder
should be included. An optional "recurse" attribute can be used to
indicate whether or not sub-folders are also search for comments
files. Use a "file" attribute to specify an individual comments
file or, when used with "path", the wildcard to match. -->
<!-- Base .NET Framework XML comments files. -->
<import path="%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\" />
<import path="%ProgramFiles(x86)%\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v4.0\" />
<!-- Project XML comments files to scan. -->
<scan file="..\..\..\TestCaseProject\Doc\Help\Working\ExtraComments.xml" />
<scan file="..\..\..\TestCaseProject\Doc\Help\Working\TestDoc.xml" />
</commentsFiles>
</configuration>

View File

@ -0,0 +1,245 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<dduetools>
<!-- This element is used to define the platform type and version information for use in generating
reflection information that is accurate for the selected framework type. The framework and version
attribute values correspond to one of the framework sets defined in the Frameworks.xml file. Using
this method allows for automatic referencing of core framework assemblies as well as automatic
binding redirection from older versions to the defined version for all assemblies in the framework's
assembly set (i.e. automatically redirecting the RIA SDK dependencies from the Silverlight 4 versions to
the Silverlight 5 versions when producing information for a Silverlight 5 project that uses the RIA SDK). -->
<platform framework=".NETFramework" version="4.5" />
<resolver type="Microsoft.Ddue.Tools.Reflection.AssemblyResolver"
assembly="%SHFBROOT%\MRefBuilder.exe" use-gac="false">
<!-- Add an assemblyBinding element to define binding redirects. The dependentAssembly elements can
specify that redirects should be imported from an application or web config file, a redirect for
a range of versions, or a redirect for a single version. Examples are shown below. -->
<!--
<assemblyBinding>
<dependentAssembly importFrom=".\Web.config" />
<dependentAssembly>
<assemblyIdentity name="NationalInstruments.Common" publicKeyToken="4544464cdeaab541" />
<bindingRedirect oldVersion="1.0.0.0-8.1.20.168" newVersion="8.1.20.237" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MyCompany.Util.ComponentFactory" publicKeyToken="E1458197622051B1"
culture="neutral"/>
<bindingRedirect oldVersion="1.2.3.4" newVersion="2.1.4.3"/>
</dependentAssembly>
</assemblyBinding>
-->
<!-- Add this element to ignore assemblies if they cannot be resolved and you do not have a copy of the
assembly (i.e. the Crystal Reports licensing and Visual Studio test playback assemblies. -->
<ignoreIfUnresolved>
<assemblyIdentity name="BusinessObjects.Licensing.KeycodeDecoder" />
<assemblyIdentity name="Microsoft.VisualStudio.TestTools.UITest.Playback" />
</ignoreIfUnresolved>
</resolver>
<!--
<namer type="Microsoft.Ddue.Tools.Reflection.OrcasNamer" assembly="%SHFBROOT%\MRefBuilder.exe" />
-->
<!-- Additional component locations (reflection data, etc.)
<componentLocations>
<location folder="C:\AdditonalReflectionData" />
</componentLocations> -->
<addins>
<addin type="Microsoft.Ddue.Tools.XamlAttachedMembersAddIn" assembly="%SHFBROOT%\MRefBuilder.exe" />
<addin type="Microsoft.Ddue.Tools.ExtensionMethodAddIn" assembly="%SHFBROOT%\MRefBuilder.exe" />
</addins>
<!-- This specifies the base path to the source code. If set, source code context information (filename and
line number) will be included in the reflection data when possible. An up-to-date program database
(PDB) file is required. If the warning option is set to true, missing source context information for
types are reported as warnings rather than as informational messages.
<sourceContext basePath="C:\Path\To\Source" warnOnMissingSourceContext="false" /> -->
<!-- This defines which members to include in the reflection data based on visibility -->
<visibility>
<!-- Include attributes. When false, certain required attributes will still be included. -->
<attributes expose="true" />
<!-- Include explicit interface implementations -->
<explicitInterfaceImplementations expose="true" />
<!-- Include inherited members -->
<inheritedMembers expose="true" />
<!-- Include inherited framework members. For this to work, InheritedMembers must also be enabled. -->
<inheritedFrameworkMembers expose="true" />
<!-- Include inherited internal framework members. For this to work Internals and
InheritedFrameworkMembers must also be enabled. -->
<inheritedFrameworkInternalMembers expose="false" />
<!-- Include inherited private framework members. For this to work Privates and InheritedFrameworkMembers
must also be enabled. -->
<inheritedFrameworkPrivateMembers expose="false" />
<!-- Include internal members -->
<internals expose="false" />
<!-- Include private members -->
<privates expose="false" />
<!-- Include private fields. For this to work, Privates must also be enabled. -->
<privateFields expose="false" />
<!-- Include protected members -->
<protected expose="true" />
<!-- Include protected members of sealed classes. For this to work, Protected must also be enabled. -->
<sealedProtected expose="false" />
<!-- Include "protected internal" members as "protected" only -->
<protectedInternalAsProtected expose="true" />
<!-- Include "no-PIA" COM types, those marked with CompilerGeneratedAttribute and TypeIdentifierAttribute -->
<noPIATypes expose="false" />
<!-- Include public compiler generated types/members -->
<publicCompilerGenerated expose="false" />
</visibility>
<!--
<apiFilter expose="true">
<namespace name="System" expose="true">
<type name="Object" expose="false">
<member name="ToString" expose="true" />
</type>
</namespace>
</apiFilter>
-->
<attributeFilter expose="true">
<!-- All attributes in the System namespace are included by default. However, we need to indicate that for
these two attributes, they are required and should never be excluded. -->
<namespace name="System" expose="true">
<!-- This is required to document Flags enumerated types -->
<type name="FlagsAttribute" required="true" />
<!-- This is required to document obsolete API members -->
<type name="ObsoleteAttribute" required="true" />
<!-- This one is required to find parameter array parameters on methods -->
<type name="ParamArrayAttribute" required="true"/>
<!-- This one is converted to type metadata so it cannot be excluded -->
<type name="SerializableAttribute" required="true"/>
</namespace>
<!-- Most attributes in System.ComponentModel control designer behavior. Don't show them.
The exceptions are attributes relating to data binding. Do show them. -->
<namespace name="System.ComponentModel" expose="false">
<type name="BindableAttribute" expose="true"/>
<type name="BrowsableAttribute" expose="true"/>
<type name="ComplexBindingPropertiesAttribute" expose="true"/>
<type name="DataObjectAttribute" expose="true"/>
<type name="DefaultBindingPropertyAttribute" expose="true"/>
<type name="ListBindableAttribute" expose="true"/>
<type name="LookupBindingPropertiesAttribute" expose="true"/>
<type name="SettingsBindableAttribute" expose="true"/>
<!-- This is required by the XAML usage syntax component -->
<type name="TypeConverterAttribute" required="true"/>
<!-- These may provide useful information too -->
<type name="DefaultEventAttribute" expose="true"/>
<type name="DefaultPropertyAttribute" expose="true"/>
<type name="DefaultValueAttribute" expose="true"/>
<type name="DesignerSerializationVisibilityAttribute" expose="true"/>
<type name="EditorAttribute" expose="true"/>
<type name="EditorBrowsableAttribute" expose="true"/>
<type name="ExtenderProvidedProperty" expose="true"/>
<type name="ProvideProperty" expose="true"/>
</namespace>
<namespace name="System.ComponentModel.Design" expose="false" />
<namespace name="System.ComponentModel.Design.Serialization" expose="false" />
<!-- Most attributes in System.Diagnostics control debugger behavior. Don't show them. -->
<namespace name="System.Diagnostics" expose="false">
<type name="ConditionalAttribute" expose="true"/>
<type name="EventLogPermissionAttribute" expose="true"/>
<type name="PerformanceCounterPermissionAttribute" expose="true"/>
</namespace>
<!-- Attributes in System.Diagnostics.CodeAnalysis control interaction with FxCop. Don't show them. -->
<namespace name="System.Diagnostics.CodeAnalysis" expose="false" />
<!-- Attributes in System.EnterpriseServices control obscure details of COM+ interop. Don't show them. -->
<namespace name="System.EnterpriseServices" expose="false" />
<namespace name="System.Reflection" expose="true">
<!-- The DefaultMember attribute is usually compiler-generated. Users will see it from the member syntax. -->
<type name="DefaultMemberAttribute" expose="false" />
<!-- These two are required by the document model transformations -->
<type name="AssemblyInformationalVersionAttribute" required="true" />
<type name="AssemblyFileVersionAttribute" required="true" />
</namespace>
<!-- Attributes in System.Runtime control obscure details of compilation. Don't show them. -->
<namespace name="System.Runtime" expose="false" />
<!-- Attributes in System.Runtime.CompilerServices control obscure details of compilation but there are a
couple of required attributes and some that may be useful. -->
<namespace name="System.Runtime.CompilerServices" expose="false">
<!-- This is required to document extension methods -->
<type name="ExtensionAttribute" required="true" />
<!-- This is required to document fixed buffers -->
<type name="FixedBufferAttribute" required="true" />
<!-- These may provide useful information -->
<type name="CallerFilePathAttribute" expose="true" />
<type name="CallerLineNumberAttribute" expose="true" />
<type name="CallerMemberNameAttribute" expose="true" />
<type name="UnsafeValueTypeAttribute" expose="true" />
</namespace>
<!-- Attributes in System.Runtime.ConstrainedExecution control obscure details of compilation. Don't show them. -->
<namespace name="System.Runtime.ConstrainedExecution" expose="false" />
<!-- Most attributes in System.Runtime.InteropServices control obscure details of COM interop but there are
some that are useful. -->
<namespace name="System.Runtime.InteropServices" expose="false">
<type name="ClassInterfaceAttribute" expose="true"/>
<!-- This one is converted to type metadata so it cannot be excluded -->
<type name="ComImportAttribute" required="true"/>
<type name="ComVisibleAttribute" expose="true"/>
<type name="DispIdAttribute" expose="true" />
<!-- This one is converted to method metadata so it cannot be excluded -->
<type name="DllImportAttribute" required="true"/>
<!-- This one is converted to method metadata so it cannot be excluded -->
<type name="FieldOffsetAttribute" required="true"/>
<type name="GuidAttribute" expose="true"/>
<type name="InterfaceTypeAttribute" expose="true"/>
<!-- This is required to document optional parameters -->
<type name="OptionalAttribute" required="true" />
<!-- This one is converted to method metadata so it cannot be excluded -->
<type name="PreserveSigAttribute" required="true"/>
<!-- This one is converted to type metadata so it cannot be excluded -->
<type name="StructLayoutAttribute" required="true"/>
<type name="TypeIdentifierAttribute" expose="true" />
</namespace>
<!-- Attributes in System.Runtime.Versioning control details of resource loading. Don't show them. -->
<namespace name="System.Runtime.Versioning" expose="false" />
<!-- Attributes in System.Security might hint at security implementation details. Don't show them. -->
<namespace name="System.Security" expose="false">
<type name="SecurityCriticalAttribute" expose="true" />
<type name="SecurityTreatAsSafeAttribute" expose="true" />
<!-- This is required by the document model transformations -->
<type name="AllowPartiallyTrustedCallersAttribute" required="true" />
</namespace>
<!-- Attributes in System.Security.Permissions might hint at security implementation details. Don't show them. -->
<namespace name="System.Security.Permissions" expose="false">
<!-- This is required by the presentation styles -->
<type name="HostProtectionAttribute" required="true" />
</namespace>
<!-- Attributes in System.Web.Compilation control interaction with the Expression designer. Don't show them. -->
<namespace name="System.Web.Compilation" expose="false" />
<!-- The ASP.NET team only wants these attributes exposed from their namespace. -->
<namespace name="System.Web.UI" expose="false">
<type name="ControlValuePropertyAttribute" expose="true"/>
<!-- This is required by the ASP.NET syntax component -->
<type name="PersistenceModeAttribute" required="true" />
<type name="ValidationPropertyAttribute" expose="true"/>
<type name="WebResourceAttribute" expose="true"/>
<type name="TemplateContainerAttribute" expose="true"/>
<type name="ThemeableAttribute" expose="true"/>
<type name="TemplateInstanceAttribute" expose="true"/>
</namespace>
<!-- Don't show attributes related to XAML serialization details. -->
<namespace name="System.Windows.Markup" expose="true">
<!-- This is required by the XAML syntax data transformation -->
<type name="ContentPropertyAttribute" required="true" />
<type name="ConstructorArgumentAttribute" expose="false" />
<type name="DependsOnAttribute" expose="false" />
<type name="DesignerSerializationOptionsAttribute" expose="false" />
<type name="ValueSerializerAttribute" expose="false" />
<type name="XmlnsCompatibleWithAttribute" expose="false" />
<type name="XmlnsDefinitionAttribute" expose="false" />
<type name="XmlnsPrefixAttribute" expose="false" />
</namespace>
<!-- The GeneratedCodeAttribute is useful only to tools, and should be hidden from end users.-->
<namespace name="System.CodeDom.Compiler" expose="true">
<type name="GeneratedCodeAttribute" expose="false" />
</namespace>
</attributeFilter>
</dduetools>
</configuration>

Binary file not shown.

View File

@ -0,0 +1,6 @@
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
</configuration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 578 B

View File

@ -0,0 +1,72 @@
<FlowDocument
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<FlowDocument.Resources>
<!-- This represents the style of the containing section and paragraph. These settings should match
the style of the target document. -->
<Style TargetType="{x:Type Section}">
<Setter Property="FontFamily" Value="Consolas, Courier New, Courier"/>
<Setter Property="FontSize" Value="12.0"/>
<Setter Property="BorderBrush" Value="#939393"/>
<Setter Property="BorderThickness" Value="0.5"/>
<Setter Property="Margin" Value="0, 0, 0, 10"/>
<Setter Property="Padding" Value="5"/>
<Style.Resources>
<Style TargetType="{x:Type Paragraph}">
<Setter Property="Margin" Value="0"/>
</Style>
</Style.Resources>
</Style>
<!-- These represent the styles of the span elements -->
<Style x:Key="HighlightComment">
<Setter Property="TextElement.Foreground" Value="#006633" />
</Style>
<Style x:Key="HighlightLiteral">
<Setter Property="TextElement.Foreground" Value="#CC0000" />
</Style>
<Style x:Key="HighlightNumber">
<Setter Property="TextElement.Foreground" Value="#009966" />
</Style>
<Style x:Key="HighlightKeyword">
<Setter Property="TextElement.Foreground" Value="#0000FF" />
</Style>
<Style x:Key="HighlightPreprocessor">
<Setter Property="TextElement.Foreground" Value="#996666" />
</Style>
<Style x:Key="HighlightXmlTag">
<Setter Property="TextElement.Foreground" Value="#AA4400" />
</Style>
<Style x:Key="HighlightXmlBracket">
<Setter Property="TextElement.Foreground" Value="#0000FF" />
</Style>
<Style x:Key="HighlightXmlComment">
<Setter Property="TextElement.Foreground" Value="#006633" />
</Style>
<Style x:Key="HighlightXmlCData">
<Setter Property="TextElement.Foreground" Value="#AA0088" />
</Style>
<Style x:Key="HighlightXmlAttributeName">
<Setter Property="TextElement.Foreground" Value="#0000FF" />
</Style>
<Style x:Key="HighlightXmlAttributeEqual">
<Setter Property="TextElement.Foreground" Value="#000000" />
</Style>
<Style x:Key="HighlightXmlAttributeValue">
<Setter Property="TextElement.Foreground" Value="#CC0000" />
</Style>
<Style x:Key="HighlightPowerShellCmdLet">
<Setter Property="TextElement.Foreground" Value="#5A9EA5" />
<Setter Property="TextElement.FontWeight" Value="Bold" />
</Style>
<Style x:Key="HighlightNamespace">
<Setter Property="TextElement.Foreground" Value="#008284" />
</Style>
<Style x:Key="HighlightLineNo">
<Setter Property="TextElement.FontSize" Value="10" />
</Style>
</FlowDocument.Resources>
<!-- The colorized flow document element text can be inserted by replacing the marker text with it. -->
<Section>
<Paragraph xml:space="preserve">@CONTENT@</Paragraph>
</Section>
</FlowDocument>

View File

@ -0,0 +1,27 @@
.highlight-inline { color: #000066; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; }
.highlight-pre { clear: both; width: 99.5%; background-color: #EFEFF7; padding: 0.4em; font-size: 9pt; font-family: Consolas, "Courier New", Courier, monospace; margin-top: 0px; margin-bottom: 1em; }
.highlight-comment { color: #006633; }
.highlight-literal { color: #CC0000; }
.highlight-number { color: #009966; }
.highlight-keyword { color: #0000FF; }
.highlight-preprocessor { color: #996666; }
.highlight-xml-tag { color: #AA4400 }
.highlight-xml-bracket { color: #0000FF }
.highlight-xml-comment { color: #006633 }
.highlight-xml-cdata { color: #AA0088 }
.highlight-xml-attribute-name { color: #0000FF }
.highlight-xml-attribute-equal { color: #000000 }
.highlight-xml-attribute-value {color: #CC0000 }
.highlight-title { font-weight: bold; margin-top: 1em; margin-bottom: 2px; border-bottom: gray 1px solid; padding-bottom: 3px; }
.highlight-copycode { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; }
.highlight-copycode_h { float: right; padding-right: 10px; font-weight: normal; cursor: pointer; text-decoration: underline}
.highlight-lineno { font-size: 80%; color: black }
.highlight-lnborder { border-right-style: solid; border-right-width: 1px; border-color: gray; padding-right: 4px; margin-right: 4px; width: 4px;}
.highlight-spacer { padding-right: 20px; }
.highlight-spacerShort { padding-right: 5px; }
.highlight-collapsebox { cursor: pointer; color: black; text-align: center; border-style: solid; border-width: 1px; border-color: gray; margin-left: 2px; margin-right: 5px; }
.highlight-collapsed { border-style: solid; border-width: 1px; border-color: gray; margin: 2px; color: gray; }
.highlight-expanded { border-left-style: solid; border-left-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; }
.highlight-endblock { border-left-style: solid; border-left-width: 1px; border-bottom-style: solid; border-bottom-width: 1px; border-color: gray; margin-left: 2px; margin-right: 10px; }
.highlight-pshell-cmdlet { color: #5A9EA5; font-weight: bold; }
.highlight-namespace { color: #008284; }

View File

@ -0,0 +1,148 @@
//===============================================================================================================
// System : Color Syntax Highlighter
// File : Highlight.js
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 10/21/2012
// Note : Copyright 2006-2012, Eric Woodruff, All rights reserved
//
// This contains the script to expand and collapse the regions in the syntax highlighted code.
//
// This is a customized version for the Sandcastle Help File Builder. It overrides the CopyCode() function
// from the Hana, Prototype, and VS2005 presentation styles to remove the line numbering and collapsible
// region elements. The VS2010 style does not currently use the CopyCode() function in here as it has its own
// version for copying the code.
//===============================================================================================================
// Expand/collapse a region
function HighlightExpandCollapse(showId, hideId)
{
var showSpan = document.getElementById(showId), hideSpan = document.getElementById(hideId);
showSpan.style.display = "inline";
hideSpan.style.display = "none";
}
// Copy the code from a colorized code block to the clipboard.
function CopyCode(key)
{
var idx, line, block, htmlLines, lines, codeText, hasLineNos, hasRegions, clip, trans,
copyObject, clipID;
var reLineNo = /^\s*\d{1,4}/;
var reRegion = /^\s*\d{1,4}\+.*?\d{1,4}-/;
var reRegionText = /^\+.*?\-/;
// Find the table row element containing the code
var trElements = document.getElementsByTagName("tr");
for(idx = 0; idx < trElements.length; idx++)
if(key.parentNode.parentNode.parentNode == trElements[idx].parentNode)
{
block = trElements[idx].nextSibling;
break;
}
if(block.innerText != undefined)
codeText = block.innerText;
else
codeText = block.textContent;
hasLineNos = block.innerHTML.indexOf("highlight-lineno");
hasRegions = block.innerHTML.indexOf("highlight-collapsebox");
htmlLines = block.innerHTML.split("\n");
lines = codeText.split("\n");
// Remove the line numbering and collapsible regions if present
if(hasLineNos != -1 || hasRegions != -1)
{
codeText = "";
for(idx = 0; idx < lines.length; idx++)
{
line = lines[idx];
if(hasRegions && reRegion.test(line))
line = line.replace(reRegion, "");
else
{
line = line.replace(reLineNo, "");
// Lines in expanded blocks have an extra space
if(htmlLines[idx].indexOf("highlight-expanded") != -1 ||
htmlLines[idx].indexOf("highlight-endblock") != -1)
line = line.substr(1);
}
if(hasRegions && reRegionText.test(line))
line = line.replace(reRegionText, "");
codeText += line;
// Not all browsers keep the line feed when split
if(line[line.length - 1] != "\n")
codeText += "\n";
}
}
// IE or FireFox/Netscape?
if(window.clipboardData)
window.clipboardData.setData("Text", codeText);
else
if(window.netscape)
{
// Give unrestricted access to browser APIs using XPConnect
try
{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch(e)
{
alert("Universal Connect was refused, cannot copy to clipboard. Go to about:config and set " +
"signed.applets.codebase_principal_support to true to enable clipboard support.");
return;
}
// Creates an instance of nsIClipboard
clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(
Components.interfaces.nsIClipboard);
// Creates an instance of nsITransferable
if(clip)
trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(
Components.interfaces.nsITransferable);
if(!trans)
{
alert("Copy to Clipboard is not supported by this browser");
return;
}
// Register the data flavor
trans.addDataFlavor("text/unicode");
// Create object to hold the data
copyObject = new Object();
// Creates an instance of nsISupportsString
copyObject = Components.classes["@mozilla.org/supports-string;1"].createInstance(
Components.interfaces.nsISupportsString);
// Assign the data to be copied
copyObject.data = codeText;
// Add data objects to transferable
trans.setTransferData("text/unicode", copyObject, codeText.length * 2);
clipID = Components.interfaces.nsIClipboard;
if(!clipID)
{
alert("Copy to Clipboard is not supported by this browser");
return;
}
// Transfer the data to the clipboard
clip.setData(trans, null, clipID.kGlobalClipboard);
}
else
alert("Copy to Clipboard is not supported by this browser");
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="ISO-8859-1" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="code">
<xsl:value-of select="text()" disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="comment">
<span class="highlight-comment"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="blockcomment">
<span class="highlight-comment">/*<xsl:value-of select="text()" disable-output-escaping="yes" />*/</span>
</xsl:template>
<xsl:template match="fsblockcomment">
<span class="highlight-comment">(*<xsl:value-of select="text()" disable-output-escaping="yes" />*)</span>
</xsl:template>
<xsl:template match="cpp-linecomment">
<span class="highlight-comment">//<xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="sql-linecomment">
<span class="highlight-comment">--<xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="pshell-cmdlet">
<span class="highlight-pshell-cmdlet"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="namespace">
<span class="highlight-namespace"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="literal">
<span class="highlight-literal"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="number">
<span class="highlight-number"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="keyword">
<span class="highlight-keyword"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="preprocessor">
<span class="highlight-preprocessor"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-value"><xsl:value-of select="text()" disable-output-escaping="yes" /></xsl:template>
<xsl:template match="xml-tag"><span class="highlight-xml-tag"><xsl:value-of select="text()" disable-output-escaping="yes" /></span></xsl:template>
<xsl:template match="xml-bracket"><span class="highlight-xml-bracket"><xsl:value-of select="text()" disable-output-escaping="yes" /></span></xsl:template>
<xsl:template match="xml-comment"><span class="highlight-xml-comment"><xsl:value-of select="text()" disable-output-escaping="yes"/></span></xsl:template>
<xsl:template match="xml-cdata">
<span class="highlight-xml-bracket"><xsl:text>&lt;![CDATA[</xsl:text></span>
<span class="highlight-xml-cdata"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
<span class="highlight-xml-bracket"><xsl:text>]]&gt;</xsl:text></span>
</xsl:template>
<xsl:template match="xml-attribute-name"><span class="highlight-xml-attribute-name"><xsl:value-of select="text()" disable-output-escaping="yes" /></span></xsl:template>
<xsl:template match="xml-attribute-equal"><span class="highlight-xml-attribute-equal"><xsl:value-of select="text()" disable-output-escaping="yes" /></span></xsl:template>
<xsl:template match="xml-attribute-value"><span class="highlight-xml-attribute-value"><xsl:value-of select="text()" disable-output-escaping="yes" /></span></xsl:template>
<xsl:template match="parsedcode">
<xsl:choose>
<xsl:when test="@in-box[.=0]">
<xsl:element name="span">
<xsl:attribute name="class">highlight-inline</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,190 @@
//=============================================================================
// System : Color Syntax Highlighter
// File : Highlight_ac.js
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 11/13/2007
// Note : Copyright 2006, Eric Woodruff, All rights reserved
//
// This contains the script to expand and collapse the regions in the
// syntax highlighted code.
//
// SHFB: This version is only used in additional content HTML files for
// backward compatibility.
//
//=============================================================================
// Expand/collapse a region
function HighlightExpandCollapse(showId, hideId)
{
var showSpan = document.getElementById(showId),
hideSpan = document.getElementById(hideId);
showSpan.style.display = "inline";
hideSpan.style.display = "none";
}
// Copy the code if Enter or Space is hit with the image focused
function CopyColorizedCodeCheckKey(titleDiv, eventObj)
{
if(eventObj != undefined && (eventObj.keyCode == 13 ||
eventObj.keyCode == 32))
CopyColorizedCode(titleDiv);
}
// Change the icon as the mouse moves in and out of the Copy Code link
// There should be an image with the same name but an "_h" suffix just
// before the extension.
function CopyCodeChangeIcon(linkSpan)
{
var image = linkSpan.firstChild.src;
var pos = image.lastIndexOf(".");
if(linkSpan.className == "highlight-copycode")
{
linkSpan.className = "highlight-copycode_h";
linkSpan.firstChild.src = image.substr(0, pos) + "_h" +
image.substr(pos);
}
else
{
linkSpan.className = "highlight-copycode";
linkSpan.firstChild.src = image.substr(0, pos - 2) + image.substr(pos);
}
}
// Copy the code from a colorized code block to the clipboard.
function CopyColorizedCode(titleDiv)
{
var preTag, idx, line, block, htmlLines, lines, codeText, hasLineNos,
hasRegions, clip, trans, copyObject, clipID;
var reLineNo = /^\s*\d{1,4}/;
var reRegion = /^\s*\d{1,4}\+.*?\d{1,4}-/;
var reRegionText = /^\+.*?\-/;
// Find the <pre> tag containing the code. It should be in the next
// element or one of its children.
block = titleDiv.nextSibling;
while(block.nodeName == "#text")
block = block.nextSibling;
while(block.tagName != "PRE")
{
block = block.firstChild;
while(block.nodeName == "#text")
block = block.nextSibling;
}
if(block.innerText != undefined)
codeText = block.innerText;
else
codeText = block.textContent;
hasLineNos = block.innerHTML.indexOf("highlight-lineno");
hasRegions = block.innerHTML.indexOf("highlight-collapsebox");
htmlLines = block.innerHTML.split("\n");
lines = codeText.split("\n");
// Remove the line numbering and collapsible regions if present
if(hasLineNos != -1 || hasRegions != -1)
{
codeText = "";
for(idx = 0; idx < lines.length; idx++)
{
line = lines[idx];
if(hasRegions && reRegion.test(line))
line = line.replace(reRegion, "");
else
{
line = line.replace(reLineNo, "");
// Lines in expanded blocks have an extra space
if(htmlLines[idx].indexOf("highlight-expanded") != -1 ||
htmlLines[idx].indexOf("highlight-endblock") != -1)
line = line.substr(1);
}
if(hasRegions && reRegionText.test(line))
line = line.replace(reRegionText, "");
codeText += line;
// Not all browsers keep the line feed when split
if(line[line.length - 1] != "\n")
codeText += "\n";
}
}
// IE or FireFox/Netscape?
if(window.clipboardData)
window.clipboardData.setData("Text", codeText);
else
if(window.netscape)
{
// Give unrestricted access to browser APIs using XPConnect
try
{
netscape.security.PrivilegeManager.enablePrivilege(
"UniversalXPConnect");
}
catch(e)
{
alert("Universal Connect was refused, cannot copy to " +
"clipboard. Go to about:config and set " +
"signed.applets.codebase_principal_support to true to " +
"enable clipboard support.");
return;
}
// Creates an instance of nsIClipboard
clip = Components.classes[
"@mozilla.org/widget/clipboard;1"].createInstance(
Components.interfaces.nsIClipboard);
// Creates an instance of nsITransferable
if(clip)
trans = Components.classes[
"@mozilla.org/widget/transferable;1"].createInstance(
Components.interfaces.nsITransferable);
if(!trans)
{
alert("Copy to Clipboard is not supported by this browser");
return;
}
// Register the data flavor
trans.addDataFlavor("text/unicode");
// Create object to hold the data
copyObject = new Object();
// Creates an instance of nsISupportsString
copyObject = Components.classes[
"@mozilla.org/supports-string;1"].createInstance(
Components.interfaces.nsISupportsString);
// Assign the data to be copied
copyObject.data = codeText;
// Add data objects to transferable
trans.setTransferData("text/unicode", copyObject,
codeText.length * 2);
clipID = Components.interfaces.nsIClipboard;
if(!clipID)
{
alert("Copy to Clipboard is not supported by this browser");
return;
}
// Transfer the data to the clipboard
clip.setData(trans, null, clipID.kGlobalClipboard);
}
else
alert("Copy to Clipboard is not supported by this browser");
}

View File

@ -0,0 +1,71 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- This is used to convert the syntax elements to XAML flow document elements -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output encoding="ISO-8859-1" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="code">
<xsl:value-of select="text()" disable-output-escaping="yes" />
</xsl:template>
<xsl:template match="comment">
<Span Style="{{DynamicResource HighlightComment}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="blockcomment">
<Span Style="{{DynamicResource HighlightComment}}">/*<xsl:value-of select="text()" disable-output-escaping="yes" />*/</Span>
</xsl:template>
<xsl:template match="fsblockcomment">
<Span Style="{{DynamicResource HighlightComment}}">(*<xsl:value-of select="text()" disable-output-escaping="yes" />*)</Span>
</xsl:template>
<xsl:template match="cpp-linecomment">
<Span Style="{{DynamicResource HighlightComment}}">//<xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="sql-linecomment">
<Span Style="{{DynamicResource HighlightComment}}">--<xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="pshell-cmdlet">
<Span Style="{{DynamicResource HighlightPowerShellCmdLet}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="namespace">
<Span Style="{{DynamicResource HighlightNamespace}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="literal">
<Span Style="{{DynamicResource HighlightLiteral}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="number">
<Span Style="{{DynamicResource HighlightNumber}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="keyword">
<Span Style="{{DynamicResource KighlightKeyword}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="preprocessor">
<Span Style="{{DynamicResource HighlightPreprocessor}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
</xsl:template>
<xsl:template match="xml-value"><xsl:value-of select="text()" disable-output-escaping="yes" /></xsl:template>
<xsl:template match="xml-tag"><Span Style="{{DynamicResource HighlightXmlTag}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span></xsl:template>
<xsl:template match="xml-bracket"><Span Style="{{DynamicResource HighlightXmlBracket}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span></xsl:template>
<xsl:template match="xml-comment"><Span Style="{{DynamicResource HighlightXmlComment}}"><xsl:value-of select="text()" disable-output-escaping="yes"/></Span></xsl:template>
<xsl:template match="xml-cdata">
<Span Style="{{DynamicResource HighlightXmlBracket}}"><xsl:text>&lt;![CDATA[</xsl:text></Span>
<Span Style="{{DynamicResource HighlightXmlCData}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span>
<Span Style="{{DynamicResource HighlightXmlBracket}}"><xsl:text>]]&gt;</xsl:text></Span>
</xsl:template>
<xsl:template match="xml-attribute-name"><Span Style="{{DynamicResource HighlightXmlAttributeName}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span></xsl:template>
<xsl:template match="xml-attribute-equal"><Span Style="{{DynamicResource HighlightXmlAttributeEqual}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span></xsl:template>
<xsl:template match="xml-attribute-value"><Span Style="{{DynamicResource HighlightXmlAttributeValue}}"><xsl:value-of select="text()" disable-output-escaping="yes" /></Span></xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,119 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
>
<xsl:output encoding="ISO-8859-1" indent="no" omit-xml-declaration="yes"/>
<!-- This is used to keep extra whitespace and line breaks intact -->
<xsl:template match="text()">
<w:r>
<!-- Keep this on the same line to prevent extra space from getting included -->
<w:t xml:space="preserve"><xsl:value-of select="." /></w:t>
</w:r>
</xsl:template>
<xsl:template match="code">
<w:r>
<w:t xml:space="preserve"><xsl:value-of select="text()" disable-output-escaping="yes" /></w:t>
</w:r>
</xsl:template>
<xsl:template match="comment">
<span class="Comment"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="blockcomment">
<span class="Comment">/*<xsl:value-of select="text()" disable-output-escaping="yes" />*/</span>
</xsl:template>
<xsl:template match="fsblockcomment">
<span class="Comment">(*<xsl:value-of select="text()" disable-output-escaping="yes" />*)</span>
</xsl:template>
<xsl:template match="cpp-linecomment">
<span class="Comment">//<xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="sql-linecomment">
<span class="Comment">--<xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="pshell-cmdlet">
<span class="PShellCmdlet"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="namespace">
<span class="Namespace"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="literal">
<span class="Literal"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="number">
<span class="Number"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="keyword">
<span class="Keyword"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="preprocessor">
<span class="Preprocessor"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-value">
<w:r>
<w:t xml:space="preserve"><xsl:value-of select="text()" disable-output-escaping="yes" /></w:t>
</w:r>
</xsl:template>
<xsl:template match="xml-tag">
<span class="XmlTag"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-bracket">
<span class="XmlBracket"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-comment">
<span class="XmlComment"><xsl:value-of select="text()" disable-output-escaping="yes"/></span>
</xsl:template>
<xsl:template match="xml-cdata">
<span class="XmlBracket"><xsl:text>&lt;![CDATA[</xsl:text></span>
<span class="XmlCDATA"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
<span class="XmlBracket"><xsl:text>]]&gt;</xsl:text></span>
</xsl:template>
<xsl:template match="xml-attribute-name">
<span class="XmlAttributeName"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-attribute-equal">
<span class="XmlAttributeEqual"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="xml-attribute-value">
<span class="XmlAttributeValue"><xsl:value-of select="text()" disable-output-escaping="yes" /></span>
</xsl:template>
<xsl:template match="parsedcode">
<xsl:choose>
<xsl:when test="@in-box[.=0]">
<xsl:element name="span">
<xsl:attribute name="class">CodeInline</xsl:attribute>
<xsl:apply-templates/>
</xsl:element>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="/">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 838 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 837 B

View File

@ -0,0 +1,157 @@
<%@ Page Language="C#" EnableViewState="False" %>
<script runat="server">
//===============================================================================================================
// System : Sandcastle Help File Builder
// File : FillNode.aspx
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 04/09/2014
// Note : Copyright 2007-2014, Eric Woodruff, All rights reserved
// Compiler: Microsoft C#
//
// This file contains the code used to dynamically load a parent node with its child table of content nodes when
// first expanded.
//
// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be
// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This
// notice, the author's name, and all copyright notices must remain intact in all applications, documentation,
// and source files.
//
// Date Who Comments
// ==============================================================================================================
// 06/21/2007 EFW Created the code
// 07/17/2013 EFW Merged code contributed by Procomp Solutions Oy that improves performance for large TOCs by
// using XML serialization and caching.
//===============================================================================================================
private static readonly TocNode[] NoChildNodes = new TocNode[0];
private static readonly object TocLoadSyncObject = new object();
// This is used to contain the serialized table of contents
[XmlRoot("HelpTOC")]
public sealed class TableOfContents
{
[XmlElement("HelpTOCNode")]
public TocNode[] ChildNodes;
[XmlIgnore]
public IDictionary<string, TocNode> NodesById;
internal void IndexNodes()
{
this.NodesById = new Dictionary<string, TocNode>();
AddToIndex(this.NodesById, this.ChildNodes);
}
private static void AddToIndex(IDictionary<string, TocNode> nodesById, TocNode[] nodes)
{
foreach(TocNode node in nodes)
if(!String.IsNullOrEmpty(node.Id))
{
nodesById.Add(node.Id, node);
AddToIndex(nodesById, node.ChildNodes);
}
}
}
// This represents a single node in the table of contents
public sealed class TocNode
{
[XmlAttribute("Id")]
public string Id;
[XmlAttribute("Title")]
public string Title;
[XmlAttribute("Url")]
public string Url;
[XmlElement("HelpTOCNode")]
public TocNode[] ChildNodes;
}
// Load the TOC info and store it in the cache on first use
private TableOfContents GetToc()
{
string tocPath = Server.MapPath("WebTOC.xml");
string tocCacheKey = tocPath;
lock(TocLoadSyncObject)
{
TableOfContents toc = this.Cache[tocCacheKey] as TableOfContents;
if(toc == null)
{
CacheDependency cacheDependency = new CacheDependency(tocPath);
using(XmlReader reader = XmlReader.Create(tocPath))
{
toc = (TableOfContents)new XmlSerializer(typeof(TableOfContents)).Deserialize(reader);
toc.IndexNodes();
}
this.Cache.Insert(tocCacheKey, toc, cacheDependency);
}
return toc;
}
}
// Load the requested node with its children
protected override void Render(HtmlTextWriter writer)
{
StringBuilder sb = new StringBuilder(10240);
TableOfContents toc = this.GetToc();
// The ID to use should be passed in the query string
string expandedId = this.Request.QueryString["Id"];
TocNode expandedNode;
if(toc.NodesById.TryGetValue(expandedId, out expandedNode))
{
foreach(TocNode childNode in expandedNode.ChildNodes ?? NoChildNodes)
{
if(childNode.ChildNodes != null && childNode.ChildNodes.Length != 0)
{
// Write out a parent TOC entry
string childUrl = childNode.Url;
string childTarget;
if(!String.IsNullOrEmpty(childUrl))
childTarget = " target=\"TopicContent\"";
else
{
childUrl = "#";
childTarget = String.Empty;
}
sb.AppendFormat("<div class=\"TreeNode\">\r\n" +
"<img class=\"TreeNodeImg\" onclick=\"javascript: Toggle(this);\" src=\"Collapsed.gif\"/>" +
"<a class=\"UnselectedNode\" onclick=\"javascript: return Expand(this);\" " +
"href=\"{0}\"{1}>{2}</a>\r\n" +
"<div id=\"{3}\" class=\"Hidden\"></div>\r\n" +
"</div>\r\n", HttpUtility.HtmlEncode(childUrl), childTarget, HttpUtility.HtmlEncode(childNode.Title),
childNode.Id);
}
else
{
string childUrl = childNode.Url;
if(String.IsNullOrEmpty(childUrl))
childUrl = "about:blank";
// Write out a TOC entry that has no children
sb.AppendFormat("<div class=\"TreeItem\">\r\n" +
"<img src=\"Item.gif\"/><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return SelectNode(this);\" href=\"{0}\" " +
"target=\"TopicContent\">{1}</a>\r\n" +
"</div>\r\n", HttpUtility.HtmlEncode(childUrl), HttpUtility.HtmlEncode(childNode.Title));
}
}
writer.Write(sb.ToString());
}
else
writer.Write("<b>TOC node not found!</b>");
}
</script>

View File

@ -0,0 +1,52 @@
<?
// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
header("Content-Type: text/html; charset=utf-8");
$toc = new DOMDocument();
$toc->load('WebTOC.xml');
$xpath = new DOMXPath($toc);
$id = $_GET["Id"];
$nodes = $xpath->query("//HelpTOCNode[@Id='$id']/*");
if ($nodes->length == 0)
{
?>
<b>TOC node not found!</b>
<?
die();
}
foreach($nodes as $node)
{
$id = $node->getAttribute("Id");
$url = $node->getAttribute("Url");
$title = $node->getAttribute("Title");
if (empty($url))
{
$url = "#";
$target = "";
}
else
{
$target = " target=\"TopicContent\"";
}
if ($node->hasChildNodes())
{
?>
<div class="TreeNode">
<img class="TreeNodeImg" onclick="javascript: Toggle(this);" src="Collapsed.gif"/>
<a class="UnselectedNode" onclick="javascript: Expand(this);" href="<?= $url ?>"<?= $target ?>><?= $title ?></a>
<div id="<?= $id ?>" class="Hidden"></div>
</div>
<?
}
else
{
?>
<div class="TreeItem">
<img src="Item.gif"/>
<a class="UnselectedNode" onclick="javascript: SelectNode(this);" href="<?= $url ?>"<?= $target ?>><?= $title ?></a>
</div>
<?
}
}
?>

View File

@ -0,0 +1,153 @@
<%@ Page Language="C#" EnableViewState="False" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head runat="server">
<title>{@HtmlEncHelpTitle} - Table of Content</title>
<link rel="stylesheet" href="TOC.css" />
<link rel="shortcut icon" href="favicon.ico"/>
<script type="text/javascript" src="TOC.js"></script>
</head>
<body onload="javascript: Initialize('.aspx');" onresize="javascript: ResizeTree();">
<form id="IndexForm" runat="server">
<div id="TOCDiv" class="TOCDiv">
<div id="divSearchOpts" class="SearchOpts" style="height: 100px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideSearch(false);"
src="CloseSearch.png" height="17" width="17" alt="Hide search" style="float: right;"/>
Keyword(s) for which to search:
<input id="txtSearchText" type="text" style="width: 100%;"
onkeypress="javascript: return OnSearchTextKeyPress(event);" /><br />
<input id="chkSortByTitle" type="checkbox" /><label for="chkSortByTitle">&nbsp;Sort results by title</label><br />
<input type="button" value="Search" onclick="javascript: return PerformSearch();" />
</div>
<div id="divIndexOpts" class="IndexOpts" style="height: 25px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideIndex(false);"
src="CloseSearch.png" height="17" width="17" alt="Hide index" style="float: right;"/>
Keyword Index
</div>
<div id="divNavOpts" class="NavOpts" style="height: 20px;">
<img class="TOCLink" onclick="javascript: SyncTOC();" src="SyncTOC.gif"
height="16" width="16" alt="Sync to TOC"/>
<img class="TOCLink" onclick="javascript: ExpandOrCollapseAll(false);"
src="CollapseAll.png" height="16" width="16" alt="Collapse all" />
<img class="TOCLink" onclick="javascript: ShowHideIndex(true);"
src="Index.gif" height="16" width="16" alt="Index" />
<img class="TOCLink" onclick="javascript: ShowHideSearch(true);"
src="Search.gif" height="16" width="16" alt="Search" />
<a href="#" title="Click to obtain a direct link to the displayed topic"
style="margin-left: 10px; vertical-align: top;"
onclick="javascript: ShowDirectLink();">Direct Link</a>
</div>
<div class="Tree" id="divSearchResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divIndexResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divTree" onselectstart="javascript: return false;">
<asp:Literal ID="lcTOC" runat="server" />
</div>
</div>
<div id="TOCSizer" class="TOCSizer" onmousedown="OnMouseDown(event)" onselectstart="javascript: return false;"></div>
<iframe id="TopicContent" name="TopicContent" class="TopicContent" src="{@WebDefaultTopic}">
This page uses an IFRAME but your browser does not support it.
</iframe>
</form>
</body>
</html>
<script runat="server">
//===============================================================================================================
// System : Sandcastle Help File Builder
// File : Index.aspx
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 04/09/2014
// Note : Copyright 2007-2014, Eric Woodruff, All rights reserved
// Compiler: Microsoft C#
//
// This file contains the code used to display the index page for a website produced by the help file builder.
// The root nodes are loaded for the table of content. Child nodes are loaded dynamically when first expanded
// using an Ajax call.
//
// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be
// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This
// notice, the author's name, and all copyright notices must remain intact in all applications, documentation,
// and source files.
//
// Date Who Comments
// ==============================================================================================================
// 06/21/2007 EFW Created the code
// 02/18/2012 EFW Merged code from tom103 to show direct link
//===============================================================================================================
protected void Page_Load(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder(10240);
string id, url, target, title;
XPathDocument toc = new XPathDocument(Server.MapPath("WebTOC.xml"));
XPathNavigator navToc = toc.CreateNavigator();
XPathNodeIterator root = navToc.Select("HelpTOC/*");
foreach(XPathNavigator node in root)
{
if(node.HasChildren)
{
// Write out a parent TOC entry
id = node.GetAttribute("Id", String.Empty);
title = node.GetAttribute("Title", String.Empty);
url = node.GetAttribute("Url", String.Empty);
if(!String.IsNullOrEmpty(url))
target = " target=\"TopicContent\"";
else
{
url = "#";
target = String.Empty;
}
sb.AppendFormat("<div class=\"TreeNode\">\r\n" +
"<img class=\"TreeNodeImg\" " +
"onclick=\"javascript: Toggle(this);\" " +
"src=\"Collapsed.gif\"/><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return Expand(this);\" " +
"href=\"{0}\"{1}>{2}</a>\r\n" +
"<div id=\"{3}\" class=\"Hidden\"></div>\r\n</div>\r\n",
HttpUtility.HtmlEncode(url), target, HttpUtility.HtmlEncode(title), id);
}
else
{
title = node.GetAttribute("Title", String.Empty);
url = node.GetAttribute("Url", String.Empty);
if(String.IsNullOrEmpty(url))
url = "about:blank";
// Write out a TOC entry that has no children
sb.AppendFormat("<div class=\"TreeItem\">\r\n" +
"<img src=\"Item.gif\"/>" +
"<a class=\"UnselectedNode\" " +
"onclick=\"javascript: return SelectNode(this);\" " +
"href=\"{0}\" target=\"TopicContent\">{1}</a>\r\n" +
"</div>\r\n", HttpUtility.HtmlEncode(url), HttpUtility.HtmlEncode(title));
}
}
lcTOC.Text = sb.ToString();
}
</script>

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

View File

@ -0,0 +1,101 @@
<%@ Page Language="C#" EnableViewState="False" %>
<script runat="server">
//===============================================================================================================
// System : Sandcastle Help File Builder
// File : LoadIndexKeywords.aspx
// Author : Eric Woodruff (Eric@EWoodruff.us) from code by Ferdinand Prantl
// Updated : 04/09/2014
// Note : Copyright 2008-2014, Eric Woodruff, All rights reserved
// Compiler: Microsoft C#
//
// This file contains the code used to search for keywords within the help topics using the full-text index
// files created by the help file builder.
//
// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be
// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This
// notice, the author's name, and all copyright notices must remain intact in all applications, documentation,
// and source files.
//
// Date Who Comments
// ==============================================================================================================
// 04/01/2008 EFW Created the code
//===============================================================================================================
/// <summary>
/// Render the keyword index
/// </summary>
/// <param name="writer">The writer to which the results are written</param>
protected override void Render(HtmlTextWriter writer)
{
XmlDocument ki;
XmlNode root, node;
StringBuilder sb = new StringBuilder(10240);
int startIndex = 0, endIndex;
string url, target;
ki = new XmlDocument();
ki.Load(Server.MapPath("WebKI.xml"));
root = ki.SelectSingleNode("HelpKI");
if(Request.QueryString["StartIndex"] != null)
startIndex = Convert.ToInt32(Request.QueryString["StartIndex"]) * 128;
endIndex = startIndex + 128;
if(endIndex > root.ChildNodes.Count)
endIndex = root.ChildNodes.Count;
if(startIndex > 0)
{
sb.Append("<div class=\"IndexItem\">\r\n" +
"<span>&nbsp;</span><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return ChangeIndexPage(-1);\" " +
"href=\"#\"><b><< Previous page</b></a>\r\n</div>\r\n");
}
while(startIndex < endIndex)
{
node = root.ChildNodes[startIndex];
if(node.Attributes["Url"] == null)
{
url = "#";
target = String.Empty;
}
else
{
url = node.Attributes["Url"].Value;
target = " target=\"TopicContent\"";
}
sb.AppendFormat("<div class=\"IndexItem\">\r\n" +
"<span>&nbsp;</span><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return SelectIndexNode(this);\" " +
"href=\"{0}\"{1}>{2}</a>\r\n", HttpUtility.HtmlEncode(url), target,
HttpUtility.HtmlEncode(node.Attributes["Title"].Value));
if(node.ChildNodes.Count != 0)
foreach(XmlNode subNode in node.ChildNodes)
sb.AppendFormat("<div class=\"IndexSubItem\">\r\n" +
"<img src=\"Item.gif\"/><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return SelectIndexNode(this);\" " +
"href=\"{0}\" target=\"TopicContent\">{1}</a>\r\n</div>\r\n",
HttpUtility.HtmlEncode(subNode.Attributes["Url"].Value),
HttpUtility.HtmlEncode(subNode.Attributes["Title"].Value));
sb.Append("</div>\r\n");
startIndex++;
}
if(startIndex < root.ChildNodes.Count)
sb.Append("<div class=\"IndexItem\">\r\n" +
"<span>&nbsp;</span><a class=\"UnselectedNode\" " +
"onclick=\"javascript: return ChangeIndexPage(1);\" " +
"href=\"#\"><b>Next page >></b></a>\r\n</div>\r\n");
writer.Write(sb.ToString());
}
</script>

View File

@ -0,0 +1,68 @@
<?
// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
$ki = new DOMDocument();
$ki->load("WebKI.xml");
$xpath = new DOMXPath($ki);
$nodes = $xpath->query("/HelpKI/*");
$startIndexParam = $_GET["StartIndex"];
$startIndex = 0;
if (!empty($startIndexParam))
$startIndex = intval($startIndexParam) * 128;
$endIndex = $startIndex + 128;
if ($endIndex > $nodes->length)
$endIndex = $nodes->length;
if($startIndex > 0)
{
?>
<div class="IndexItem">
<span>&nbsp;</span><a class="UnselectedNode" onclick="javascript: return ChangeIndexPage(-1);" href="#"><b><< Previous page</b></a>
</div>
<?
}
while($startIndex < $endIndex)
{
$node = $nodes->item($startIndex);
$url = $node->getAttribute("Url");
$title = $node->getAttribute("Title");
$target = " target=\"TopicContent\"";
if (empty($url))
{
$url = "#";
$target = "";
}
?>
<div class="IndexItem">
<span>&nbsp;</span><a class="UnselectedNode" onclick="javascript: return SelectIndexNode(this);" href="<?= $url ?>"<?= $target ?>><?= $title ?></a>
<?
$subNodes = $xpath->query("./HelpKINode", $node);
foreach($subNodes as $subNode)
{
$subUrl = $subNode->getAttribute("Url");
$subTitle = $subNode->getAttribute("Title");
?>
<div class="IndexSubItem">
<img src="Item.gif"/><a class="UnselectedNode" onclick="javascript: return SelectIndexNode(this);" href="<?= $subUrl ?>" target="TopicContent"><?= $subTitle ?></a>
</div>
<?
}
?>
</div>
<?
$startIndex++;
}
if($startIndex < $nodes->length)
{
?>
<div class="IndexItem">
<span>&nbsp;</span><a class="UnselectedNode" onclick="javascript: return ChangeIndexPage(1);" href="#"><b>Next page >></b></a>
</div>
<?
}
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 974 B

View File

@ -0,0 +1,236 @@
<%@ Page Language="C#" EnableViewState="False" %>
<script runat="server">
//===============================================================================================================
// System : Sandcastle Help File Builder
// File : SearchHelp.aspx
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 04/09/2014
// Note : Copyright 2007-2014, Eric Woodruff, All rights reserved
// Compiler: Microsoft C#
//
// This file contains the code used to search for keywords within the help topics using the full-text index
// files created by the help file builder.
//
// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be
// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This
// notice, the author's name, and all copyright notices must remain intact in all applications, documentation,
// and source files.
//
// Date Who Comments
// ==============================================================================================================
// 06/24/2007 EFW Created the code
// 02/17/2012 EFW Switched to JSON serialization to support websites that use something other than ASP.NET
// such as PHP.
//===============================================================================================================
/// <summary>
/// This class is used to track the results and their rankings
/// </summary>
private class Ranking
{
public string Filename, PageTitle;
public int Rank;
public Ranking(string file, string title, int rank)
{
Filename = file;
PageTitle = title;
Rank = rank;
}
}
/// <summary>
/// Render the search results
/// </summary>
/// <param name="writer">The writer to which the results are written</param>
protected override void Render(HtmlTextWriter writer)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
string searchText, ftiFile;
char letter;
bool sortByTitle = false;
jss.MaxJsonLength = Int32.MaxValue;
// The keywords for which to search should be passed in the query string
searchText = this.Request.QueryString["Keywords"];
if(String.IsNullOrEmpty(searchText))
{
writer.Write("<b class=\"PaddedText\">Nothing found</b>");
return;
}
// An optional SortByTitle option can also be specified
if(this.Request.QueryString["SortByTitle"] != null)
sortByTitle = Convert.ToBoolean(this.Request.QueryString["SortByTitle"]);
List<string> keywords = this.ParseKeywords(searchText);
List<char> letters = new List<char>();
List<string> fileList;
Dictionary<string, List<long>> ftiWords, wordDictionary =
new Dictionary<string,List<long>>();
// Load the file index
using(StreamReader sr = new StreamReader(Server.MapPath("fti/FTI_Files.json")))
{
fileList = jss.Deserialize<List<string>>(sr.ReadToEnd());
}
// Load the required word index files
foreach(string word in keywords)
{
letter = word[0];
if(!letters.Contains(letter))
{
letters.Add(letter);
ftiFile = Server.MapPath(String.Format(CultureInfo.InvariantCulture,
"fti/FTI_{0}.json", (int)letter));
if(File.Exists(ftiFile))
{
using(StreamReader sr = new StreamReader(ftiFile))
{
ftiWords = jss.Deserialize<Dictionary<string, List<long>>>(sr.ReadToEnd());
}
foreach(string ftiWord in ftiWords.Keys)
wordDictionary.Add(ftiWord, ftiWords[ftiWord]);
}
}
}
// Perform the search and return the results as a block of HTML
writer.Write(this.Search(keywords, fileList, wordDictionary, sortByTitle));
}
/// <summary>
/// Split the search text up into keywords
/// </summary>
/// <param name="keywords">The keywords to parse</param>
/// <returns>A list containing the words for which to search</returns>
private List<string> ParseKeywords(string keywords)
{
List<string> keywordList = new List<string>();
string checkWord;
string[] words = Regex.Split(keywords, @"\W+");
foreach(string word in words)
{
checkWord = word.ToLower(CultureInfo.InvariantCulture);
if(checkWord.Length > 2 && !Char.IsDigit(checkWord[0]) &&
!keywordList.Contains(checkWord))
keywordList.Add(checkWord);
}
return keywordList;
}
/// <summary>
/// Search for the specified keywords and return the results as a block of
/// HTML.
/// </summary>
/// <param name="keywords">The keywords for which to search</param>
/// <param name="fileInfo">The file list</param>
/// <param name="wordDictionary">The dictionary used to find the words</param>
/// <param name="sortByTitle">True to sort by title, false to sort by
/// ranking</param>
/// <returns>A block of HTML representing the search results.</returns>
private string Search(List<string> keywords, List<string> fileInfo,
Dictionary<string, List<long>> wordDictionary, bool sortByTitle)
{
StringBuilder sb = new StringBuilder(10240);
Dictionary<string, List<long>> matches = new Dictionary<string, List<long>>();
List<long> occurrences;
List<int> matchingFileIndices = new List<int>(),
occurrenceIndices = new List<int>();
List<Ranking> rankings = new List<Ranking>();
string filename, title;
string[] fileIndex;
bool isFirst = true;
int idx, wordCount, matchCount;
foreach(string word in keywords)
{
if(!wordDictionary.TryGetValue(word, out occurrences))
return "<b class=\"PaddedText\">Nothing found</b>";
matches.Add(word, occurrences);
occurrenceIndices.Clear();
// Get a list of the file indices for this match
foreach(long entry in occurrences)
occurrenceIndices.Add((int)(entry >> 16));
if(isFirst)
{
isFirst = false;
matchingFileIndices.AddRange(occurrenceIndices);
}
else
{
// After the first match, remove files that do not appear for
// all found keywords.
for(idx = 0; idx < matchingFileIndices.Count; idx++)
if(!occurrenceIndices.Contains(matchingFileIndices[idx]))
{
matchingFileIndices.RemoveAt(idx);
idx--;
}
}
}
if(matchingFileIndices.Count == 0)
return "<b class=\"PaddedText\">Nothing found</b>";
// Rank the files based on the number of times the words occurs
foreach(int index in matchingFileIndices)
{
// Split out the title, filename, and word count
fileIndex = fileInfo[index].Split('\x0');
title = fileIndex[0];
filename = fileIndex[1];
wordCount = Convert.ToInt32(fileIndex[2]);
matchCount = 0;
foreach(string word in keywords)
{
occurrences = matches[word];
foreach(long entry in occurrences)
if((int)(entry >> 16) == index)
matchCount += (int)(entry & 0xFFFF);
}
rankings.Add(new Ranking(filename, title, matchCount * 1000 / wordCount));
}
// Sort by rank in descending order or by page title in ascending order
rankings.Sort(delegate (Ranking x, Ranking y)
{
if(!sortByTitle)
return y.Rank - x.Rank;
return x.PageTitle.CompareTo(y.PageTitle);
});
// Format the file list and return the results
foreach(Ranking r in rankings)
sb.AppendFormat("<div class=\"TreeItem\">\r\n<img src=\"Item.gif\"/>" +
"<a class=\"UnselectedNode\" target=\"TopicContent\" " +
"href=\"{0}\" onclick=\"javascript: SelectSearchNode(this);\">" +
"{1}</a>\r\n</div>\r\n", r.Filename, r.PageTitle);
// Return the keywords used as well in a hidden span
sb.AppendFormat("<span id=\"SearchKeywords\" style=\"display: none\">{0}</span>",
String.Join(" ", keywords.ToArray()));
return sb.ToString();
}
</script>

View File

@ -0,0 +1,169 @@
<?
// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
class Ranking
{
public $filename;
public $pageTitle;
public $rank;
function __construct($file, $title, $rank)
{
$this->filename = $file;
$this->pageTitle = $title;
$this->rank = $rank;
}
}
/// <summary>
/// Split the search text up into keywords
/// </summary>
/// <param name="keywords">The keywords to parse</param>
/// <returns>A list containing the words for which to search</returns>
function ParseKeywords($keywords)
{
$keywordList = array();
$words = preg_split("/[^\w]+/", $keywords);
foreach($words as $word)
{
$checkWord = strtolower($word);
$first = substr($checkWord, 0, 1);
if(strlen($checkWord) > 2 && !ctype_digit($first) && !in_array($checkWord, $keywordList))
{
array_push($keywordList, $checkWord);
}
}
return $keywordList;
}
/// <summary>
/// Search for the specified keywords and return the results as a block of
/// HTML.
/// </summary>
/// <param name="keywords">The keywords for which to search</param>
/// <param name="fileInfo">The file list</param>
/// <param name="wordDictionary">The dictionary used to find the words</param>
/// <param name="sortByTitle">True to sort by title, false to sort by
/// ranking</param>
/// <returns>A block of HTML representing the search results.</returns>
function Search($keywords, $fileInfo, $wordDictionary, $sortByTitle)
{
$sb = "";
$matches = array();
$matchingFileIndices = array();
$rankings = array();
$isFirst = true;
foreach($keywords as $word)
{
if (!array_key_exists($word, $wordDictionary))
{
return "<b class=\"PaddedText\">Nothing found</b>";
}
$occurrences = $wordDictionary[$word];
$matches[$word] = $occurrences;
$occurrenceIndices = array();
// Get a list of the file indices for this match
foreach($occurrences as $entry)
array_push($occurrenceIndices, ($entry >> 16));
if($isFirst)
{
$isFirst = false;
foreach($occurrenceIndices as $i)
{
array_push($matchingFileIndices, $i);
}
}
else
{
// After the first match, remove files that do not appear for
// all found keywords.
for($idx = 0; $idx < count($matchingFileIndices); $idx++)
{
if (!in_array($matchingFileIndices[$idx], $occurrenceIndices))
{
array_splice($matchingFileIndices, $idx, 1);
$idx--;
}
}
}
}
if(count($matchingFileIndices) == 0)
{
return "<b class=\"PaddedText\">Nothing found</b>";
}
// Rank the files based on the number of times the words occurs
foreach($matchingFileIndices as $index)
{
// Split out the title, filename, and word count
$fileIndex = explode("\x00", $fileInfo[$index]);
$title = $fileIndex[0];
$filename = $fileIndex[1];
$wordCount = intval($fileIndex[2]);
$matchCount = 0;
foreach($keywords as $words)
{
$occurrences = $matches[$word];
foreach($occurrences as $entry)
{
if(($entry >> 16) == $index)
$matchCount += $entry & 0xFFFF;
}
}
$r = new Ranking($filename, $title, $matchCount * 1000 / $wordCount);
array_push($rankings, $r);
}
// Sort by rank in descending order or by page title in ascending order
if($sortByTitle)
{
usort($rankings, "cmprankbytitle");
}
else
{
usort($rankings, "cmprank");
}
// Format the file list and return the results
foreach($rankings as $r)
{
$f = $r->filename;
$t = $r->pageTitle;
$sb .= "<div class=\"TreeItem\">\r\n<img src=\"Item.gif\"/>" .
"<a class=\"UnselectedNode\" target=\"TopicContent\" " .
"href=\"$f\" onclick=\"javascript: SelectSearchNode(this);\">" .
"$t</a>\r\n</div>\r\n";
}
// Return the keywords used as well in a hidden span
$k = implode(" ", $keywords);
$sb .= "<span id=\"SearchKeywords\" style=\"display: none\">$k</span>";
return $sb;
}
function cmprank($x, $y)
{
return $y->rank - $x->rank;
}
function cmprankbytitle($x, $y)
{
return strcmp($x->pageTitle, $y->pageTitle);
}
?>

View File

@ -0,0 +1,58 @@
<?
// Contributed to the Sandcastle Help File Builder project by Thomas Levesque
include("SearchHelp.inc.php");
$sortByTitle = false;
// The keywords for which to search should be passed in the query string
$searchText = $_GET["Keywords"];
if(empty($searchText))
{
?>
<b class=\"PaddedText\">Nothing found</b>
<?
return;
}
// An optional SortByTitle option can also be specified
if($_GET["SortByTitle"] == "true")
$sortByTitle = true;
$keywords = ParseKeywords($searchText);
$letters = array();
$wordDictionary = array();
// Load the file index
$json = file_get_contents("fti/FTI_Files.json");
$fileList = json_decode($json);
// Load the required word index files
foreach($keywords as $word)
{
$letter = substr($word, 0, 1);
if(!in_array($letter, $letters))
{
array_push($letters, $letter);
$ascii = ord($letter);
$ftiFile = "fti/FTI_$ascii.json";
if(file_exists($ftiFile))
{
$json = file_get_contents($ftiFile);
$ftiWords = json_decode($json, true);
foreach($ftiWords as $ftiWord => $val)
{
$wordDictionary[$ftiWord] = $val;
}
}
}
}
// Perform the search and return the results as a block of HTML
$results = Search($keywords, $fileList, $wordDictionary, $sortByTitle);
echo $results;
?>

Binary file not shown.

After

Width:  |  Height:  |  Size: 880 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,141 @@
/* File : TOC.css
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 01/26/2014
//
// Style sheet for the table of contents
*/
* {
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
}
body {
font-family: Verdana, Arial, sans-serif;
font-size: 9pt;
background-color: #6699CC;
color: White;
overflow: hidden;
}
input {
font-size: 8.5pt;
}
img {
border: 0;
margin-left: 5px;
margin-right: 2px;
}
img.TreeNodeImg {
cursor: pointer;
}
img.TOCLink {
cursor: pointer;
margin-left: 0;
margin-right: 0;
}
a.SelectedNode, a.UnselectedNode {
color: black;
text-decoration: none;
padding: 1px 3px 1px 3px;
white-space: nowrap;
}
a.SelectedNode {
background-color: #ffffff;
border: solid 1px #999999;
padding: 0px 2px 0px 2px;
}
a.UnselectedNode:hover, a.SelectedNode:hover {
background-color: #cccccc;
border: solid 1px #999999;
padding: 0px 2px 0px 2px;
}
.Visible {
display: block;
margin-left: 14px;
}
.Hidden {
display: none;
}
.Tree {
background-color: #ffffff;
color: Black;
width: 300px;
overflow: auto;
}
.TreeNode, .TreeItem {
white-space: nowrap;
margin: 2px 2px 2px 2px;
}
.TOCDiv {
position: relative;
float: left;
width: 300px;
height: 100%;
}
.TOCSizer {
clear: none;
float: left;
width: 10px;
height: 100%;
background-color: #6699CC;
background-image: url("Splitter.gif");
background-position: center center;
background-repeat: no-repeat;
position: relative;
cursor: w-resize;
}
.TopicContent {
position: relative;
float: right;
background-color: white;
height: 100%;
}
.SearchOpts {
padding: 5px 5px 0px 5px;
background-color: #d3d3d3;
color: black;
width: 300px;
}
.NavOpts {
padding: 5px 5px 0px 5px;
background-color: #d3d3d3;
color: black;
width: 300px;
}
.IndexOpts {
padding: 5px 5px 0px 5px;
background-color: #d3d3d3;
color: black;
width: 300px;
}
.IndexItem {
white-space: nowrap;
margin: 2px 2px 2px 2px;
}
.IndexSubItem {
white-space: nowrap;
margin: 2px 2px 2px 12px;
}
.PaddedText {
margin: 10px 10px 10px 10px;
}

View File

@ -0,0 +1,907 @@
//===============================================================================================================
// System : Sandcastle Help File Builder
// File : TOC.js
// Author : Eric Woodruff (Eric@EWoodruff.us)
// Updated : 03/26/2014
// Note : Copyright 2006-2014, Eric Woodruff, All rights reserved
// Compiler: JavaScript
//
// This file contains the methods necessary to implement a simple tree view for the table of content with a
// resizable splitter and Ajax support to load tree nodes on demand. It also contains the script necessary to do
// full-text searches.
//
// This code is published under the Microsoft Public License (Ms-PL). A copy of the license should be
// distributed with the code. It can also be found at the project website: https://GitHub.com/EWSoftware/SHFB. This
// notice, the author's name, and all copyright notices must remain intact in all applications, documentation,
// and source files.
//
// Version Date Who Comments
// ==============================================================================================================
// 1.3.0.0 09/12/2006 EFW Created the code
// 1.4.0.2 06/15/2007 EFW Reworked to get rid of frame set and to add support for Ajax to load tree nodes on
// demand.
// 1.5.0.0 06/24/2007 EFW Added full-text search capabilities
// 1.6.0.7 04/01/2008 EFW Merged changes from Ferdinand Prantl to add a website keyword index. Added support
// for "topic" query string option.
// 1.9.4.0 02/21/2012 EFW Merged code from Thomas Levesque to show direct link and support other page types
// like PHP.
// 1.9.5.0 07/25/2012 EFW Made changes to support IE 10.
// 1.9.8.0 07/26/2013 EFW Merged changes from Dave Dansey to sync to TOC when the topic URL parameter is used
//===============================================================================================================
// IE and Chrome flags
var isIE = (navigator.userAgent.indexOf("MSIE") >= 0);
var isIE10OrLater = /MSIE 1\d\./.test(navigator.userAgent);
var isChrome = (navigator.userAgent.indexOf("Chrome") >= 0);
// Page extension
var pageExtension = ".aspx";
// Minimum width of the TOC div
var minWidth = 100;
// Elements and sizing info
var divTOC, divSizer, topicContent, divNavOpts, divSearchOpts, divSearchResults, divIndexOpts, divIndexResults,
divTree, docBody, maxWidth, offset, txtSearchText, chkSortByTitle;
// Last node selected
var lastNode, lastSearchNode, lastIndexNode;
// Last page with keyword index
var currentIndexPage = 0;
// XML Doc of the TOC
var xmlTOCDoc
//============================================================================
// Initialize the tree view and resize the content. Pass it the page extension to use (i.e. ".aspx")
// for loading TOC element, index keywords, searching, etc.
function Initialize(extension)
{
docBody = document.getElementsByTagName("body")[0];
divTOC = document.getElementById("TOCDiv");
divSizer = document.getElementById("TOCSizer");
topicContent = document.getElementById("TopicContent");
divNavOpts = document.getElementById("divNavOpts");
divSearchOpts = document.getElementById("divSearchOpts");
divSearchResults = document.getElementById("divSearchResults");
divIndexOpts = document.getElementById("divIndexOpts");
divIndexResults = document.getElementById("divIndexResults");
divTree = document.getElementById("divTree");
txtSearchText = document.getElementById("txtSearchText");
chkSortByTitle = document.getElementById("chkSortByTitle");
// Set the page extension if specified
if(typeof(extension) != "undefined" && extension != "")
pageExtension = extension;
// The sizes are bit off in FireFox
if(!isIE)
divNavOpts.style.width = divSearchOpts.style.width = divIndexOpts.style.width = 292;
ResizeTree();
SyncTOC();
topicContent.onload = SyncTOC;
// Use an alternate default page if a topic is specified in the query string
var queryString = document.location.search;
if(queryString != "")
{
var idx, options = queryString.split(/[\?\=\&]/);
for(idx = 0; idx < options.length; idx++)
if(options[idx] == "topic" && idx + 1 < options.length)
{
// Don't allow javascript, or references outside the current site
if(options[idx + 1].match(/^\w[\w\/.-]*$/))
topicContent.src = options[idx + 1];
break;
}
}
}
//============================================================================
// Navigation and expand/collapse code
// Synchronize the table of content with the selected page if possible
function SyncTOC()
{
var idx, anchor, base, href, url, anchors, treeNode, saveNode;
base = window.location.href;
base = base.substr(0, base.lastIndexOf("/") + 1);
if(base.substr(0, 5) == "file:" && base.substr(0, 8) != "file:///")
base = base.replace("file://", "file:///");
url = GetCurrentUrl();
if(url == "")
return false;
if(url.substr(0, 5) == "file:" && url.substr(0, 8) != "file:///")
url = url.replace("file://", "file:///");
while(true)
{
anchors = divTree.getElementsByTagName("A");
anchor = null;
for(idx = 0; idx < anchors.length; idx++)
{
href = anchors[idx].href;
if(href.substring(0, 7) != 'http://' && href.substring(0, 8) != 'https://' &&
href.substring(0, 7) != 'file://')
href = base + href;
if(href == url)
{
anchor = anchors[idx];
break;
}
}
if(anchor == null)
{
// If it contains a "#", strip anything after that and try again
if(url.indexOf("#") != -1)
{
url = url.substr(0, url.indexOf("#"));
continue;
}
LoadTOC(url);
return;
}
break;
}
// If found, select it and find the parent tree node
SelectNode(anchor);
saveNode = anchor;
lastNode = null;
while(anchor != null)
{
if(anchor.className == "TreeNode")
{
treeNode = anchor;
break;
}
anchor = anchor.parentNode;
}
// Expand it and all of its parents
while(anchor != null)
{
Expand(anchor);
anchor = anchor.parentNode;
while(anchor != null)
{
if(anchor.className == "TreeNode")
break;
anchor = anchor.parentNode;
}
}
lastNode = saveNode;
// Scroll the node into view
var windowTop = lastNode.offsetTop - divTree.offsetTop - divTree.scrollTop;
var windowBottom = divTree.clientHeight - windowTop - lastNode.offsetHeight;
if(windowTop < 0)
divTree.scrollTop += windowTop - 30;
else
if(windowBottom < 0)
divTree.scrollTop -= windowBottom - 30;
}
// Search an array to see if it contains the given object
function Contains(a, obj)
{
for(var i = 0; i < a.length; i++)
if(a[i] === obj)
return true;
return false;
}
// Get the parent TOC IDs from the TOC XML file
function GetParentTOCIds(target)
{
if(xmlTOCDoc == null)
{
// Load the TOC XML
try
{
var xmlhttp = GetXmlHttpRequest();
xmlhttp.open("GET", "WebTOC.xml", false);
xmlhttp.send();
xmlTOCDoc = xmlhttp.responseXML;
}
catch(e)
{
// alert(e.message);
}
if(xmlTOCDoc == null)
return new Array();
}
// Get all TOC nodes
x = xmlTOCDoc.getElementsByTagName("HelpTOCNode");
// Iterate nodes looking for the target
var targetNode = null;
for(i = 0; i < x.length; i++)
{
var id = x[i].getAttribute('Url');
if(id != null)
{
id = id.substring(id.lastIndexOf("/") + 1, id.length - (id.length - id.lastIndexOf(".")));
if(id == target)
{
targetNode = x[i];
break;
}
}
}
// Build an array of parent ids of the target node
var ids = new Array();
if(targetNode != null)
{
var index = 0;
while(targetNode.parentNode.tagName == "HelpTOCNode")
{
targetNode = targetNode.parentNode;
ids[index] = targetNode.getAttribute('Id');
index = index + 1;
}
}
return ids
}
// Load the TOC and expand all parent nodes down to the given entry
function LoadTOC(url)
{
// Extract the target id from the url
var target = url.substring(url.lastIndexOf("/") + 1, url.length - (url.length - url.lastIndexOf(".")));
// Get an array of parent id's
var idList = GetParentTOCIds(target);
var divIdx, childIdx, img, divs = document.getElementsByTagName("DIV");
var childNodes, child, div;
// Loop through all DIV tags, looking for the next one to lazy-load
for(divIdx = 0; divIdx < divs.length; divIdx++)
if(divs[divIdx].className == "Hidden" || divs[divIdx].className == "Visible")
{
childNodes = divs[divIdx].parentNode.childNodes;
for(childIdx = 0; childIdx < childNodes.length; childIdx++)
{
child = childNodes[childIdx];
if(child.className == "TreeNodeImg")
img = child;
if(child.className == "Hidden" || child.className == "Visible")
{
div = child;
break;
}
}
if(div.className == "Hidden" && Contains(idList,div.id))
{
div.className = "Visible";
img.src = "Expanded.gif";
if(div.innerHTML == "")
FillNodeAndTrySyncTOC(div)
}
}
}
// Lazy load the child TOC nodes and re-try to SyncTOC afterwards (if the TOC still can't be synced the process
// will run again to expand the next parent down).
function FillNodeAndTrySyncTOC(div)
{
var xmlHttp = GetXmlHttpRequest(), now = new Date();
if(xmlHttp == null)
{
div.innerHTML = "<b>XML HTTP request not supported!</b>";
return;
}
div.innerHTML = "Loading...";
// Add a unique hash to ensure it doesn't use cached results
xmlHttp.open("GET", "FillNode" + pageExtension + "?Id=" + div.id + "&hash=" + now.getTime(), true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
div.innerHTML = xmlHttp.responseText;
SyncTOC();
}
}
xmlHttp.send(null)
}
// Get the currently loaded URL from the IFRAME
function GetCurrentUrl()
{
var base, url = "";
try
{
url = window.frames["TopicContent"].document.URL.replace(/\\/g, "/");
}
catch(e)
{
// If this happens the user probably navigated to another frame set that didn't make itself the topmost
// frame set and we don't have control of the other frame anymore. In that case, just reload our index
// page.
base = window.location.href;
base = base.substr(0, base.lastIndexOf("/") + 1);
// Chrome is too secure and won't let you access frame URLs when running from the file system unless
// you run Chrome with the "--disable-web-security" command line option.
if(isChrome && base.substr(0, 5) == "file:")
{
alert("Chrome security prevents access to file-based frame URLs. As such, the TOC will not work " +
"with index.html. Either run this website on a web server, run Chrome with the " +
"'--disable-web-security' command line option, or use FireFox or Internet Explorer.");
return "";
}
if(base.substr(0, 5) == "file:" && base.substr(0, 8) != "file:///")
base = base.replace("file://", "file:///");
// Use lowercase on name for case-sensitive servers
if(base.substr(0, 5) == "file:")
top.location.href = base + "index.html";
else
top.location.href = base + "index" + pageExtension;
}
return url;
}
// Expand or collapse all nodes
function ExpandOrCollapseAll(expandNodes)
{
var divIdx, childIdx, img, divs = document.getElementsByTagName("DIV");
var childNodes, child, div, link, img;
for(divIdx = 0; divIdx < divs.length; divIdx++)
if(divs[divIdx].className == "Hidden" || divs[divIdx].className == "Visible")
{
childNodes = divs[divIdx].parentNode.childNodes;
for(childIdx = 0; childIdx < childNodes.length; childIdx++)
{
child = childNodes[childIdx];
if(child.className == "TreeNodeImg")
img = child;
if(child.className == "Hidden" || child.className == "Visible")
{
div = child;
break;
}
}
if(div.className == "Visible" && !expandNodes)
{
div.className = "Hidden";
img.src = "Collapsed.gif";
}
else
if(div.className == "Hidden" && expandNodes)
{
div.className = "Visible";
img.src = "Expanded.gif";
if(div.innerHTML == "")
FillNode(div, true)
}
}
}
// Toggle the state of the specified node
function Toggle(node)
{
var i, childNodes, child, div, link;
childNodes = node.parentNode.childNodes;
for(i = 0; i < childNodes.length; i++)
{
child = childNodes[i];
if(child.className == "Hidden" || child.className == "Visible")
{
div = child;
break;
}
}
if(div.className == "Visible")
{
div.className = "Hidden";
node.src = "Collapsed.gif";
}
else
{
div.className = "Visible";
node.src = "Expanded.gif";
if(div.innerHTML == "")
FillNode(div, false)
}
}
// Expand the selected node
function Expand(node)
{
var i, childNodes, child, div, img;
// If not valid, don't bother
if(GetCurrentUrl() == "")
return false;
if(node.tagName == "A")
childNodes = node.parentNode.childNodes;
else
childNodes = node.childNodes;
for(i = 0; i < childNodes.length; i++)
{
child = childNodes[i];
if(child.className == "TreeNodeImg")
img = child;
if(child.className == "Hidden" || child.className == "Visible")
{
div = child;
break;
}
}
if(lastNode != null)
lastNode.className = "UnselectedNode";
div.className = "Visible";
img.src = "Expanded.gif";
if(node.tagName == "A")
{
node.className = "SelectedNode";
lastNode = node;
}
if(div.innerHTML == "")
FillNode(div, false)
return true;
}
// Set the style of the specified node to "selected"
function SelectNode(node)
{
// If not valid, don't bother
if(GetCurrentUrl() == "")
return false;
if(lastNode != null)
lastNode.className = "UnselectedNode";
node.className = "SelectedNode";
lastNode = node;
return true;
}
//============================================================================
// Ajax-related code used to fill the tree nodes on demand
function GetXmlHttpRequest()
{
var xmlHttp = null;
// If IE7, Mozilla, Safari, etc., use the native object. Otherwise, use the ActiveX control for IE5.x and IE6.
if(window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
else
if(window.ActiveXObject)
xmlHttp = new ActiveXObject("MSXML2.XMLHTTP.3.0");
return xmlHttp;
}
// Perform an AJAX-style request for the contents of a node and put the contents into the empty div
function FillNode(div, expandChildren)
{
var xmlHttp = GetXmlHttpRequest(), now = new Date();
if(xmlHttp == null)
{
div.innerHTML = "<b>XML HTTP request not supported!</b>";
return;
}
div.innerHTML = "Loading...";
// Add a unique hash to ensure it doesn't use cached results
xmlHttp.open("GET", "FillNode" + pageExtension + "?Id=" + div.id + "&hash=" + now.getTime(), true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
div.innerHTML = xmlHttp.responseText;
if(expandChildren)
ExpandOrCollapseAll(true);
}
}
xmlHttp.send(null)
}
//============================================================================
// Resizing code
// Resize the tree div so that it fills the document body
function ResizeTree()
{
var y, newHeight;
if(self.innerHeight) // All but IE
y = self.innerHeight;
else // IE - Strict
if(document.documentElement && document.documentElement.clientHeight)
y = document.documentElement.clientHeight;
else // Everything else
if(document.body)
y = document.body.clientHeight;
newHeight = y - parseInt(divNavOpts.style.height, 10) - 6;
if(newHeight < 50)
newHeight = 50;
divTree.style.height = newHeight;
newHeight = y - parseInt(divSearchOpts.style.height, 10) - 6;
if(newHeight < 100)
newHeight = 100;
divSearchResults.style.height = newHeight;
newHeight = y - parseInt(divIndexOpts.style.height, 10) - 6;
if(newHeight < 25)
newHeight = 25;
divIndexResults.style.height = newHeight;
// Resize the content div
ResizeContent();
}
// Resize the content div
function ResizeContent()
{
// IE 10 sizes the frame like FireFox and Chrome
if(isIE && !isIE10OrLater)
maxWidth = docBody.clientWidth - 1;
else
maxWidth = docBody.clientWidth - 4;
topicContent.style.width = maxWidth - (divSizer.offsetLeft + divSizer.offsetWidth);
maxWidth -= minWidth;
}
// This is called to prepare for dragging the sizer div
function OnMouseDown(event)
{
var x;
// Make sure the splitter is at the top of the z-index
divSizer.style.zIndex = 5000;
// The content is in an IFRAME which steals mouse events so hide it while resizing
topicContent.style.display = "none";
if(isIE)
x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
else
x = event.clientX + window.scrollX;
// Save starting offset
offset = parseInt(divSizer.style.left, 10);
if(isNaN(offset))
offset = 0;
offset -= x;
if(isIE)
{
document.attachEvent("onmousemove", OnMouseMove);
document.attachEvent("onmouseup", OnMouseUp);
window.event.cancelBubble = true;
window.event.returnValue = false;
}
else
{
document.addEventListener("mousemove", OnMouseMove, true);
document.addEventListener("mouseup", OnMouseUp, true);
event.preventDefault();
}
}
// Resize the TOC and content divs as the sizer is dragged
function OnMouseMove(event)
{
var x, pos;
// Get cursor position with respect to the page
if(isIE)
x = window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft;
else
x = event.clientX + window.scrollX;
left = offset + x;
// Adjusts the width of the TOC divs
pos = (event.clientX > maxWidth) ? maxWidth : (event.clientX < minWidth) ? minWidth : event.clientX;
divTOC.style.width = divSearchResults.style.width = divIndexResults.style.width = divTree.style.width = pos;
if(!isIE)
pos -= 8;
divNavOpts.style.width = divSearchOpts.style.width = divIndexOpts.style.width = pos;
// Resize the content div to fit in the remaining space
ResizeContent();
}
// Finish the drag operation when the mouse button is released
function OnMouseUp(event)
{
if(isIE)
{
document.detachEvent("onmousemove", OnMouseMove);
document.detachEvent("onmouseup", OnMouseUp);
}
else
{
document.removeEventListener("mousemove", OnMouseMove, true);
document.removeEventListener("mouseup", OnMouseUp, true);
}
// Show the content div again
topicContent.style.display = "inline";
}
//============================================================================
// Search code
function ShowHideSearch(show)
{
if(show)
{
divNavOpts.style.display = divTree.style.display = "none";
divSearchOpts.style.display = divSearchResults.style.display = "";
}
else
{
divSearchOpts.style.display = divSearchResults.style.display = "none";
divNavOpts.style.display = divTree.style.display = "";
}
}
// When enter is hit in the search text box, do the search
function OnSearchTextKeyPress(evt)
{
if(evt.keyCode == 13)
{
PerformSearch();
return false;
}
return true;
}
// Perform a keyword search
function PerformSearch()
{
var xmlHttp = GetXmlHttpRequest(), now = new Date();
if(xmlHttp == null)
{
divSearchResults.innerHTML = "<b>XML HTTP request not supported!</b>";
return;
}
divSearchResults.innerHTML = "<span class=\"PaddedText\">Searching...</span>";
// Add a unique hash to ensure it doesn't use cached results
xmlHttp.open("GET", "SearchHelp" + pageExtension + "?Keywords=" + txtSearchText.value +
"&SortByTitle=" + (chkSortByTitle.checked ? "true" : "false") +
"&hash=" + now.getTime(), true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
divSearchResults.innerHTML = xmlHttp.responseText;
lastSearchNode = divSearchResults.childNodes[0].childNodes[1];
while(lastSearchNode != null && lastSearchNode.tagName != "A")
lastSearchNode = lastSearchNode.nextSibling;
if(lastSearchNode != null)
{
SelectSearchNode(lastSearchNode);
topicContent.src = lastSearchNode.href;
}
}
}
xmlHttp.send(null)
}
// Set the style of the specified search result node to "selected"
function SelectSearchNode(node)
{
if(lastSearchNode != null)
lastSearchNode.className = "UnselectedNode";
node.className = "SelectedNode";
lastSearchNode = node;
return true;
}
//============================================================================
// KeyWordIndex code
function ShowHideIndex(show)
{
if(show)
{
PopulateIndex(currentIndexPage);
divNavOpts.style.display = divTree.style.display = "none";
divIndexOpts.style.display = divIndexResults.style.display = "";
}
else
{
divIndexOpts.style.display = divIndexResults.style.display = "none";
divNavOpts.style.display = divTree.style.display = "";
}
}
// Populate keyword index
function PopulateIndex(startIndex)
{
var xmlHttp = GetXmlHttpRequest(), now = new Date();
var firstNode;
if(xmlHttp == null)
{
divIndexResults.innerHTML = "<b>XML HTTP request not supported!</b>";
return;
}
divIndexResults.innerHTML = "<span class=\"PaddedText\">Loading keyword index...</span>";
// Add a unique hash to ensure it doesn't use cached results
xmlHttp.open("GET", "LoadIndexKeywords" + pageExtension + "?StartIndex=" + startIndex +
"&hash=" + now.getTime(), true);
xmlHttp.onreadystatechange = function()
{
if(xmlHttp.readyState == 4)
{
divIndexResults.innerHTML = xmlHttp.responseText;
if(startIndex > 0)
{
firstNode = divIndexResults.childNodes[1];
if(firstNode != null && !firstNode.innerHTML)
firstNode = divIndexResults.childNodes[2];
}
else
firstNode = divIndexResults.childNodes[0];
if(firstNode != null)
lastIndexNode = firstNode.childNodes[0];
while(lastIndexNode != null && lastIndexNode.tagName != "A")
lastIndexNode = lastIndexNode.nextSibling;
if(lastIndexNode != null)
{
SelectIndexNode(lastIndexNode);
topicContent.src = lastIndexNode.href;
}
currentIndexPage = startIndex;
}
}
xmlHttp.send(null)
}
// Set the style of the specified keyword index node to "selected"
function SelectIndexNode(node)
{
if(lastIndexNode != null)
lastIndexNode.className = "UnselectedNode";
node.className = "SelectedNode";
lastIndexNode = node;
return true;
}
// Changes the current page with keyword index forward or backward
function ChangeIndexPage(direction)
{
PopulateIndex(currentIndexPage + direction);
return false;
}
// Show a direct link to the currently displayed topic
function ShowDirectLink()
{
var url = GetCurrentUrl();
var base = window.location.href;
if(base.indexOf("?") > 0)
base = base.substr(0, base.indexOf("?") + 1);
base = base.substr(0, base.lastIndexOf("/") + 1);
var relative = url.substr(base.length);
// Using prompt lets the user copy it from the text box
prompt("Direct link", base + "?topic=" + relative);
}

View File

@ -0,0 +1,31 @@
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
<compilation debug="false">
<assemblies>
<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
</compilation>
<pages>
<namespaces>
<add namespace="System"/>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Globalization"/>
<add namespace="System.IO"/>
<add namespace="System.Text"/>
<add namespace="System.Text.RegularExpressions"/>
<add namespace="System.Web"/>
<add namespace="System.Web.Script.Serialization"/>
<add namespace="System.Web.UI"/>
<add namespace="System.Xml"/>
<add namespace="System.Xml.Serialization" />
<add namespace="System.Xml.XPath"/>
</namespaces>
</pages>
</system.web>
<appSettings>
<!-- Increase this value if you get an "Operation is not valid due to the current state of the object" error
when using the search page. -->
<add key="aspnet:MaxJsonDeserializerMembers" value="100000" />
</appSettings>
</configuration>

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>{@HtmlEncHelpTitle} - Table of Content</title>
<link rel="stylesheet" href="TOC.css">
<link rel="shortcut icon" href="favicon.ico"/>
<script type="text/javascript" src="TOC.js"></script>
</head>
<body onload="javascript: Initialize('.aspx');" onresize="javascript: ResizeTree();">
<form id="IndexForm" runat="server">
<div id="TOCDiv" class="TOCDiv">
<div id="divSearchOpts" class="SearchOpts" style="height: 100px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideSearch(false);"
src="CloseSearch.png" height="16" width="16" alt="Hide search" style="float: right;"/>
Keyword(s) for which to search:
<input id="txtSearchText" type="text" style="width: 100%;"
onkeypress="javascript: return OnSearchTextKeyPress(event);" /><br />
<input id="chkSortByTitle" type="checkbox" /><label for="chkSortByTitle">&nbsp;Sort results by title</label><br />
<input type="button" value="Search" onclick="javascript: return PerformSearch();" />
</div>
<div id="divIndexOpts" class="IndexOpts" style="height: 25px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideIndex(false);"
src="CloseSearch.png" height="17" width="17" alt="Hide index" style="float: right;"/>
Keyword Index
</div>
<div id="divNavOpts" class="NavOpts" style="height: 20px;">
<img class="TOCLink" onclick="javascript: SyncTOC();" src="SyncTOC.gif"
height="16" width="16" alt="Sync to TOC"/>
<img class="TOCLink" onclick="javascript: ExpandOrCollapseAll(false);"
src="CollapseAll.png" height="16" width="16" alt="Collapse all" />
<a href="#" title="Click to obtain a direct link to the displayed topic"
style="margin-left: 10px; vertical-align: top;"
onclick="javascript: ShowDirectLink();">Direct Link</a>
</div>
<div class="Tree" id="divSearchResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divIndexResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divTree" onselectstart="javascript: return false;">
{@HtmlTOC}
</div>
</div>
<div id="TOCSizer" class="TOCSizer" onmousedown="OnMouseDown(event)" onselectstart="javascript: return false;"></div>
<iframe id="TopicContent" name="TopicContent" class="TopicContent" src="{@WebDefaultTopic}">
This page uses an IFRAME but your browser does not support it.
</iframe>
</form>
</body>
</html>

View File

@ -0,0 +1,110 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>{@HtmlEncHelpTitle} - Table of Content</title>
<link rel="stylesheet" href="TOC.css">
<link rel="shortcut icon" href="favicon.ico"/>
<script type="text/javascript" src="TOC.js"></script>
</head>
<body onload="javascript: Initialize('.php');" onresize="javascript: ResizeTree();">
<form id="IndexForm" runat="server">
<div id="TOCDiv" class="TOCDiv">
<div id="divSearchOpts" class="SearchOpts" style="height: 100px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideSearch(false);"
src="CloseSearch.png" height="17" width="17" alt="Hide search" style="float: right;"/>
Keyword(s) for which to search:
<input id="txtSearchText" type="text" style="width: 100%;"
onkeypress="javascript: return OnSearchTextKeyPress(event);" /><br />
<input id="chkSortByTitle" type="checkbox" /><label for="chkSortByTitle">&nbsp;Sort results by title</label><br />
<input type="button" value="Search" onclick="javascript: return PerformSearch();" />
</div>
<div id="divIndexOpts" class="IndexOpts" style="height: 25px; display: none;">
<img class="TOCLink" onclick="javascript: ShowHideIndex(false);"
src="CloseSearch.png" height="17" width="17" alt="Hide index" style="float: right;"/>
Keyword Index
</div>
<div id="divNavOpts" class="NavOpts" style="height: 20px;">
<img class="TOCLink" onclick="javascript: SyncTOC();" src="SyncTOC.gif"
height="16" width="16" alt="Sync to TOC"/>
<img class="TOCLink" onclick="javascript: ExpandOrCollapseAll(false);"
src="CollapseAll.png" height="16" width="16" alt="Collapse all" />
<img class="TOCLink" onclick="javascript: ShowHideIndex(true);"
src="Index.gif" height="16" width="16" alt="Index" />
<img class="TOCLink" onclick="javascript: ShowHideSearch(true);"
src="Search.gif" height="16" width="16" alt="Search" />
<a href="#" title="Click to obtain a direct link to the displayed topic"
style="margin-left: 10px; vertical-align: top;"
onclick="javascript: ShowDirectLink();">Direct Link</a>
</div>
<div class="Tree" id="divSearchResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divIndexResults" style="display: none;"
onselectstart="javascript: return false;">
</div>
<div class="Tree" id="divTree" onselectstart="javascript: return false;">
<?
$toc = new DOMDocument();
$toc->load('WebTOC.xml');
$xpath = new DOMXPath($toc);
$nodes = $xpath->query("/HelpTOC/*");
foreach($nodes as $node)
{
$id = $node->getAttribute("Id");
$url = $node->getAttribute("Url");
$title = $node->getAttribute("Title");
if (empty($url))
{
$url = "#";
$target = "";
}
else
{
$target = " target=\"TopicContent\"";
}
if ($node->hasChildNodes())
{
?>
<div class="TreeNode">
<img class="TreeNodeImg" onclick="javascript: Toggle(this);" src="Collapsed.gif"/>
<a class="UnselectedNode" onclick="javascript: Expand(this);" href="<?= $url ?>"<?= $target ?>><?= $title ?></a>
<div id="<?= $id ?>" class="Hidden"></div>
</div>
<?
}
else
{
?>
<div class="TreeItem">
<img src="Item.gif"/>
<a class="UnselectedNode" onclick="javascript: SelectNode(this);" href="<?= $url ?>"<?= $target ?>><?= $title ?></a>
</div>
<?
}
}
?>
</div>
</div>
<div id="TOCSizer" class="TOCSizer" onmousedown="OnMouseDown(event)" onselectstart="javascript: return false;"></div>
<iframe id="TopicContent" name="TopicContent" class="TopicContent" src="{@WebDefaultTopic}">
This page uses an IFRAME but your browser does not support it.
</iframe>
</form>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,432 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration verbosity="{@BuildAssemblerVerbosity}">
<dduetools>
<builder>
<componentLocations>
{@ComponentLocations}
</componentLocations>
<components>
<component id="Switch Component">
<switch value="string(/document/@type)" />
<case value="MAML">
<!-- Create skeleton document -->
<component id="Copy From File Component">
<data file="{@PresentationPath}Transforms\SkeletonConceptual.xml" />
<copy source="/document/*" target="/document" />
</component>
<!-- Copy in the topic content-->
<component id="Copy From Files Component">
<copy base=".\ddueXml" file="concat($key,'.xml')" source="/topic" target="/document" />
</component>
<!-- Resolve tokens -->
<component id="Shared Content Component">
<context prefix="ddue" name="http://ddue.schemas.microsoft.com/authoring/2003/5" />
<content file="HelpFileBuilderTokens.tokens" />
{@TokenFiles}
<replace elements="/*//ddue:token" item="string(.)" />
</component>
<!-- Copy in metadata attributes -->
<component id="Copy From Index Component">
<index name="metadata" value="/metadata/topic" key="@id">
<data files="_ContentMetadata_.xml" />
</index>
<copy name="metadata" source="*" target="/document/metadata" />
</component>
<!-- Resolve code snippets -->
<component id="Example Component">
{@CodeSnippetsFiles}
<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>
<colors language="FSharp">
<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" />
</colors>
</component>
<!-- Code block component configuration. This must appear before the TransformComponent. -->
<component id="Code Block Component">
<!-- Base path for relative filenames in source attributes (optional) -->
<basePath value="{@HtmlEncProjectFolder}" />
<!-- Base output paths for the files (required). These should match the parent folder of the output
path of the HTML files (see each of the SaveComponent instances below). -->
<outputPaths>
{@HelpFormatOutputPaths}
</outputPaths>
<!-- Allow missing source files (Optional). If omitted, it will generate errors if referenced source
files are missing. -->
<allowMissingSource value="false" />
<!-- Remove region markers from imported code blocks. If omitted, region markers in imported code
blocks are left alone. -->
<removeRegionMarkers value="false" />
<!-- Code colorizer options (required).
Attributes:
Language syntax configuration file (required, not used by Markdown)
XSLT style sheet file (required, not used by Markdown)
CSS style sheet file (not used for Markdown)
Script file (not used for Markdown)
Disabled (always disabled for Markdown, leading whitespace normalization only)
Default language (optional)
Enable line numbering (optional)
Enable outlining (optional)
Keep XML comment "see" tags within the code (optional)
Tab size override (optional, 0 = Use syntax file setting)
Use language name as default title (optional) -->
<colorizer syntaxFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.xml"
styleFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.xsl"
stylesheet="{@SHFBFolder}PresentationStyles\Colorizer\highlight.css"
scriptFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.js"
disabled="true" language="cs" numberLines="false" outlining="false"
keepSeeTags="false" tabSize="0" defaultTitle="true" />
</component>
<!-- Transform -->
<component id="XSL Transform Component">
<transform file="{@PresentationPath}Transforms\MainConceptual.xsl">
{@TransformComponentArguments}
</transform>
</component>
<!-- Resolve shared content -->
<component id="Shared Content Component">
<content file="{@ResourceItemsFolder}SharedContent.xml" />
<content file="{@ResourceItemsFolder}ConceptualContent.xml" />
<!-- These must be last in order to override other elements! -->
<content file="SHFBContent.xml" />
{@ResourceItemFiles}
</component>
<!-- Resolve art links -->
<component id="Resolve Art Links Component">
<targets input="Media" baseOutput=".\Output\Markdown" outputPath="string('media')" link="media"
map="_MediaContent_.xml" />
</component>
<!-- Resolve conceptual links -->
<component id="Resolve Conceptual Links Component">
<showBrokenLinkText value="true" />
<targets base="xmlComp" type="Local" url="string(/metadata/topic/@id)" />
</component>
<!-- Resolve reference links -->
<component id="Resolve Reference Links Component">
<locale value="{@Locale}" />
<hrefFormat value="{0}" />
<linkTarget value="{@SdkLinkTarget}" />
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" />
<targets base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml"
type="{@WebsiteSdkLinkType}" id="FrameworkTargets">
{@ReferenceLinkNamespaceFiles}
</targets>
<targets files="reflection.xml" type="Local" id="ProjectTargets" />
</component>
<!-- Save the result -->
<component id="Save Component">
<save base="Output\Markdown\" path="concat($key,'.md')" indent="{@IndentHtml}"
omit-xml-declaration="true" add-xhtml-namespace="false"
groupId="Markdown MAML" boundedCapacity="{@SaveComponentCacheCapacity}" />
</component>
</case>
<case value="API">
<!-- Create skeleton document -->
<component id="Copy From File Component">
<data file="{@PresentationPath}Transforms\SkeletonAPI.xml" />
<copy source="/document/*" target="/document" />
</component>
<!-- Copy in reflection data -->
<component id="Copy From Index Component">
<index name="reflection" value="/reflection/apis/api" key="@id" cache="15">
<data base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml" duplicateWarning="false">
{@ReferenceLinkNamespaceFiles}
</data>
<data files="reflection.xml" />
</index>
<copy name="reflection" source="*" target="/document/reference" />
</component>
<!-- Copy in container data -->
<component id="Copy From Index Component">
<copy name="reflection" key="string(/document/reference/containers/namespace/@api)"
source="*[not(local-name()='elements')]" target="/document/reference/containers/namespace" />
</component>
<component id="For Each Component">
<variable expression="/document/reference/containers//type/@api" />
<components>
<component id="Copy From Index Component">
<copy name="reflection" source="topicdata|apidata|typedata|family|templates|attributes"
target="/document/reference/containers//type[@api=$key]" />
</component>
</components>
</component>
<!-- Copy in explicitInterfaceImplemented reflection data -->
<component id="For Each Component">
<variable expression="/document/reference/implements/member/@api | /document/reference/implements//type/@api" />
<components>
<component id="Copy From Index Component">
<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 id="For Each Component">
<variable expression="/document/reference/elements//element[@source='extension']/templates//type/@api" />
<components>
<component id="Copy From Index Component">
<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 id="For Each Component">
<variable expression="/document/reference/parameters/parameter//type/@api" />
<components>
<component id="Copy From Index Component">
<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 id="For Each Component">
<variable expression="/document/reference/templates//type/@api" />
<components>
<component id="Copy From Index Component">
<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 id="For Each Component">
<variable expression="/document/reference/returns//type/@api" />
<components>
<component id="Copy From Index Component">
<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 id="For Each Component">
<variable expression="/document/reference/eventhandler/type/@api" />
<components>
<component id="Copy From Index Component">
<copy name="reflection" source="apidata|typedata|family|templates|containers|attributes"
target="/document/reference/eventhandler/type[@api=$key]"/>
</component>
</components>
</component>
<!-- Generate syntax -->
<component id="Syntax Component">
<syntax input="/document/reference" output="/document/syntax" />
<generators>
{@SyntaxFilters}
</generators>
</component>
<!-- Copy in comments -->
<component id="Copy From Index Component">
<index name="comments" value="/doc/members/member" key="@name" cache="30">
{@FrameworkCommentList}
{@CommentFileList}
</index>
<copy name="comments" source="*" target="/document/comments" />
<!-- Propagate the parent type's preliminary element to the members too if present -->
<copy name="comments" key="string(/document/reference/containers/type/@api)"
source="preliminary" target="/document/comments" />
</component>
<!-- Copy in reflection data and comments for members -->
<component id="For Each Component">
<variable expression="/document/reference/elements//element/@api" />
<components>
<component id="If Then Component">
<if condition="not(/document/reference/elements//element[@api=$key]/apidata)" />
<then>
<component id="Copy From Index Component">
<copy name="reflection" source="*[not(self::elements)]"
target="/document/reference/elements//element[@api=$key]" />
</component>
</then>
</component>
<component id="Copy From Index Component">
<copy name="comments" source="summary|overloads|example"
target="/document/reference/elements//element[@api=$key]" />
</component>
</components>
</component>
<!-- Copy in comments for the member's declaring type. -->
<component id="Copy From Index Component">
<copy name="comments" key="string(/document/reference/containers/type/@api)" source="summary"
target="/document/reference/containers" />
</component>
<!-- Show missing documentation component configuration. This must appear before the TransformComponent. -->
<component id="Show Missing Documentation Component">
<!-- All elements are optional. -->
<!-- Auto-document constructors (true by default) -->
<AutoDocumentConstructors value="{@AutoDocumentConstructors}" />
<!-- Auto-document dispose methods (true by default) -->
<AutoDocumentDisposeMethods value="{@AutoDocumentDisposeMethods}" />
<!-- Show missing param tags (true by default) -->
<ShowMissingParams value="{@ShowMissingParams}" />
<!-- Show missing typeparam tags (true by default) -->
<ShowMissingTypeParams value="{@ShowMissingTypeParams}" />
<!-- Show missing remarks tags (false by default) -->
<ShowMissingRemarks value="{@ShowMissingRemarks}" />
<!-- Show missing returns tags (true by default) -->
<ShowMissingReturns value="{@ShowMissingReturns}" />
<!-- Show missing summary tags (true by default) -->
<ShowMissingSummaries value="{@ShowMissingSummaries}" />
<!-- Show missing value tags (false by default) -->
<ShowMissingValues value="{@ShowMissingValues}" />
<!-- Show missing namespace comments (true by default) -->
<ShowMissingNamespaces value="{@ShowMissingNamespaces}" />
<!-- Show missing include targets (true by default) -->
<ShowMissingIncludeTargets value="{@ShowMissingIncludeTargets}" />
</component>
<!-- Code block component configuration. This must appear before the TransformComponent. -->
<component id="Code Block Component">
<!-- Base path for relative filenames in source attributes (optional) -->
<basePath value="{@HtmlEncProjectFolder}" />
<!-- Base output paths for the files (required). These should match the parent folder of the output
path of the HTML files (see each of the SaveComponent instances below). -->
<outputPaths>
{@HelpFormatOutputPaths}
</outputPaths>
<!-- Allow missing source files (Optional). If omitted, it will generate errors if referenced source
files are missing. -->
<allowMissingSource value="false" />
<!-- Remove region markers from imported code blocks. If omitted, region markers in imported code
blocks are left alone. -->
<removeRegionMarkers value="false" />
<!-- Code colorizer options (required).
Attributes:
Language syntax configuration file (required, not used by Markdown)
XSLT style sheet file (required, not used by Markdown)
CSS style sheet file (not used for Markdown)
Script file (not used for Markdown)
Disabled (always disabled for Markdown, leading whitespace normalization only)
Default language (optional)
Enable line numbering (optional)
Enable outlining (optional)
Keep XML comment "see" tags within the code (optional)
Tab size override (optional, 0 = Use syntax file setting)
Use language name as default title (optional) -->
<colorizer syntaxFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.xml"
styleFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.xsl"
stylesheet="{@SHFBFolder}PresentationStyles\Colorizer\highlight.css"
scriptFile="{@SHFBFolder}PresentationStyles\Colorizer\highlight.js"
disabled="true" language="cs" numberLines="false" outlining="false"
keepSeeTags="false" tabSize="0" defaultTitle="true" />
</component>
<!-- Transform -->
<component id="XSL Transform Component">
<transform file="{@PresentationPath}Transforms\MainSandcastle.xsl">
{@TransformComponentArguments}
</transform>
</component>
<!-- Resolve shared content -->
<component id="Shared Content Component">
<content file="{@ResourceItemsFolder}SharedContent.xml" />
<content file="{@ResourceItemsFolder}ReferenceContent.xml" />
<!-- These must be last in order to override other elements! -->
<content file="SHFBContent.xml" />
{@ResourceItemFiles}
</component>
<!-- Resolve conceptual links -->
<component id="Resolve Conceptual Links Component">
<showBrokenLinkText value="true" />
<targets base="xmlComp" type="Local" url="string(/metadata/topic/@id)" />
</component>
<!-- Resolve reference links -->
<component id="Resolve Reference Links Component">
<locale value="{@Locale}" />
<hrefFormat value="{0}" />
<linkTarget value="{@SdkLinkTarget}" />
<msdnContentIdCache path="{@LocalDataFolder}Cache\MsdnContentId.cache" />
<targets base="{@FrameworkReflectionDataFolder}" recurse="true" files="*.xml"
type="{@WebsiteSdkLinkType}" id="FrameworkTargets">
{@ReferenceLinkNamespaceFiles}
</targets>
<targets files="reflection.xml" type="Local" id="ProjectTargets" />
</component>
<!-- Save the result -->
<component id="Save Component">
<save base="Output\Markdown\" path="concat(/*/file/@name,'.md')" indent="{@IndentHtml}"
omit-xml-declaration="true" add-xhtml-namespace="false"
groupId="Markdown API" boundedCapacity="{@SaveComponentCacheCapacity}" />
</component>
</case>
</component>
</components>
</builder>
</dduetools>
</configuration>

View File

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Section titles -->
<item id="title_inThisSection">In This Section</item>
<item id="title_buildInstructions">Compiling the Code</item>
<item id="title_nextSteps">Next Steps</item>
<item id="title_requirements">Requirements</item>
<item id="title_relatedSections">Related Sections</item>
<item id="title_relatedTopics">See Also</item>
<item id="title_syntax">Syntax</item>
<item id="title_parameters">Parameters</item>
<item id="title_returnValue">Return Value</item>
<item id="title_attributesAndElements">Attributes and Elements</item>
<item id="title_attributes">Attributes</item>
<item id="title_childElement">Child Elements</item>
<item id="title_parentElement">Parent Elements</item>
<item id="title_elementInformation">Element Information</item>
<item id="title_textValue">Text Value</item>
<item id="title_dotNetFrameworkEquivalent">.NET Framework Equivalent</item>
<item id="title_prerequisites">Prerequisites</item>
<item id="title_robustProgramming">Robust Programming</item>
<item id="title_securitySection">Security</item>
<item id="title_externalResources">External Resources</item>
<item id="title_demonstrates">Demonstrates</item>
<item id="title_appliesTo">Applies To</item>
<item id="title_conclusion">Conclusion</item>
<item id="title_background">Background</item>
<item id="title_whatsNew">What's New</item>
<item id="title_reference">Reference</item>
<item id="title_errorMessage">Error Message</item>
<item id="title_example">Example</item>
<!-- AutoOutline boilerplate -->
<item id="boilerplate_autoOutlineTopLevelIntro">This topic contains the following sections:</item>
<item id="boilerplate_autoOutlineSubsectionIntro">This section contains the following subsections:</item>
<!-- Resolve the autoOutline token -->
<item id="autoOutline">
<autoOutline />
</item>
<!-- Copyright notice. {0} = Copyright text, {1} = Year(s), {2} = Holder(s) -->
<item id="boilerplate_copyrightNotice">
<p>{0} &#169;{1}{2}. All rights reserved.</p>
</item>
<!-- Glossary related entries -->
<item id="text_relatedEntries">See Also:</item>
</content>

View File

@ -0,0 +1,480 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Note text -->
<item id="notDocumented">This API is not documented.</item>
<item id="preliminaryText">This API is preliminary and subject to change.</item>
<!-- Inserted boilerplate -->
<item id="definedBy">(Defined by {0}.)</item>
<item id="inheritedFrom">(Inherited from {0}.)</item>
<item id="overridesMember">(Overrides {0}.)</item>
<item id="locationInformation">Assembly: {0} (Module: {1})</item>
<item id="derivedClasses">Derived Classes</item>
<item id="explicitInterfaceImplementation">Explicit Interface Implementations</item>
<item id="returnValue">Return Value</item>
<item id="propertyValue">Property Value</item>
<item id="fieldValue">Field Value</item>
<item id="example">Example</item>
<!-- Topic titles -->
<item id="topicTitle_root">Namespaces</item>
<item id="topicTitle_namespace">{0} Namespace</item>
<item id="topicTitle_namespaceGroup">{0} Namespaces</item>
<item id="topicTitle_class">{0} Class</item>
<item id="topicTitle_structure">{0} Structure</item>
<item id="topicTitle_interface">{0} Interface</item>
<item id="topicTitle_derivedTypeList">{0} Derived Classes</item>
<item id="topicTitle_delegate">{0} Delegate</item>
<item id="topicTitle_enumeration">{0} Enumeration</item>
<item id="topicTitle_field">{0} Field</item>
<item id="topicTitle_method">{0} Method {1}</item>
<item id="topicTitle_constructor">{0} Constructor {1}</item>
<item id="topicTitle_property">{0} Property {1}</item>
<item id="topicTitle_event">{0} Event</item>
<!-- Title for operator members -->
<item id="topicTitle_operator">{0} Operator {1}</item>
<!-- Title for op_explicit and op_implicit members -->
<item id="topicTitle_typeConversion">{0} Conversion {1}</item>
<!-- Title for overload op_explicit and op_implicit topics -->
<item id="topicTitle_conversionOperator">{0} Conversion Operators</item>
<item id="topicTitle_attachedProperty">{0} Attached Property</item>
<item id="topicTitle_attachedEvent">{0} Attached Event</item>
<item id="generic"> generic</item>
<item id="topicTitle_generic_class">{0} Generic Class</item>
<item id="topicTitle_generic_structure">{0} Generic Structure</item>
<item id="topicTitle_generic_interface">{0} Generic Interface</item>
<item id="topicTitle_generic_delegate">{0} Generic Delegate</item>
<item id="topicTitle_generic_method">{0} Generic Method {1}</item>
<!-- List topic titles -->
<item id="topicTitle_fields">{0} Fields</item>
<item id="topicTitle_methods">{0} Methods</item>
<item id="topicTitle_enumMembers">Members</item>
<!-- Title for operator list topic that has [operators + no type conversions] -->
<item id="topicTitle_operators">{0} Operators</item>
<!-- Title for operator list topic that has [operators + type conversions] -->
<item id="topicTitle_operatorsAndTypeConversions">{0} Operators and Type Conversions</item>
<!-- Title for operator list topic that has [no operators + type conversions] -->
<item id="topicTitle_typeConversions">{0} Type Conversions</item>
<item id="topicTitle_constructors">{0} Constructors</item>
<item id="topicTitle_properties">{0} Properties</item>
<item id="topicTitle_events">{0} Events</item>
<item id="topicTitle_attachedProperties">{0} Attached Properties</item>
<item id="topicTitle_attachedEvents">{0} Attached Events</item>
<item id="topicTitle_members">{0} Members</item>
<!-- Index entries -->
<item id="indexEntry_root">namespaces</item>
<item id="indexEntry_namespace">{0} namespace</item>
<item id="indexEntry_class">{0} class</item>
<item id="indexEntry_structure">{0} structure</item>
<item id="indexEntry_interface">{0} interface</item>
<item id="indexEntry_delegate">{0} delegate</item>
<item id="indexEntry_enumeration">{0} enumeration</item>
<item id="indexEntry_enumerationMember">{0} enumeration member</item>
<item id="indexEntry_aboutType">{0}, about {0}</item>
<item id="indexEntry_derivedTypes">{0}, derived types</item>
<item id="indexEntry_members">{0}, all members</item>
<item id="indexEntry_methods">{0}, methods</item>
<!-- Index entry for operator list topic that has [operators + no type conversions] -->
<item id="indexEntry_operators">{0}, operators</item>
<!-- Index entry for operator list topic that has [operators + type conversions] -->
<item id="indexEntry_operatorsAndTypeConversions">{0}, operators and type conversions</item>
<!-- Index entry for operator list topic that has [no operators + type conversions] -->
<item id="indexEntry_typeConversions">{0}, type conversions</item>
<!-- Index entries for op_explicit and op_implicit members -->
<item id="indexEntry_conversionOperator">{0} conversion</item>
<item id="indexEntry_properties">{0}, properties</item>
<item id="indexEntry_fields">{0}, fields</item>
<item id="indexEntry_events">{0}, events</item>
<item id="indexEntry_attachedProperties">{0}, attached properties</item>
<item id="indexEntry_attachedEvents">{0}, attached events</item>
<item id="indexEntry_constructors">{0}, constructors</item>
<item id="indexEntry_constructor">{0}, constructor</item>
<item id="indexEntry_constructorType">{0} constructor</item>
<item id="indexEntry_method">{0} method</item>
<item id="indexEntry_property">{0} property</item>
<item id="indexEntry_event">{0} event</item>
<item id="indexEntry_field">{0} field</item>
<item id="indexEntry_operator">{0} operator</item>
<item id="indexEntry_attachedProperty">{0} attached property</item>
<item id="indexEntry_attachedEvent">{0} attached event</item>
<item id="indexEntry_methodExplicit">{0} explicitly implemented method</item>
<item id="indexEntry_propertyExplicit">{0} explicitly implemented property</item>
<item id="indexEntry_eventExplicit">{0} explicitly implemented event</item>
<item id="indexEntry_fieldExplicit">{0} explicitly implemented field</item>
<!-- Section titles -->
<item id="title_syntax">Syntax</item>
<item id="title_templates">Type Parameters</item>
<item id="title_parameters">Parameters</item>
<item id="title_value">Value</item>
<item id="title_delegateValue">Return Value</item>
<item id="title_methodValue">Return Value</item>
<item id="title_propertyValue">Property Value</item>
<item id="title_fieldValue">Field Value</item>
<item id="title_implements">Implements</item>
<item id="title_examples">Examples</item>
<item id="title_threadSafety">Thread Safety</item>
<item id="title_permissions">.NET Framework Security</item>
<item id="title_namespaces">Namespaces</item>
<item id="title_types">Types</item>
<item id="title_family">Inheritance Hierarchy</item>
<item id="title_versions">Version Information</item>
<item id="title_platforms">Platforms</item>
<item id="title_relatedTopics">See Also</item>
<item id="title_extensionUsage">Usage Note</item>
<item id="text_extensionUsage">In Visual Basic and C#, you can call this method as an instance method on any object of type {0}. When you use instance method syntax to call this method, omit the first parameter. For more information, see <a href="http://msdn.microsoft.com/en-us/library/bb384936.aspx">Extension Methods (Visual Basic)</a> or <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx">Extension Methods (C# Programming Guide)</a>.</item>
<!-- Table headers -->
<item id="header_namespaceName">Namespace</item>
<item id="header_namespaceDescription">Description</item>
<item id="header_typeIcon">Icon</item>
<item id="header_className">Class</item>
<item id="header_structureName">Structure</item>
<item id="header_interfaceName">Interface</item>
<item id="header_delegateName">Delegate</item>
<item id="header_enumerationName">Enumeration</item>
<item id="header_typeName">Name</item>
<item id="header_typeDescription">Description</item>
<item id="header_memberIcon">Icon</item>
<item id="header_memberName">Member name</item>
<item id="header_memberValue">Value</item>
<item id="header_memberDescription">Description</item>
<item id="header_eventType">Event Type</item>
<item id="header_eventReason">Reason</item>
<item id="header_exceptionName">Exception</item>
<item id="header_exceptionCondition">Condition</item>
<item id="header_permissionName">Permission</item>
<item id="header_permissionDescription">Description</item>
<item id="header_requiresName">Requires</item>
<item id="header_ensuresName">Ensures</item>
<item id="header_ensuresOnThrowName">EnsuresOnThrow</item>
<item id="header_invariantsName">Invariants</item>
<!-- Member list table titles -->
<item id="tableTitle_namespace">Namespaces</item>
<item id="tableTitle_class">Classes</item>
<item id="tableTitle_structure">Structures</item>
<item id="tableTitle_interface">Interfaces</item>
<item id="tableTitle_delegate">Delegates</item>
<item id="tableTitle_enumeration">Enumerations</item>
<item id="tableTitle_constructor">Constructors</item>
<item id="tableTitle_method">Methods</item>
<item id="tableTitle_operator">Operators</item>
<item id="tableTitle_field">Fields</item>
<item id="tableTitle_property">Properties</item>
<item id="tableTitle_event">Events</item>
<item id="tableTitle_attachedEvent">Attached Events</item>
<item id="tableTitle_attachedProperty">Attached Properties</item>
<item id="tableTitle_explicitInterfaceImplementation">Explicit Interface Implementations</item>
<item id="tableTitle_overloadMembers">Overload List</item>
<item id="tableTitle_extensionMethod">Extension Methods</item>
<!-- Thread Safety -->
<item id="text_threadSafety">Thread Safety</item>
<item id="boilerplate_threadSafety">Any public <include item="devlang_staticKeyword"/> members of this type are thread safe. Any instance members are not guaranteed to be thread safe.</item>
<item id="text_staticThreadSafe">Static members of this type are safe for multi-threaded operations. </item>
<item id="text_staticNotThreadSafe">Static members of this type are not safe for multi-threaded operations. </item>
<item id="text_instanceThreadSafe">Instance members of this type are safe for multi-threaded operations. </item>
<item id="text_instanceNotThreadSafe">Instance members of this type are not safe for multi-threaded operations. </item>
<item id="text_NotesForImplementers">Notes to Implementers</item>
<item id="text_NotesForCallers">Notes to Callers</item>
<item id="text_NotesForInheritors">Notes to Inheritors</item>
<!-- Boilerplate intro to member list tables -->
<item id="genericExposedMembersTableText">The {0} generic type exposes the following members.</item>
<item id="exposedMembersTableText">The {0} type exposes the following members.</item>
<item id="dependencyPropertyInfoHeading">Dependency Property Information</item>
<item id="routedEventInfoHeading">Routed Event Information</item>
<item id="Overloaded">Overloaded. </item>
<item id="defaultNamespace">( Default Namespace )</item>
<item id="typeLink">Type: {0}</item>
<!-- First line of a param or retval description is a link to the type of the param or retval.
This boilerplate is used if the type is a type parameter of the member's type. -->
<item id="typeLinkToTypeParameter">**{0}** type parameter of {1}.</item>
<!-- Internal only boilerplate text -->
<item id="internalOnly">This API supports the .NET Framework infrastructure and is not intended to be used directly from your code.</item>
<item id="infraStructure">Infrastructure. </item>
<!-- Obsolete boilerplate text -->
<item id="boilerplate_obsoleteShort">**Obsolete. **</item>
<item id="boilerplate_obsoleteLong">**Note: This API is now obsolete.**</item>
<!-- Group and SubGroup text -->
<item id="text_classUpper">Class</item>
<item id="text_structureUpper">Structure</item>
<item id="text_interfaceUpper">Interface</item>
<item id="text_delegateUpper">Delegate</item>
<item id="text_enumerationUpper">Enumeration</item>
<item id="text_membersUpper">Members</item>
<item id="text_methodsUpper">Methods</item>
<item id="text_propertiesUpper">Properties</item>
<item id="text_eventsUpper">Events</item>
<item id="text_fieldsUpper">Fields</item>
<item id="text_operatorsUpper">Operators</item>
<item id="text_attachedPropertiesUpper">Attached Properties</item>
<item id="text_attachedEventsUpper">Attached Events</item>
<!-- Alt text for images -->
<item id="altText_pubClass">Public class</item>
<item id="altText_pubStructure">Public structure</item>
<item id="altText_pubInterface">Public interface</item>
<item id="altText_pubDelegate">Public delegate</item>
<item id="altText_pubEnumeration">Public enumeration</item>
<item id="altText_protClass">Protected class</item>
<item id="altText_protStructure">Protected structure</item>
<item id="altText_protInterface">Protected interface</item>
<item id="altText_protDelegate">Protected delegate</item>
<item id="altText_protEnumeration">Protected enumeration</item>
<item id="altText_privClass">Private class</item>
<item id="altText_privStructure">Private structure</item>
<item id="altText_privInterface">Private interface</item>
<item id="altText_privDelegate">Private delegate</item>
<item id="altText_privEnumeration">Private enumeration</item>
<item id="altText_pubConstructor">Public constructor</item>
<item id="altText_pubMethod">Public method</item>
<item id="altText_pubField">Public field</item>
<item id="altText_pubProperty">Public property</item>
<item id="altText_pubEvent">Public event</item>
<item id="altText_pubOperator">Public operator</item>
<item id="altText_pubAttachedProperty">Public attached property</item>
<item id="altText_pubAttachedEvent">Public attached event</item>
<item id="altText_protConstructor">Protected constructor</item>
<item id="altText_protMethod">Protected method</item>
<item id="altText_protField">Protected field</item>
<item id="altText_protProperty">Protected property</item>
<item id="altText_protEvent">Protected event</item>
<item id="altText_protOperator">Protected operator</item>
<item id="altText_protAttachedProperty">Protected attached property</item>
<item id="altText_protAttachedEvent">Protected attached event</item>
<item id="altText_privConstructor">Private constructor</item>
<item id="altText_privMethod">Private method</item>
<item id="altText_privField">Private field</item>
<item id="altText_privProperty">Private property</item>
<item id="altText_privEvent">Private event</item>
<item id="altText_privOperator">Private operator</item>
<item id="altText_privtAttachedProperty">Private attached property</item>
<item id="altText_privAttachedEvent">Private attached event</item>
<item id="altText_static">Static member</item>
<item id="altText_pubextension">Public Extension Method</item>
<item id="altText_protextension">Protected Extension Method</item>
<item id="altText_privextension">Private Extension Method</item>
<item id="altText_CompactFramework">Supported by the .NET Compact Framework</item>
<item id="altText_XNAFramework">Supported by the XNA Framework</item>
<item id="altText_SilverlightMobile">Supported by <include item="silverlight_mobile"/></item>
<item id="altText_ExplicitInterface">Explicit interface implementation</item>
<item id="altText_CodeExample">Code example</item>
<item id="boilerplate_seeAlsoNamespaceLink">{0} Namespace</item>
<item id="boilerplate_seeAlsoTypeLink">{0} <include item="text_{1}Upper"/></item>
<item id="boilerplate_seeAlsoMembersLink">{0} Members</item>
<item id="boilerplate_seeAlsoOverloadLink">{0} Overload</item>
<item id="boilerplate_requirementsNamespace">**Namespace:**</item>
<item id="boilerplate_requirementsPlatforms">**Platforms:** {0}</item>
<item id="boilerplate_requirementsAssemblies">**Assemblies:**</item>
<item id="boilerplate_requirementsAssemblyLabel">**Assembly:**</item>
<item id="assemblyNameAndModule">{0} (in {1}.{2}) Version: {3}</item>
<item id="boilerplate_requirementsAssembly">**Assembly:** {0} (in {1}.dll)</item>
<!-- Used for Version Information Section -->
<item id="supportedIn_1">Supported in: {0}</item>
<item id="supportedIn_2">Supported in: {0}, {1}</item>
<item id="supportedIn_3">Supported in: {0}, {1}, {2}</item>
<item id="supportedIn_4">Supported in: {0}, {1}, {2}, {3}</item>
<item id="supportedIn_5">Supported in: {0}, {1}, {2}, {3}, {4}</item>
<item id="supportedIn_6">Supported in: {0}, {1}, {2}, {3}, {4}, {5}</item>
<item id="supportedIn_7">Supported in: {0}, {1}, {2}, {3}, {4}, {5}, {6}</item>
<item id="obsoleteWarning">Obsolete (compiler warning) in {0}</item>
<item id="obsoleteError">Obsolete (does not compile) in {0} and later</item>
<!-- APTCA Boilerplate text -->
<item id="boilerplate_aptca">Full trust for the immediate caller. This member cannot be used by partially trusted code. For more information, see <a href="http://msdn.microsoft.com/en-us/library/8skskf63.aspx">Using Libraries from Partially Trusted Code</a>.</item>
<!-- Variance boilerplate text -->
<item id="text_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="text_contravariant">This type parameter is contravariant. That is, you can use either the type you specified or any type that is less derived. </item>
<item id="text_variance">For more information about covariance and contravariance, see <a href="http://msdn.microsoft.com/en-us/library/ee207183.aspx">Covariance and Contravariance (C# and Visual Basic).</a>.</item>
<!-- Non CLS Compliant boilerplate text-->
<item id="boilerplate_NotClsCompliant">This API is not CLS-compliant.</item>
<item id="boilerplate_AltClsCompliant">The CLS-compliant alternative is {0}.</item>
<!-- Security Critical Boilerplate text-->
<item id="boilerplate_typeSecurityCritical">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="boilerplate_memberSecurityCritical">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="text_securityCritical">[SECURITY CRITICAL] </item>
<!-- Overload page boilerplate -->
<item id="boilerplate_overloadSummary">This member is overloaded. For complete information about this member, including syntax, usage, and examples, click a name in the overload list.</item>
<!-- Platforms Information and Platform Notes -->
<item id="boilerplate_systemRequirementsLink">
<p>The <include item="netfw"/> and <include item="netcfw"/> do not support all versions of every platform. For a list of the supported versions, see <a href="http://msdn.microsoft.com/en-us/library/8z6watww.aspx">.NET Framework System Requirements</a>.</p>
</item>
<!-- Platforms boilerplate for Silverlight mref builds -->
<item id="boilerplate_silverlightPlatforms">For information on the operating systems and browsers supported by <include item="silverlight"/>, see <a href="http://msdn.microsoft.com/en-us/library/dd229102.aspx">Supported Operating Systems and Browsers</a>.</item>
<item id="Win95">Windows 95</item>
<item id="Win98Se">Windows 98 Second Edition</item>
<item id="WinNT4">Windows NT 4.0</item>
<item id="WinNT4Svr">Windows NT Server 4.0</item>
<item id="WinNT4Wks">Windows NT Workstation 4.0</item>
<item id="Win2kFamily">Windows 2000</item>
<item id="Win2kProfessional">Windows 2000 Professional</item>
<item id="Win2kServer">Windows 2000 Server</item>
<item id="Win2kDatacenter">Windows 2000 Advanced Server</item>
<item id="WinXPPersonal">Windows XP Home Edition</item>
<item id="WinXPPro">Windows XP Professional x64 Edition</item>
<item id="WinXPSvr"><include item="WinSvr2003"/></item>
<item id="WinXpTablet">Windows XP Tablet PC Edition</item>
<item id="WinXpEmbedded">Windows XP Embedded</item>
<item id="ECMACLI">Common Language Infrastructure (CLI) Standard</item>
<item id="MSTV">Microsoft TV</item>
<item id="Win9xFamily"><include item="Win95"/>, <include item="Win98"/>, <include item="Win98Se"/>, <include item="WinME"/></item>
<item id="WinNt4Family"><include item="WinNT4"/></item>
<item id="WinXpFamily"><include item="WinXPPersonal"/>, <include item="WinXPPro"/>, <include item="WinXPSvr"/></item>
<item id="WinCE"><include item="WindowsCE"/></item>
<item id="Win2K"><include item="WinSvr2000"/></item>
<item id="Win2KSvr"><include item="Win2kServer"/></item>
<item id="Win2KADC"><include item="Win2kDatacenter"/></item>
<item id="WinNt4Server"><include item="WinNT4Svr"/></item>
<item id="WinNt4Workstation"><include item="WinNT4Wks"/></item>
<item id="Win2kAdvanced"><include item="Win2kDatacenter"/></item>
<item id="Win2kServerApplianceKit"></item>
<item id="WinXpHome"><include item="WinXPPersonal"/></item>
<item id="WinXpProfessional"><include item="WinXPPro"/></item>
<item id="Win2003Server"><include item="WinXPSvr"/></item>
<item id="NETCF"><include item="PocketPC"/>, <include item="SmartPhone"/>, <include item="WindowsCE"/></item>
<item id="XNA"><include item="Xbox360"/>, <include item="Zune" /></item>
<!-- Platform names that appear in the Platforms section on mref type and member pages. The id values must be
in sync with the platform/@name values used in the manifold platformFilters.xml filter files. These
values are also used in <platformNotes>
-->
<item id="Win98">Windows 98</item>
<item id="WinME">Windows Millennium Edition</item>
<item id="WinSvr2000">Windows Server 2000 SP4</item>
<item id="WinXPPro64">Windows XP Professional x64 Edition</item>
<item id="WinXP">Windows XP SP3</item>
<item id="WindowsCE">Windows CE</item>
<item id="PocketPC">Windows Mobile for Pocket PC</item>
<item id="SmartPhone">Windows Mobile for Smartphone</item>
<item id="WinSvr2003">Windows Server 2003</item>
<item id="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>
<!-- Framework ids:
These shared content item strings are used for the headings in the Version Information section
These ids must be in sync with the ids used in the config file for VersionBuilder.
-->
<item id="netfw">.NET Framework</item>
<item id="netcfw">.NET Compact Framework</item>
<item id="xnafw">XNA Framework</item>
<item id="silverlight">Silverlight</item>
<item id="silverlight_mobile">Silverlight for Windows Phone</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>
<item id="netfw20_1">2.0 SP1</item>
<item id="netfw20">2.0</item>
<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="silverlight10">1.0</item>
<item id="silverlight20">2.0</item>
<item id="silverlight_v3">3.0</item>
<item id="silverlight_v4">4.0</item>
<item id="silverlight_mobile_v1">Windows Phone OS 7.0</item>
<!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML -->
<item id="boilerplate_xamlXmlnsRequirements">**XMLNS for XAML:** {0}</item>
<item id="boilerplate_unmappedXamlXmlns">Not mapped to an xmlns.</item>
<item id="boilerplate_secondaryFrameworkOverride"><br /><br />In <include item="{0}"/>, this member is overridden by {1}.</item>
<item id="boilerplate_secondaryFrameworkInherited"><br /><br />In <include item="{0}"/>&#160;<include item="{1}"/>, this member is inherited from {2}{3}{4}.</item>
<item id="boilerplate_secondaryFrameworkMember"><br /><br />In <include item="{0}"/>&#160;<include item="{1}"/>, this member is {2}.</item>
<item id="boilerplate_useBaseSummary">This member overrides {0}.</item>
<item id="boilerplate_useBaseSee">See {0}.</item>
<item id="boilerplate_useBase">This member overrides {0}, and more complete documentation might be available in that topic.</item>
<item id="boilerplate_flagsSummary">This enumeration has a {0} attribute that allows a bitwise combination of its member values.</item>
<!-- Contracts -->
<item id="contracts_PureMethod">This method is pure.</item>
<item id="contracts_LearnMore">Learn more about contracts</item>
<item id="contracts_Description">Description: </item>
<item id="contracts_InheritedFrom">Inherited From: </item>
<item id="contracts_Exception">Exception: </item>
<!-- Show Missing Component messages -->
<item id="SMCAutoDocConstructor">Initializes a new instance of the <referenceLink target="T:{0}" /> class</item>
<item id="SMCAutoDocStaticConstructor">Initializes the static fields of the <referenceLink target="T:{0}" /> class</item>
<item id="SMCAutoDocDispose">Releases all resources used by the <referenceLink target="T:{0}" /></item>
<item id="SMCAutoDocDisposeBool">Releases the unmanaged resources used by the <referenceLink target="T:{0}" /> and optionally releases the managed resources</item>
<item id="SMCAutoDocDisposeParam">True to release both managed and unmanaged resources; false to release only unmanaged resources</item>
<item id="SMCMissingTag">\[Missing &lt;{0}&gt; documentation for "{1}"\]</item>
<item id="SMCMissingParamTag">\[Missing &lt;{0} name="{1}"/&gt; documentation for "{2}"\]</item>
<item id="SMCMissingIncludeTarget">\[Missing &lt;include&gt; target documentation in '{0}'. File: '{1}' Path: '{2}'\]</item>
<!-- View Source link text -->
<item id="sourceCodeLinkText">View Source</item>
<item id="sourceCodeLinkTitle">View the source code</item>
</content>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Media file path -->
<item id="mediaPath">media/{0}</item>
<!-- Topic title -->
<item id="boilerplate_pageTitle">{0}</item>
<item id="header"></item>
<!-- Alert titles -->
<item id="alert_title_tip">Tip</item>
<item id="alert_title_caution">Caution</item>
<item id="alert_title_security">Security Note</item>
<item id="alert_title_note">Note</item>
<item id="alert_title_important">Important</item>
<item id="alert_title_visualBasic">Visual Basic Note</item>
<item id="alert_title_visualC#">C# Note</item>
<item id="alert_title_visualC++">C++ Note</item>
<item id="alert_title_visualJ#">J# Note</item>
<!-- Alert alt text -->
<item id="alert_altText_tip">Tip</item>
<item id="alert_altText_caution">Caution note</item>
<item id="alert_altText_security">Security note</item>
<item id="alert_altText_note">Note</item>
<item id="alert_altText_important">Important note</item>
<item id="alert_altText_visualBasic">Visual Basic note</item>
<item id="alert_altText_visualC#">C# note</item>
<item id="alert_altText_visualC++">C++ note</item>
<item id="alert_altText_visualJ#">J# note</item>
<!-- Section titles -->
<item id="title_remarks">Remarks</item>
<item id="title_changeHistory">Change History</item>
<item id="title_events">Events</item>
<item id="title_exceptions">Exceptions</item>
<item id="title_contracts">Contracts</item>
<item id="title_setter">Set</item>
<item id="title_getter">Get</item>
<item id="title_seeAlso_tasks">Tasks</item>
<item id="title_seeAlso_reference">Reference</item>
<item id="title_seeAlso_concepts">Concepts</item>
<item id="title_seeAlso_otherResources">Other Resources</item>
<item id="inline_dynamicLink_prefixText">For more information, see </item>
<item id="inline_dynamicLink_postfixText">.</item>
<item id="inline_dynamicLink_separatorText"> and </item>
<!-- Development language and code snippet titles for languages without a syntax generator -->
<item id="devlang_HTML">HTML</item>
<item id="devlang_PShell">PowerShell</item>
<item id="devlang_Python">Python</item>
<item id="devlang_SQL">SQL</item>
<item id="devlang_VBScript">Visual Basic Script</item>
<item id="devlang_VisualBasicAndCSharp">Visual Basic and C#</item>
<item id="devlang_XML">XML</item>
<!-- Language keywords -->
<item id="devlang_nullKeyword">a null reference (`Nothing` in Visual Basic)</item>
<item id="devlang_staticKeyword">`static` (`Shared` in Visual Basic)</item>
<item id="devlang_virtualKeyword">`virtual` (`Overridable` in Visual Basic)</item>
<item id="devlang_trueKeyword">`true` (`True` in Visual Basic)</item>
<item id="devlang_falseKeyword">`false` (`False` in Visual Basic)</item>
<item id="devlang_abstractKeyword">`abstract` (`MustInherit` in Visual Basic)</item>
<item id="devlang_sealedKeyword">`sealed` (`NotInheritable` in Visual Basic)</item>
<item id="devlang_asyncKeyword">`async` (`Async` in Visual Basic)</item>
<item id="devlang_awaitKeyword">`await` (`Await` in Visual Basic)</item>
<item id="devlang_asyncAwaitKeyword">`async`/`await` (`Async`/`Await` in Visual Basic)</item>
<!-- Back to Top link text -->
<item id="top">Back to Top</item>
</content>

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Section titles -->
<item id="title_inThisSection">セクションの内容</item>
<item id="title_buildInstructions">コードのコンパイル</item>
<item id="title_nextSteps">次の手順</item>
<item id="title_requirements">必須</item>
<item id="title_relatedSections">関連するセクション</item>
<item id="title_relatedTopics">参照</item>
<item id="title_syntax">構文</item>
<item id="title_parameters">パラメーター</item>
<item id="title_returnValue">戻り値</item>
<item id="title_attributesAndElements">属性と要素</item>
<item id="title_attributes">属性</item>
<item id="title_childElement">子要素</item>
<item id="title_parentElement">親要素</item>
<item id="title_elementInformation">要素情報</item>
<item id="title_textValue">テキスト値</item>
<item id="title_dotNetFrameworkEquivalent">.NET Framework と等価</item>
<item id="title_prerequisites">前提条件</item>
<item id="title_robustProgramming">ロバストなプログラミング</item>
<item id="title_securitySection">セキュリティ</item>
<item id="title_externalResources">外部リソース</item>
<item id="title_demonstrates">デモ</item>
<item id="title_appliesTo">適用対象</item>
<item id="title_conclusion">結論</item>
<item id="title_background">背景</item>
<item id="title_whatsNew">新着情報</item>
<item id="title_reference">参照</item>
<item id="title_errorMessage">エラーメッセージ</item>
<item id="title_example"></item>
<!-- AutoOutline boilerplate -->
<item id="boilerplate_autoOutlineTopLevelIntro">このトピックは下記のセクションを含みます:</item>
<item id="boilerplate_autoOutlineSubsectionIntro">このトピックは下記のサブセクションを含みます:</item>
<!-- Resolve the autoOutline token -->
<item id="autoOutline">
<autoOutline />
</item>
<!-- Copyright notice. {0} = Copyright text, {1} = Year(s), {2} = Holder(s) -->
<item id="boilerplate_copyrightNotice"><p>{0} ©{1}{2}. All rights reserved.</p></item>
<!-- Glossary related entries -->
<item id="text_relatedEntries">参照:</item>
</content>

View File

@ -0,0 +1,492 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Note text -->
<item id="notDocumented">このAPIはドキュメント化されていません。</item>
<item id="preliminaryText">このAPIは暫定的なものであり、変更される可能性があります。</item>
<!-- Inserted boilerplate -->
<item id="definedBy">({0}により定義)</item>
<item id="inheritedFrom">({0}から継承)</item>
<item id="overridesMember">({0}をオーバーライド)</item>
<item id="locationInformation">アセンブリ: {0} (モジュール: {1})</item>
<item id="derivedClasses">派生クラス</item>
<item id="explicitInterfaceImplementation">明示的なインターフェイスの実装</item>
<item id="returnValue">戻り値</item>
<item id="propertyValue">プロパティ値</item>
<item id="fieldValue">フィールド値</item>
<item id="example"></item>
<!-- Topic titles -->
<item id="topicTitle_root">名前空間</item>
<item id="topicTitle_namespace">{0} 名前空間</item>
<item id="topicTitle_namespaceGroup">{0} 名前空間</item>
<item id="topicTitle_class">{0} クラス</item>
<item id="topicTitle_structure">{0} 構造体</item>
<item id="topicTitle_interface">{0} インターフェイス</item>
<item id="topicTitle_derivedTypeList">{0} 派生クラス</item>
<item id="topicTitle_delegate">{0} デリゲート</item>
<item id="topicTitle_enumeration">{0} 列挙体</item>
<item id="topicTitle_field">{0} フィールド</item>
<item id="topicTitle_method">{0} メソッド {1}</item>
<item id="topicTitle_constructor">{0} コンストラクター {1}</item>
<item id="topicTitle_property">{0} プロパティ {1}</item>
<item id="topicTitle_event">{0} イベント</item>
<!-- Title for operator members -->
<item id="topicTitle_operator">{0} 演算子 {1}</item>
<!-- Title for op_explicit and op_implicit members -->
<item id="topicTitle_typeConversion">{0} 変換 {1}</item>
<!-- Title for overload op_explicit and op_implicit topics -->
<item id="topicTitle_conversionOperator">{0} 変換演算子</item>
<item id="topicTitle_attachedProperty">{0} 添付プロパティ</item>
<item id="topicTitle_attachedEvent">{0} 添付イベント</item>
<item id="generic"> generic</item>
<item id="topicTitle_generic_class">{0} ジェネリッククラス</item>
<item id="topicTitle_generic_structure">{0} ジェネリック構造体</item>
<item id="topicTitle_generic_interface">{0} ジェネリックインターフェイス</item>
<item id="topicTitle_generic_delegate">{0} ジェネリックデリゲート</item>
<item id="topicTitle_generic_method">{0} ジェネリックメソッド {1}</item>
<!-- List topic titles -->
<item id="topicTitle_fields">{0} フィールド</item>
<item id="topicTitle_methods">{0} メソッド</item>
<item id="topicTitle_enumMembers">メンバー</item>
<!-- Title for operator list topic that has [operators + no type conversions] -->
<item id="topicTitle_operators">{0} 演算子</item>
<!-- Title for operator list topic that has [operators + type conversions] -->
<item id="topicTitle_operatorsAndTypeConversions">{0} 演算子と型変換</item>
<!-- Title for operator list topic that has [no operators + type conversions] -->
<item id="topicTitle_typeConversions">{0} 型変換</item>
<item id="topicTitle_constructors">{0} コンストラクター</item>
<item id="topicTitle_properties">{0} プロパティ</item>
<item id="topicTitle_events">{0} イベント</item>
<item id="topicTitle_attachedProperties">{0} 添付プロパティ</item>
<item id="topicTitle_attachedEvents">{0} 添付イベント</item>
<item id="topicTitle_members">{0} メンバー</item>
<!-- Index entries -->
<item id="indexEntry_root">名前空間</item>
<item id="indexEntry_namespace">{0} 名前空間</item>
<item id="indexEntry_class">{0} クラス</item>
<item id="indexEntry_structure">{0} 構造体</item>
<item id="indexEntry_interface">{0} インターフェイス</item>
<item id="indexEntry_delegate">{0} デリゲート</item>
<item id="indexEntry_enumeration">{0} 列挙体</item>
<item id="indexEntry_enumerationMember">{0} 列挙体メンバー</item>
<item id="indexEntry_aboutType">{0}、{0}について</item>
<item id="indexEntry_derivedTypes">{0}、派生型</item>
<item id="indexEntry_members">{0}、すべてのメンバー</item>
<item id="indexEntry_methods">{0}、メソッド</item>
<!-- Index entry for operator list topic that has [operators + no type conversions] -->
<item id="indexEntry_operators">{0}、演算子</item>
<!-- Index entry for operator list topic that has [operators + type conversions] -->
<item id="indexEntry_operatorsAndTypeConversions">{0}、演算子と型変換</item>
<!-- Index entry for operator list topic that has [no operators + type conversions] -->
<item id="indexEntry_typeConversions">{0}、型変換</item>
<!-- Index entries for op_explicit and op_implicit members -->
<item id="indexEntry_conversionOperator">{0} 変換</item>
<item id="indexEntry_properties">{0}、プロパティ</item>
<item id="indexEntry_fields">{0}、フィールド</item>
<item id="indexEntry_events">{0}、イベント</item>
<item id="indexEntry_attachedProperties">{0}、添付プロパティ</item>
<item id="indexEntry_attachedEvents">{0}、添付イベント</item>
<item id="indexEntry_constructors">{0}、コンストラクター</item>
<item id="indexEntry_constructor">{0}、コンストラクター</item>
<item id="indexEntry_constructorType">{0} コンストラクター</item>
<item id="indexEntry_method">{0} メソッド</item>
<item id="indexEntry_property">{0} プロパティ</item>
<item id="indexEntry_event">{0} イベント</item>
<item id="indexEntry_field">{0} フィールド</item>
<item id="indexEntry_operator">{0} 演算子</item>
<item id="indexEntry_attachedProperty">{0} 添付プロパティ</item>
<item id="indexEntry_attachedEvent">{0} 添付イベント</item>
<item id="indexEntry_methodExplicit">{0} 明示的に実装されたメソッド</item>
<item id="indexEntry_propertyExplicit">{0} 明示的に実装されたプロパティ</item>
<item id="indexEntry_eventExplicit">{0} 明示的に実装されたイベント</item>
<item id="indexEntry_fieldExplicit">{0} 明示的に実装されたフィールド</item>
<!-- Section titles -->
<item id="title_syntax">構文</item>
<item id="title_templates">型パラメーター</item>
<item id="title_parameters">パラメーター</item>
<item id="title_value"></item>
<item id="title_delegateValue">戻り値</item>
<item id="title_methodValue">戻り値</item>
<item id="title_propertyValue">プロパティ値</item>
<item id="title_fieldValue">フィールド値</item>
<item id="title_implements">実装</item>
<item id="title_examples"></item>
<item id="title_threadSafety">スレッドセーフ</item>
<item id="title_permissions">.NET Framework セキュリティ</item>
<item id="title_namespaces">名前空間</item>
<item id="title_types"></item>
<item id="title_family">継承階層</item>
<item id="title_versions">バージョン情報</item>
<item id="title_platforms">プラットフォーム</item>
<item id="title_relatedTopics">関連項目</item>
<item id="title_extensionUsage">使用上の注意</item>
<item id="text_extensionUsage">Visual Basic と C#では、{0}型のオブジェクトのインスタンスメソッドのようにこのメソッドを呼び出せます。このメソッドを呼び出すためにインスタンスメソッド構文を使う場合、最初のパラメーターを省略します。詳細は、<a href="http://msdn.microsoft.com/ja-jp/library/bb384936.aspx" target="_blank">拡張メソッド(Visual Basic)</a>または<a href="http://msdn.microsoft.com/ja-jp/library/bb383977.aspx" target="_blank">拡張メソッド(C# プログラミング ガイド)</a>を参照してください。</item>
<!-- Table headers -->
<item id="header_namespaceName">名前空間</item>
<item id="header_namespaceDescription">説明</item>
<item id="header_typeIcon">アイコン</item>
<item id="header_className">クラス</item>
<item id="header_structureName">構造体</item>
<item id="header_interfaceName">インターフェイス</item>
<item id="header_delegateName">デリゲート</item>
<item id="header_enumerationName">列挙体</item>
<item id="header_typeName">名前</item>
<item id="header_typeDescription">説明</item>
<item id="header_memberIcon">アイコン</item>
<item id="header_memberName">メンバー</item>
<item id="header_memberValue"></item>
<item id="header_memberDescription">説明</item>
<item id="header_eventType">イベント型</item>
<item id="header_eventReason">原因</item>
<item id="header_exceptionName">例外</item>
<item id="header_exceptionCondition">条件</item>
<item id="header_permissionName">パーミッション</item>
<item id="header_permissionDescription">説明</item>
<item id="header_requiresName">事前条件</item>
<item id="header_ensuresName">事後条件</item>
<item id="header_ensuresOnThrowName">例外発生時の事後条件</item>
<item id="header_invariantsName">不変条件</item>
<!-- Member list table titles -->
<item id="tableTitle_namespace">名前空間</item>
<item id="tableTitle_class">クラス</item>
<item id="tableTitle_structure">構造体</item>
<item id="tableTitle_interface">インターフェイス</item>
<item id="tableTitle_delegate">デリゲート</item>
<item id="tableTitle_enumeration">列挙体</item>
<item id="tableTitle_constructor">コンストラクター</item>
<item id="tableTitle_method">メソッド</item>
<item id="tableTitle_operator">演算子</item>
<item id="tableTitle_field">フィールド</item>
<item id="tableTitle_property">プロパティ</item>
<item id="tableTitle_event">イベント</item>
<item id="tableTitle_attachedEvent">添付イベント</item>
<item id="tableTitle_attachedProperty">添付プロパティ</item>
<item id="tableTitle_explicitInterfaceImplementation">明示的なインターフェイスの実装</item>
<item id="tableTitle_overloadMembers">オーバーロードの一覧</item>
<item id="tableTitle_extensionMethod">拡張メソッド</item>
<!-- Thread Safety -->
<item id="text_threadSafety">スレッドセーフ</item>
<item id="boilerplate_threadSafety">この型の公開<include item="devlang_staticKeyword" />メンバーはすべてスレッドセーフです。インスタンスメンバーはスレッドセーフである保証はありません。</item>
<item id="text_staticThreadSafe">この型のstaticメンバーはスレッドセーフです。</item>
<item id="text_staticNotThreadSafe">この型のstaticメンバーはスレッドセーフではありません。</item>
<item id="text_instanceThreadSafe">この型のインスタンスメンバーはスレッドセーフです。</item>
<item id="text_instanceNotThreadSafe">この型のインスタンスメンバーはスレッドセーフではありません。</item>
<item id="text_NotesForImplementers">実装時の注意</item>
<item id="text_NotesForCallers">利用時の注意</item>
<item id="text_NotesForInheritors">継承する場合の注意</item>
<!-- Boilerplate intro to member list tables -->
<item id="genericExposedMembersTableText">{0} ジェネリック型は下記のメンバーを公開します。</item>
<item id="exposedMembersTableText">{0} 型は下記のメンバーを公開します。</item>
<item id="dependencyPropertyInfoHeading">依存関係プロパティの情報</item>
<item id="routedEventInfoHeading">ルーティングイベントの情報</item>
<item id="Overloaded">オーバーロード。</item>
<item id="defaultNamespace">(既定の名前空間)</item>
<item id="typeLink">型: {0}</item>
<!-- First line of a param or retval description is a link to the type of the param or retval.
This boilerplate is used if the type is a type parameter of the member's type. -->
<item id="typeLinkToTypeParameter">{1}の型パラメーター<strong>{0}</strong></item>
<!-- Internal only boilerplate text -->
<item id="internalOnly">このAPIは.NET Frameworkインフラストラクチャをサポートしており、ユーザーコードから直接使われることを意図していません。</item>
<item id="infraStructure">インフラストラクチャ</item>
<!-- Obsolete boilerplate text -->
<item id="boilerplate_obsoleteShort"><strong>廃止予定。</strong></item>
<item id="boilerplate_obsoleteLong"><strong>注意: このAPIは廃止予定です。</strong></item>
<!-- Group and SubGroup text -->
<item id="text_classUpper">クラス</item>
<item id="text_structureUpper">構造体</item>
<item id="text_interfaceUpper">インターフェイス</item>
<item id="text_delegateUpper">デリゲート</item>
<item id="text_enumerationUpper">列挙体</item>
<item id="text_membersUpper">メンバー</item>
<item id="text_methodsUpper">メソッド</item>
<item id="text_propertiesUpper">プロパティ</item>
<item id="text_eventsUpper">イベント</item>
<item id="text_fieldsUpper">フィールド</item>
<item id="text_operatorsUpper">演算子</item>
<item id="text_attachedPropertiesUpper">添付プロパティ</item>
<item id="text_attachedEventsUpper">添付イベント</item>
<!-- Alt text for images -->
<item id="altText_pubClass">Public クラス</item>
<item id="altText_pubStructure">Public 構造体</item>
<item id="altText_pubInterface">Public インターフェイス</item>
<item id="altText_pubDelegate">Public デリゲート</item>
<item id="altText_pubEnumeration">Public 列挙体</item>
<item id="altText_protClass">Protected クラス</item>
<item id="altText_protStructure">Protected 構造体</item>
<item id="altText_protInterface">Protected インターフェイス</item>
<item id="altText_protDelegate">Protected デリゲート</item>
<item id="altText_protEnumeration">Protected 列挙体</item>
<item id="altText_privClass">Private クラス</item>
<item id="altText_privStructure">Private 構造体</item>
<item id="altText_privInterface">Private インターフェイス</item>
<item id="altText_privDelegate">Private デリゲート</item>
<item id="altText_privEnumeration">Private 列挙体</item>
<item id="altText_pubConstructor">Public コンストラクター</item>
<item id="altText_pubMethod">Public メソッド</item>
<item id="altText_pubField">Public フィールド</item>
<item id="altText_pubProperty">Public プロパティ</item>
<item id="altText_pubEvent">Public イベント</item>
<item id="altText_pubOperator">Public 演算子</item>
<item id="altText_pubAttachedProperty">Public 添付プロパティ</item>
<item id="altText_pubAttachedEvent">Public 添付イベント</item>
<item id="altText_protConstructor">Protected コンストラクター</item>
<item id="altText_protMethod">Protected メソッド</item>
<item id="altText_protField">Protected フィールド</item>
<item id="altText_protProperty">Protected プロパティ</item>
<item id="altText_protEvent">Protected イベント</item>
<item id="altText_protOperator">Protected 演算子</item>
<item id="altText_protAttachedProperty">Protected 添付プロパティ</item>
<item id="altText_protAttachedEvent">Protected 添付イベント</item>
<item id="altText_privConstructor">Private コンストラクター</item>
<item id="altText_privMethod">Private メソッド</item>
<item id="altText_privField">Private フィールド</item>
<item id="altText_privProperty">Private プロパティ</item>
<item id="altText_privEvent">Private イベント</item>
<item id="altText_privOperator">Private 演算子</item>
<item id="altText_privtAttachedProperty">Private 添付プロパティ</item>
<item id="altText_privAttachedEvent">Private 添付イベント</item>
<item id="altText_static">静的メンバー</item>
<item id="altText_pubextension">Public 拡張メソッド</item>
<item id="altText_protextension">Protected 拡張メソッド</item>
<item id="altText_privextension">Private 拡張メソッド</item>
<item id="altText_CompactFramework">.NET Compact Frameworkによってサポートされています。</item>
<item id="altText_XNAFramework">XNA Frameworkによってサポートされています。</item>
<item id="altText_SilverlightMobile"><include item="silverlight_mobile" />によってサポートされています。</item>
<item id="altText_ExplicitInterface">明示的なインターフェイスの実装</item>
<item id="altText_CodeExample">Code example</item>
<item id="boilerplate_seeAlsoNamespaceLink">{0} 名前空間</item>
<item id="boilerplate_seeAlsoTypeLink">{0} <include item="text_{1}Upper" /></item>
<item id="boilerplate_seeAlsoMembersLink">{0} メンバー</item>
<item id="boilerplate_seeAlsoOverloadLink">{0} オーバーロード</item>
<item id="boilerplate_requirementsNamespace">
<strong>名前空間:</strong>
</item>
<item id="boilerplate_requirementsPlatforms">
<strong>プラットフォーム:</strong> {0}
</item>
<item id="boilerplate_requirementsAssemblies">
<strong>アセンブリ:</strong>
</item>
<item id="boilerplate_requirementsAssemblyLabel">
<strong>アセンブリ:</strong>
</item>
<item id="assemblyNameAndModule">{0} (in {1}.{2}) バージョン: {3}</item>
<item id="boilerplate_requirementsAssembly">
<strong>アセンブリ:</strong> {0} (in {1}.dll)
</item>
<!-- Used for Version Information Section -->
<item id="supportedIn_1">サポートされるバージョン: {0}</item>
<item id="supportedIn_2">サポートされるバージョン: {0}, {1}</item>
<item id="supportedIn_3">サポートされるバージョン: {0}, {1}, {2}</item>
<item id="supportedIn_4">サポートされるバージョン: {0}, {1}, {2}, {3}</item>
<item id="supportedIn_5">サポートされるバージョン: {0}, {1}, {2}, {3}, {4}</item>
<item id="supportedIn_6">サポートされるバージョン: {0}, {1}, {2}, {3}, {4}, {5}</item>
<item id="supportedIn_7">サポートされるバージョン: {0}, {1}, {2}, {3}, {4}, {5}, {6}</item>
<item id="obsoleteWarning">廃止予定になった (コンパイル時警告) バージョン: {0}</item>
<item id="obsoleteError">廃止された (コンパイル不可) バージョン: {0}</item>
<!-- APTCA Boilerplate text -->
<item id="boilerplate_aptca">直前の呼び出し元に対する完全な信頼。このメンバーは、部分信頼コードからは使えません。詳細は、<a href="http://msdn.microsoft.com/ja-jp/library/8skskf63.aspx" target="_blank">部分信頼コードからのライブラリの使用</a>を参照してください。</item>
<!-- Variance boilerplate text -->
<item id="text_covariant">この型パラメーターは共変です。つまり、指定した型か、その型から派生した任意の型が使えます。</item>
<item id="text_contravariant">この型パラメーターは反変です。つまり、指定した型か、その型が継承する任意の型が使えます。</item>
<item id="text_variance">共変と反変についての詳細は、<a href="http://msdn.microsoft.com/ja-jp/library/ee207183.aspx" target="_blank">共変性と反変性 (C# および Visual Basic)</a>を参照してください。</item>
<!-- Non CLS Compliant boilerplate text-->
<item id="boilerplate_NotClsCompliant">このAPIはCLS準拠ではありません。</item>
<item id="boilerplate_AltClsCompliant">CLS準拠の代替は{0}です。</item>
<!-- Security Critical Boilerplate text-->
<item id="boilerplate_typeSecurityCritical">この型は SecurityCriticalAttribute 属性を持っているため、.NET Framework for Silverlight クラスライブラリ内のみでしか使えないように制限されています。アプリケーションコードでこの型のメンバーを使うと、MethodAccessExceptionが投げられます。</item>
<item id="boilerplate_memberSecurityCritical">このメンバーは SecurityCriticalAttribute 属性を持っているため、.NET Framework for Silverlight クラスライブラリ内のみでしか使えないように制限されています。アプリケーションコードでこのメンバーを使うと、MethodAccessExceptionが投げられます。</item>
<item id="text_securityCritical">[セキュリティ上の重要事項] </item>
<!-- Overload page boilerplate -->
<item id="boilerplate_overloadSummary">このメンバーはオーバーロードされています。構文、使用法、例を含むこのメンバーについての完全な情報は、オーバーロード一覧の名前をクリックしてください。</item>
<!-- Platforms Information and Platform Notes -->
<item id="boilerplate_systemRequirementsLink">
<p><include item="netfw" /><include item="netcfw" />では、各プラットフォームのすべてのバージョンはサポートしていません。サポートしているバージョンについては、<a href="http://msdn.microsoft.com/ja-jp/library/8z6watww.aspx" target="_blank">.NET Framework システム要件</a>を参照してください。</p>
</item>
<!-- Platforms boilerplate for Silverlight mref builds -->
<item id="boilerplate_silverlightPlatforms">
<include item="silverlight" />によってサポートされているOSとブラウザーの詳細は、<a href="http://msdn.microsoft.com/ja-jp/library/dd229102.aspx" target="_blank">サポートされているオペレーティング システムとブラウザー</a>を参照してください。
</item>
<item id="Win95">Windows 95</item>
<item id="Win98Se">Windows 98 Second Edition</item>
<item id="WinNT4">Windows NT 4.0</item>
<item id="WinNT4Svr">Windows NT Server 4.0</item>
<item id="WinNT4Wks">Windows NT Workstation 4.0</item>
<item id="Win2kFamily">Windows 2000</item>
<item id="Win2kProfessional">Windows 2000 Professional</item>
<item id="Win2kServer">Windows 2000 Server</item>
<item id="Win2kDatacenter">Windows 2000 Advanced Server</item>
<item id="WinXPPersonal">Windows XP Home Edition</item>
<item id="WinXPPro">Windows XP Professional x64 Edition</item>
<item id="WinXPSvr"><include item="WinSvr2003" /></item>
<item id="WinXpTablet">Windows XP Tablet PC Edition</item>
<item id="WinXpEmbedded">Windows XP Embedded</item>
<item id="ECMACLI">共通言語基盤(CLI)標準</item>
<item id="MSTV">Microsoft TV</item>
<item id="Win9xFamily"><include item="Win95" />, <include item="Win98" />, <include item="Win98Se" />, <include item="WinME" /></item>
<item id="WinNt4Family"><include item="WinNT4" /></item>
<item id="WinXpFamily"><include item="WinXPPersonal" />, <include item="WinXPPro" />, <include item="WinXPSvr" /></item>
<item id="WinCE"><include item="WindowsCE" /></item>
<item id="Win2K"><include item="WinSvr2000" /></item>
<item id="Win2KSvr"><include item="Win2kServer" /></item>
<item id="Win2KADC"><include item="Win2kDatacenter" /></item>
<item id="WinNt4Server"><include item="WinNT4Svr" /></item>
<item id="WinNt4Workstation"><include item="WinNT4Wks" /></item>
<item id="Win2kAdvanced"><include item="Win2kDatacenter" /></item>
<item id="Win2kServerApplianceKit" />
<item id="WinXpHome"><include item="WinXPPersonal" /></item>
<item id="WinXpProfessional"><include item="WinXPPro" /></item>
<item id="Win2003Server"><include item="WinXPSvr" /></item>
<item id="NETCF"><include item="PocketPC" />, <include item="SmartPhone" />, <include item="WindowsCE" /></item>
<item id="XNA"><include item="Xbox360" />, <include item="Zune" /></item>
<!-- Platform names that appear in the Platforms section on mref type and member pages. The id values must be
in sync with the platform/@name values used in the manifold platformFilters.xml filter files. These
values are also used in <platformNotes>
-->
<item id="Win98">Windows 98</item>
<item id="WinME">Windows Millennium Edition</item>
<item id="WinSvr2000">Windows Server 2000 SP4</item>
<item id="WinXPPro64">Windows XP Professional x64 Edition</item>
<item id="WinXP">Windows XP SP3</item>
<item id="WindowsCE">Windows CE</item>
<item id="PocketPC">Windows Mobile for Pocket PC</item>
<item id="SmartPhone">Windows Mobile for Smartphone</item>
<item id="WinSvr2003">Windows Server 2003</item>
<item id="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>
<!-- Framework ids:
These shared content item strings are used for the headings in the Version Information section
These ids must be in sync with the ids used in the config file for VersionBuilder.
-->
<item id="netfw">.NET Framework</item>
<item id="netcfw">.NET Compact Framework</item>
<item id="xnafw">XNA Framework</item>
<item id="silverlight">Silverlight</item>
<item id="silverlight_mobile">Silverlight for Windows Phone</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>
<item id="netfw20_1">2.0 SP1</item>
<item id="netfw20">2.0</item>
<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="silverlight10">1.0</item>
<item id="silverlight20">2.0</item>
<item id="silverlight_v3">3.0</item>
<item id="silverlight_v4">4.0</item>
<item id="silverlight_mobile_v1">Windows Phone OS 7.0</item>
<!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML -->
<item id="boilerplate_xamlXmlnsRequirements"><strong>XAML用XMLNS:</strong> {0}</item>
<item id="boilerplate_unmappedXamlXmlns">xmlnsにマップされていません。</item>
<item id="boilerplate_secondaryFrameworkOverride"><br /><br />In <include item="{0}" />, このメンバーは{1}でオーバーライドされています。</item>
<item id="boilerplate_secondaryFrameworkInherited"><br /><br />In <include item="{0}" /> <include item="{1}" />, このメンバーは、{2}{3}{4}から継承されます。</item>
<item id="boilerplate_secondaryFrameworkMember"><br /><br />In <include item="{0}" /> <include item="{1}" />, このメンバーは、{2}です。</item>
<item id="boilerplate_useBaseSummary">このメンバーは{0}をオーバーライドしています。</item>
<item id="boilerplate_useBaseSee">{0}を参照してください。</item>
<item id="boilerplate_useBase">このメンバーは{0}をオーバーライドします。より完全なドキュメントはそのトピックで有効です。</item>
<item id="boilerplate_flagsSummary">この列挙体には、メンバーの値のビットごとの組み合わせを可能にする{0}属性があります。</item>
<!-- Contracts -->
<item id="contracts_PureMethod">このメソッドは純粋です</item>
<item id="contracts_LearnMore">契約についてもっと学ぶ</item>
<item id="contracts_Description">説明: </item>
<item id="contracts_InheritedFrom">継承: </item>
<item id="contracts_Exception">例外: </item>
<!-- Show Missing Component messages -->
<item id="SMCAutoDocConstructor"><referenceLink target="T:{0}" />クラスの新しいインスタンスを初期化します</item>
<item id="SMCAutoDocStaticConstructor"><referenceLink target="T:{0}" />クラスの静的フィールドを初期化します</item>
<item id="SMCAutoDocDispose"><referenceLink target="T:{0}" />によって使われているすべてのリソースを解放します</item>
<item id="SMCAutoDocDisposeBool"><referenceLink target="T:{0}" />によって使われているアンマネージリソースを解放し、オプションでマネージリソースも解放します。</item>
<item id="SMCAutoDocDisposeParam">マネージリソースとアンマネージリソースの両方を解放する場合はtrue、アンマネージリソースのみを解放する場合はfalse</item>
<item id="SMCMissingTag"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">["{1}"に対する&lt;{0}&gt;がありません]</p></item>
<item id="SMCMissingParamTag"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">["{2}"に対する&lt;{0} name="{1}"/&gt;がありません</p></item>
<item id="SMCMissingIncludeTarget"><p style="color: #dc143c; font-size: 8.5pt; font-weight: bold;">['{0}'で使われている&lt;include&gt;ターゲットドキュメントがありません。File: '{1}' Path: '{2}']</p></item>
<!-- View Source link text -->
<item id="sourceCodeLinkText">View Source</item>
<item id="sourceCodeLinkTitle">View the source code</item>
</content>

View File

@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Media file path -->
<item id="mediaPath">media/{0}</item>
<!-- Topic title -->
<item id="boilerplate_pageTitle">{0}</item>
<item id="header"><span class="introStyle"></span></item>
<!-- Alert titles -->
<item id="alert_title_tip">ヒント</item>
<item id="alert_title_caution">注意</item>
<item id="alert_title_security">セキュリティ メモ</item>
<item id="alert_title_note">メモ</item>
<item id="alert_title_important">重要</item>
<item id="alert_title_visualBasic">Visual Basic メモ</item>
<item id="alert_title_visualC#">C# メモ</item>
<item id="alert_title_visualC++">C++ メモ</item>
<item id="alert_title_visualJ#">J# メモ</item>
<!-- Alert alt text -->
<item id="alert_altText_tip">ヒント</item>
<item id="alert_altText_caution">注意 メモ</item>
<item id="alert_altText_security">セキュリティ メモ</item>
<item id="alert_altText_note">メモ</item>
<item id="alert_altText_important">重要 メモ</item>
<item id="alert_altText_visualBasic">Visual Basic メモ</item>
<item id="alert_altText_visualC#">C# メモ</item>
<item id="alert_altText_visualC++">C++ メモ</item>
<item id="alert_altText_visualJ#">J# メモ</item>
<!-- Section titles -->
<item id="title_remarks">解説</item>
<item id="title_changeHistory">変更履歴</item>
<item id="title_events">イベント</item>
<item id="title_exceptions">例外</item>
<item id="title_contracts">契約</item>
<item id="title_setter">Set</item>
<item id="title_getter">Get</item>
<item id="title_seeAlso_tasks">タスク</item>
<item id="title_seeAlso_reference">参照</item>
<item id="title_seeAlso_concepts">コンセプト</item>
<item id="title_seeAlso_otherResources">その他のリソース</item>
<item id="inline_dynamicLink_prefixText">より詳しくは、</item>
<item id="inline_dynamicLink_postfixText">を参照してください。</item>
<item id="inline_dynamicLink_separatorText"></item>
<!-- Development language and code snippet titles for languages without a syntax generator -->
<item id="devlang_HTML">HTML</item>
<item id="devlang_PShell">PowerShell</item>
<item id="devlang_Python">Python</item>
<item id="devlang_SQL">SQL</item>
<item id="devlang_VBScript">Visual Basic Script</item>
<item id="devlang_VisualBasicAndCSharp">Visual Basic と C#</item>
<item id="devlang_XML">XML</item>
<!-- Language keywords -->
<item id="devlang_nullKeyword">null参照(Visual Basicでは<span class="keyword">Nothing</span>)</item>
<item id="devlang_staticKeyword"><span class="keyword">static</span> (Visual Basicでは<span class="keyword">Shared</span>)</item>
<item id="devlang_virtualKeyword"><span class="keyword">virtual</span> (Visual Basicでは<span class="keyword">Overridable</span>)</item>
<item id="devlang_trueKeyword"><span class="keyword">true</span> (Visual Basicでは<span class="keyword">True</span>)</item>
<item id="devlang_falseKeyword"><span class="keyword">false</span> (Visual Basicでは<span class="keyword">False</span>)</item>
<item id="devlang_abstractKeyword"><span class="keyword">abstract</span> (Visual Basicでは<span class="keyword">MustInherit</span>)</item>
<item id="devlang_sealedKeyword"><span class="keyword">sealed</span> (Visual Basicでは<span class="keyword">NotInheritable</span>)</item>
<item id="devlang_asyncKeyword"><span class="keyword">async</span> (Visual Basicでは<span class="keyword">Async</span>)</item>
<item id="devlang_awaitKeyword"><span class="keyword">await</span> (Visual Basicでは<span class="keyword">Await</span>)</item>
<item id="devlang_asyncAwaitKeyword"><span class="keyword">async</span>/<span class="keyword">await</span> (Visual Basicでは<span class="keyword">Async</span>/<span class="keyword">Await</span>)</item>
<!-- Back to Top link text -->
<item id="top">トップ</item>
</content>

View File

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Translations provided by Sergey Zhurikhin -->
<!-- Section titles -->
<item id="title_inThisSection">В этом подразделе</item>
<item id="title_buildInstructions">Компиляция кода</item>
<item id="title_nextSteps">Следующие шаги</item>
<item id="title_requirements">Требования</item>
<item id="title_relatedSections">Связанные разделы</item>
<item id="title_relatedTopics">См. также</item>
<item id="title_syntax">Синтаксис</item>
<item id="title_parameters">Параметры</item>
<item id="title_returnValue">Возвращаемое значение</item>
<item id="title_attributesAndElements">Атрибуты и элементы</item>
<item id="title_attributes">Атрибуты</item>
<item id="title_childElement">Дочерние элементы</item>
<item id="title_parentElement">Родительские элементы</item>
<item id="title_elementInformation">Сведения об элементе</item>
<item id="title_textValue">Текстовое значение</item>
<item id="title_dotNetFrameworkEquivalent">Эквивалент в платформе .NET Framework</item>
<item id="title_prerequisites">Предварительные условия</item>
<item id="title_robustProgramming">Отказоустойчивость</item>
<item id="title_securitySection">Безопасность</item>
<item id="title_externalResources">Внешние ресурсы</item>
<item id="title_demonstrates">Демонстрация</item>
<item id="title_appliesTo">Применимо к</item>
<item id="title_conclusion">Выводы</item>
<item id="title_background">Предпосылки</item>
<item id="title_whatsNew">Что нового</item>
<item id="title_reference">Ссылки</item>
<item id="title_errorMessage">Сообщение об ошибке</item>
<item id="title_example">Пример</item>
<!-- AutoOutline boilerplate -->
<item id="boilerplate_autoOutlineTopLevelIntro">Эта тема содержит следующие разделы:</item>
<item id="boilerplate_autoOutlineSubsectionIntro">В этом разделе содержатся следующие подразделы:</item>
<!-- Resolve the autoOutline token -->
<item id="autoOutline">
<autoOutline />
</item>
<!-- Copyright notice. {0} = Copyright text, {1} = Year(s), {2} = Holder(s) -->
<item id="boilerplate_copyrightNotice">
<p>{0} &#169;{1}{2}. Все права защищены.</p>
</item>
<!-- Glossary related entries -->
<item id="text_relatedEntries">См. также:</item>
</content>

View File

@ -0,0 +1,483 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Translations provided by Sergey Zhurikhin -->
<!-- Note text -->
<item id="notDocumented">Это API не документировано.</item>
<item id="preliminaryText">Это предварительная документация, которая в будущем может измениться.</item>
<!-- Inserted boilerplate -->
<item id="definedBy">(Определяется {0}.)</item>
<item id="inheritedFrom">(Унаследован от {0}.)</item>
<item id="overridesMember">(Переопределяет {0}.)</item>
<item id="locationInformation">Сборка: {0} (Модуль: {1})</item>
<item id="derivedClasses">Производные классы</item>
<item id="explicitInterfaceImplementation">Явные реализации интерфейсов</item>
<item id="returnValue">Возвращаемое значение</item>
<item id="propertyValue">Значение свойства</item>
<item id="fieldValue">Значение поля</item>
<item id="example">Пример</item>
<!-- Topic titles -->
<item id="topicTitle_root">Пространства имён</item>
<item id="topicTitle_namespace">{0} - пространство имён</item>
<item id="topicTitle_namespaceGroup">{0} - пространства имён</item>
<item id="topicTitle_class">{0} - класс</item>
<item id="topicTitle_structure">{0} - структура</item>
<item id="topicTitle_interface">{0} - интерфейс</item>
<item id="topicTitle_derivedTypeList">{0} - производные классы</item>
<item id="topicTitle_delegate">{0} - делегат</item>
<item id="topicTitle_enumeration">{0} - перечисление</item>
<item id="topicTitle_field">{0} - поле</item>
<item id="topicTitle_method">{0}{1} - метод</item>
<item id="topicTitle_constructor">{0}{1} - конструктор</item>
<item id="topicTitle_property">{0}{1} - свойство</item>
<item id="topicTitle_event">{0} - событие</item>
<!-- Title for operator members -->
<item id="topicTitle_operator">{0}{1} - оператор</item>
<!-- Title for op_explicit and op_implicit members -->
<item id="topicTitle_typeConversion">{0} - преобразование {1}</item>
<!-- Title for overload op_explicit and op_implicit topics -->
<item id="topicTitle_conversionOperator">{0} - операторы преобразования</item>
<item id="topicTitle_attachedProperty">{0} - вложенное свойство</item>
<item id="topicTitle_attachedEvent">{0} - вложенное событие</item>
<item id="generic"> generic</item>
<item id="topicTitle_generic_class">{0} - универсальный класс</item>
<item id="topicTitle_generic_structure">{0} - универсальная структура</item>
<item id="topicTitle_generic_interface">{0} - универсальный интерфейс</item>
<item id="topicTitle_generic_delegate">{0} - универсальный делегат</item>
<item id="topicTitle_generic_method">{0}{1} - универсальный метод</item>
<!-- List topic titles -->
<item id="topicTitle_fields">{0} - поля</item>
<item id="topicTitle_methods">{0} - методы</item>
<item id="topicTitle_enumMembers">Члены</item>
<!-- Title for operator list topic that has [operators + no type conversions] -->
<item id="topicTitle_operators">{0} - операторы</item>
<!-- Title for operator list topic that has [operators + type conversions] -->
<item id="topicTitle_operatorsAndTypeConversions">{0} - операторы и преобразования типов</item>
<!-- Title for operator list topic that has [no operators + type conversions] -->
<item id="topicTitle_typeConversions">{0} - преобразования типов</item>
<item id="topicTitle_constructors">{0} - конструкторы</item>
<item id="topicTitle_properties">{0} - свойства</item>
<item id="topicTitle_events">{0} - события</item>
<item id="topicTitle_attachedProperties">{0} - вложенные свойства</item>
<item id="topicTitle_attachedEvents">{0} - вложенные события</item>
<item id="topicTitle_members">{0} - члены</item>
<!-- Index entries -->
<item id="indexEntry_root">Пространства имён</item>
<item id="indexEntry_namespace">{0} - пространство имён</item>
<item id="indexEntry_class">{0} - класс</item>
<item id="indexEntry_structure">{0} - структура</item>
<item id="indexEntry_interface">{0} - интерфейс</item>
<item id="indexEntry_delegate">{0} - делегат</item>
<item id="indexEntry_enumeration">{0} - перечисление</item>
<item id="indexEntry_enumerationMember">{0} - член перечисления</item>
<item id="indexEntry_aboutType">{0}, о {0}</item>
<item id="indexEntry_derivedTypes">{0}, производные типы</item>
<item id="indexEntry_members">{0}, все члены</item>
<item id="indexEntry_methods">{0}, методы</item>
<!-- Index entry for operator list topic that has [operators + no type conversions] -->
<item id="indexEntry_operators">{0}, операторы</item>
<!-- Index entry for operator list topic that has [operators + type conversions] -->
<item id="indexEntry_operatorsAndTypeConversions">{0}, операторы и преобразования типов</item>
<!-- Index entry for operator list topic that has [no operators + type conversions] -->
<item id="indexEntry_typeConversions">{0}, преобразования типов</item>
<!-- Index entries for op_explicit and op_implicit members -->
<item id="indexEntry_conversionOperator">{0} преобразования</item>
<item id="indexEntry_properties">{0}, свойства</item>
<item id="indexEntry_fields">{0}, поля</item>
<item id="indexEntry_events">{0}, события</item>
<item id="indexEntry_attachedProperties">{0}, вложенные свойства</item>
<item id="indexEntry_attachedEvents">{0}, вложенные события</item>
<item id="indexEntry_constructors">{0}, конструкторы</item>
<item id="indexEntry_constructor">{0}, конструктор</item>
<item id="indexEntry_constructorType">{0} конструктор</item>
<item id="indexEntry_method">{0} метод</item>
<item id="indexEntry_property">{0} свойство</item>
<item id="indexEntry_event">{0} событие</item>
<item id="indexEntry_field">{0} поле</item>
<item id="indexEntry_operator">{0} оператор</item>
<item id="indexEntry_attachedProperty">{0} вложенное свойство</item>
<item id="indexEntry_attachedEvent">{0} вложенное событие</item>
<item id="indexEntry_methodExplicit">{0} явно реализованный метод</item>
<item id="indexEntry_propertyExplicit">{0} явно реализованное свойство</item>
<item id="indexEntry_eventExplicit">{0} явно реализованное событие</item>
<item id="indexEntry_fieldExplicit">{0} явно реализованное поле</item>
<!-- Section titles -->
<item id="title_syntax">Синтаксис</item>
<item id="title_templates">Параметры типа</item>
<item id="title_parameters">Параметры</item>
<item id="title_value">Значение</item>
<item id="title_delegateValue">Возвращаемое значение</item>
<item id="title_methodValue">Возвращаемое значение</item>
<item id="title_propertyValue">Значение свойства</item>
<item id="title_fieldValue">Значение поля</item>
<item id="title_implements">Реализации</item>
<item id="title_examples">Примеры</item>
<item id="title_threadSafety">Потокобезопасность</item>
<item id="title_permissions">Безопасность платформы .NET Framework</item>
<item id="title_namespaces">Пространства имён</item>
<item id="title_types">Типы</item>
<item id="title_family">Иерархия наследования</item>
<item id="title_versions">Сведения о версии</item>
<item id="title_platforms">Платформы</item>
<item id="title_relatedTopics">См. также</item>
<item id="title_extensionUsage">Примечание об использовании</item>
<item id="text_extensionUsage">В Visual Basic и C# этот метод можно вызывать как метод экземпляра для любого объекта типа {0}. При вызове метода для экземпляра следует опускать первый параметр. Дополнительные сведения см. в разделе <a href="http://msdn.microsoft.com/ru-ru/library/bb384936.aspx" target="_blank">Методы расширения (Visual Basic)</a> или <a href="http://msdn.microsoft.com/ru-ru/library/bb383977.aspx" target="_blank">Методы расширения (Руководство по программированию в C#)</a>.</item>
<!-- Table headers -->
<item id="header_namespaceName">Пространство имён</item>
<item id="header_namespaceDescription">Описание</item>
<item id="header_typeIcon">Значок</item>
<item id="header_className">Класс</item>
<item id="header_structureName">Структура</item>
<item id="header_interfaceName">Интерфейс</item>
<item id="header_delegateName">Делегат</item>
<item id="header_enumerationName">Перечисление</item>
<item id="header_typeName">Имя</item>
<item id="header_typeDescription">Описание</item>
<item id="header_memberIcon">Значок</item>
<item id="header_memberName">Имя члена</item>
<item id="header_memberValue">Значение</item>
<item id="header_memberDescription">Описание</item>
<item id="header_eventTypeHeader">Тип события</item>
<item id="header_eventReasonHeader">Причина события</item>
<item id="header_exceptionName">Исключение</item>
<item id="header_exceptionCondition">Условие</item>
<item id="header_permissionName">Разрешение</item>
<item id="header_permissionDescription">Описание</item>
<item id="header_requiresName">Предусловия</item>
<item id="header_ensuresName">Постусловия</item>
<item id="header_ensuresOnThrowName">Постусловия при возникновении исключений</item>
<item id="header_invariantsName">Инварианты</item>
<!-- Member list table titles -->
<item id="tableTitle_namespace">Пространства имён</item>
<item id="tableTitle_class">Классы</item>
<item id="tableTitle_structure">Структуры</item>
<item id="tableTitle_interface">Интерфейсы</item>
<item id="tableTitle_delegate">Делегаты</item>
<item id="tableTitle_enumeration">Перечисления</item>
<item id="tableTitle_constructor">Конструкторы</item>
<item id="tableTitle_method">Методы</item>
<item id="tableTitle_operator">Операторы</item>
<item id="tableTitle_field">Поля</item>
<item id="tableTitle_property">Свойства</item>
<item id="tableTitle_event">События</item>
<item id="tableTitle_attachedEvent">Вложенные события</item>
<item id="tableTitle_attachedProperty">Вложенные свойства</item>
<item id="tableTitle_explicitInterfaceImplementation">Явные&#160;реализации&#160;интерфейсов</item>
<item id="tableTitle_overloadMembers">Список&#160;перегрузок</item>
<item id="tableTitle_extensionMethod">Методы&#160;расширения</item>
<!-- Thread Safety -->
<item id="text_threadSafety">Потокобезопасность</item>
<item id="boilerplate_threadSafety">Любые открытые члены этого типа, объявленные как <include item="devlang_staticKeyword"/>, являются потокобезопасными. Потокобезопасность членов экземпляров не гарантируется.</item>
<item id="text_staticThreadSafe">Статические члены этого типа, являются безопасными для многопоточных операций. </item>
<item id="text_staticNotThreadSafe">Статические члены этого типа, являются небезопасными для многопоточных операций. </item>
<item id="text_instanceThreadSafe">Члены экземпляра этого типа, являются безопасными для многопоточных операций. </item>
<item id="text_instanceNotThreadSafe">Члены экземпляра этого типа, являются небезопасными для многопоточных операций. </item>
<item id="text_NotesForImplementers">Примечания для реализующих объектов</item>
<item id="text_NotesForCallers">Примечания для вызывающих объектов</item>
<item id="text_NotesForInheritors">Примечания для наследников</item>
<!-- Boilerplate intro to member list tables -->
<item id="genericExposedMembersTableText">Универсальный тип {0} предоставляет следующие члены.</item>
<item id="exposedMembersTableText">Тип {0} предоставляет следующие члены.</item>
<item id="dependencyPropertyInfoHeading">Информация о свойстве зависимостей</item>
<item id="routedEventInfoHeading">Информация о перенаправленном событии</item>
<item id="Overloaded">Перегружен. </item>
<item id="defaultNamespace">(пространство имён по-умолчанию)</item>
<item id="typeLink">Тип:&#160;{0}</item>
<!-- First line of a param or retval description is a link to the type of the param or retval.
This boilerplate is used if the type is a type parameter of the member's type. -->
<item id="typeLinkToTypeParameter">**{0}** - параметр типа {1}.</item>
<!-- Internal only boilerplate text -->
<item id="internalOnly">Данный API разработан для поддержки инфраструктуры .NET Framework и не предназначен для использования непосредственно из кода.</item>
<item id="infraStructure">Инфраструктура. </item>
<!-- Obsolete boilerplate text -->
<item id="boilerplate_obsoleteShort">**Устарело. **</item>
<item id="boilerplate_obsoleteLong">**Примечание: Данный API устарел.**</item>
<!-- Group and SubGroup text -->
<item id="text_classUpper">Класс</item>
<item id="text_structureUpper">Структура</item>
<item id="text_interfaceUpper">Интерфейс</item>
<item id="text_delegateUpper">Делегат</item>
<item id="text_enumerationUpper">Перечисление</item>
<item id="text_membersUpper">Члены</item>
<item id="text_methodsUpper">Методы</item>
<item id="text_propertiesUpper">Свойства</item>
<item id="text_eventsUpper">События</item>
<item id="text_fieldsUpper">Поля</item>
<item id="text_operatorsUpper">Операторы</item>
<item id="text_attachedPropertiesUpper">Вложенные свойства</item>
<item id="text_attachedEventsUpper">Вложенные события</item>
<!-- Alt text for images -->
<item id="altText_pubClass">Открытый класс</item>
<item id="altText_pubStructure">Открытая структура</item>
<item id="altText_pubInterface">Открытый интерфейс</item>
<item id="altText_pubDelegate">Открытый делегат</item>
<item id="altText_pubEnumeration">Открытое перечисление</item>
<item id="altText_protClass">Защищённый класс</item>
<item id="altText_protStructure">Защищённая структура</item>
<item id="altText_protInterface">Защищённый интерфейс</item>
<item id="altText_protDelegate">Защищённый делегат</item>
<item id="altText_protEnumeration">Защищённое перечисление</item>
<item id="altText_privClass">Закрытый класс</item>
<item id="altText_privStructure">Закрытая структура</item>
<item id="altText_privInterface">Закрытый интерфейс</item>
<item id="altText_privDelegate">Закрытый делегат</item>
<item id="altText_privEnumeration">Закрытое перечисление</item>
<item id="altText_pubConstructor">Открытый конструктор</item>
<item id="altText_pubMethod">Открытый метод</item>
<item id="altText_pubField">Открытое поле</item>
<item id="altText_pubProperty">Открытое свойство</item>
<item id="altText_pubEvent">Открытое событие</item>
<item id="altText_pubOperator">Открытый оператор</item>
<item id="altText_pubAttachedProperty">Открытое вложенное свойство</item>
<item id="altText_pubAttachedEvent">Открытое вложенное событие</item>
<item id="altText_protConstructor">Защищённый конструктор</item>
<item id="altText_protMethod">Защищённый метод</item>
<item id="altText_protField">Защищённое поле</item>
<item id="altText_protProperty">Защищённое свойство</item>
<item id="altText_protEvent">Защищённое событие</item>
<item id="altText_protOperator">Защищённый оператор</item>
<item id="altText_protAttachedProperty">Защищённое вложенное свойство</item>
<item id="altText_protAttachedEvent">Защищённое вложенное событие</item>
<item id="altText_privConstructor">Закрытый конструктор</item>
<item id="altText_privMethod">Закрытый метод</item>
<item id="altText_privField">Закрытое поле</item>
<item id="altText_privProperty">Закрытое свойство</item>
<item id="altText_privEvent">Закрытое событие</item>
<item id="altText_privOperator">Закрытый оператор</item>
<item id="altText_privtAttachedProperty">Закрытое вложенное свойство</item>
<item id="altText_privAttachedEvent">Закрытое вложенное событие</item>
<item id="altText_static">Статический член</item>
<item id="altText_pubextension">Открытый метод расширения</item>
<item id="altText_protextension">Защищённый метод расширения</item>
<item id="altText_privextension">Закрытый метод расширения</item>
<item id="altText_CompactFramework">Поддерживается платформой .NET Compact Framework</item>
<item id="altText_XNAFramework">Поддерживается платформой XNA Framework</item>
<item id="altText_SilverlightMobile">Поддерживается платформой <include item="silverlight_mobile"/></item>
<item id="altText_ExplicitInterface">Явные реализации интерфейса</item>
<item id="altText_CodeExample">Пример кода</item>
<item id="boilerplate_seeAlsoNamespaceLink">{0} - пространство имён</item>
<item id="boilerplate_seeAlsoTypeLink">{0} - <include item="text_{1}Upper"/></item>
<item id="boilerplate_seeAlsoMembersLink">{0} - члены</item>
<item id="boilerplate_seeAlsoOverloadLink">{0} - перегрузка</item>
<item id="boilerplate_requirementsNamespace">**Пространство имён:**</item>
<item id="boilerplate_requirementsPlatforms">**Платформы:** {0}</item>
<item id="boilerplate_requirementsAssemblies">**Сборки:**</item>
<item id="boilerplate_requirementsAssemblyLabel">**Сборка:**</item>
<item id="assemblyNameAndModule">{0} (в {1}.{2}) Версия: {3}</item>
<item id="boilerplate_requirementsAssembly">**Сборка:** {0} (в {1}.dll)</item>
<!-- Used for Version Information Section -->
<item id="supportedIn_1">Поддерживается в: {0}</item>
<item id="supportedIn_2">Поддерживается в: {0}, {1}</item>
<item id="supportedIn_3">Поддерживается в: {0}, {1}, {2}</item>
<item id="supportedIn_4">Поддерживается в: {0}, {1}, {2}, {3}</item>
<item id="supportedIn_5">Поддерживается в: {0}, {1}, {2}, {3}, {4}</item>
<item id="supportedIn_6">Поддерживается в: {0}, {1}, {2}, {3}, {4}, {5}</item>
<item id="supportedIn_7">Поддерживается в: {0}, {1}, {2}, {3}, {4}, {5}, {6}</item>
<item id="obsoleteWarning">Устарело (предупреждение компилятора) в {0}</item>
<item id="obsoleteError">Устарело (не компилируется) в {0} и более поздних версиях</item>
<!-- APTCA Boilerplate text -->
<item id="boilerplate_aptca">Полное доверие для модуля немедленного вызова. Данный элемент не может использоваться кодом с частичным доверием. Дополнительные сведения см. в разделе <a href="http://msdn.microsoft.com/ru-ru/library/8skskf63.aspx" target="_blank">Использование библиотек из не вполне надежного кода</a>.</item>
<!-- Variance boilerplate text -->
<item id="text_covariant">Этот параметр типа является ковариантным. Это означает, что можно использовать либо указанный тип, либо более производный тип. </item>
<item id="text_contravariant">Этот параметр типа является контрвариантным. Это означает, что можно использовать либо указанный тип, либо менее производный тип. </item>
<item id="text_variance">Дополнительные сведения о ковариации и контрвариации см. в разделе <a href="http://msdn.microsoft.com/ru-ru/library/ee207183.aspx" target="_blank">Ковариация и контравариация в универсальных шаблонах</a>.</item>
<!-- Non CLS Compliant boilerplate text-->
<item id="boilerplate_NotClsCompliant">Этот интерфейс API CLS-несовместим.</item>
<item id="boilerplate_AltClsCompliant">CLS-совместимая альтернатива - {0}.</item>
<!-- Security Critical Boilerplate text-->
<item id="boilerplate_typeSecurityCritical">Этот тип имеет атрибут SecurityCriticalAttribute, который делает его пригодным только для внутреннего использования библиотекой классов .NET Framework для Silverlight. При попытке обращения к любому члену этого типа из прикладного кода вызывается исключение MethodAccessException.</item>
<item id="boilerplate_memberSecurityCritical">Этот член имеет атрибут SecurityCriticalAttribute, который делает его пригодным только для внутреннего использования библиотекой классов .NET Framework для Silverlight. При попытке обращения к этому члену из прикладного кода вызывается исключение MethodAccessException.</item>
<item id="text_securityCritical">[ВАЖНЫЙ ЭЛЕМЕНТ БЕЗОПАСНОСТИ] </item>
<!-- Overload page boilerplate -->
<item id="boilerplate_overloadSummary">Этот член перегружен. Для получения полной информации о данном члене, включая синтаксис, использование и примеры, щелкните имя в списке перегрузок.</item>
<!-- Platforms Information and Platform Notes -->
<item id="boilerplate_systemRequirementsLink">
<p><include item="netfw"/> и <include item="netcfw"/> поддерживают не все версии каждой платформы. Поддерживаемые версии перечислены в разделе <a href="http://msdn.microsoft.com/ru-ru/library/8z6watww.aspx" target="_blank">Требования к системе для .NET Framework</a>.</p>
</item>
<!-- Platforms boilerplate for Silverlight mref builds -->
<item id="boilerplate_silverlightPlatforms">Список операционных систем и браузеров, поддерживаемых <include item="silverlight"/>, см. в разделе <a href="http://msdn.microsoft.com/ru-ru/library/dd229102.aspx" target="_blank">Поддерживаемые операционные системы и браузеры</a>.</item>
<item id="Win95">Windows 95</item>
<item id="Win98Se">Windows 98 Second Edition</item>
<item id="WinNT4">Windows NT 4.0</item>
<item id="WinNT4Svr">Windows NT Server 4.0</item>
<item id="WinNT4Wks">Windows NT Workstation 4.0</item>
<item id="Win2kFamily">Windows 2000</item>
<item id="Win2kProfessional">Windows 2000 Professional</item>
<item id="Win2kServer">Windows 2000 Server</item>
<item id="Win2kDatacenter">Windows 2000 Advanced Server</item>
<item id="WinXPPersonal">Windows XP Home Edition</item>
<item id="WinXPPro">Windows XP Professional x64 Edition</item>
<item id="WinXPSvr"><include item="WinSvr2003"/></item>
<item id="WinXpTablet">Windows XP Tablet PC Edition</item>
<item id="WinXpEmbedded">Windows XP Embedded</item>
<item id="ECMACLI">Common Language Infrastructure (CLI) Standard</item>
<item id="MSTV">Microsoft TV</item>
<item id="Win9xFamily"><include item="Win95"/>, <include item="Win98"/>, <include item="Win98Se"/>, <include item="WinME"/></item>
<item id="WinNt4Family"><include item="WinNT4"/></item>
<item id="WinXpFamily"><include item="WinXPPersonal"/>, <include item="WinXPPro"/>, <include item="WinXPSvr"/></item>
<item id="WinCE"><include item="WindowsCE"/></item>
<item id="Win2K"><include item="WinSvr2000"/></item>
<item id="Win2KSvr"><include item="Win2kServer"/></item>
<item id="Win2KADC"><include item="Win2kDatacenter"/></item>
<item id="WinNt4Server"><include item="WinNT4Svr"/></item>
<item id="WinNt4Workstation"><include item="WinNT4Wks"/></item>
<item id="Win2kAdvanced"><include item="Win2kDatacenter"/></item>
<item id="Win2kServerApplianceKit"></item>
<item id="WinXpHome"><include item="WinXPPersonal"/></item>
<item id="WinXpProfessional"><include item="WinXPPro"/></item>
<item id="Win2003Server"><include item="WinXPSvr"/></item>
<item id="NETCF"><include item="PocketPC"/>, <include item="SmartPhone"/>, <include item="WindowsCE"/></item>
<item id="XNA"><include item="Xbox360"/>, <include item="Zune" /></item>
<!-- Platform names that appear in the Platforms section on mref type and member pages. The id values must be
in sync with the platform/@name values used in the manifold platformFilters.xml filter files. These
values are also used in <platformNotes>
-->
<item id="Win98">Windows 98</item>
<item id="WinME">Windows Millennium Edition</item>
<item id="WinSvr2000">Windows Server 2000 SP4</item>
<item id="WinXPPro64">Windows XP Professional x64 Edition</item>
<item id="WinXP">Windows XP SP3</item>
<item id="WindowsCE">Windows CE</item>
<item id="PocketPC">Windows Mobile for Pocket PC</item>
<item id="SmartPhone">Windows Mobile for Smartphone</item>
<item id="WinSvr2003">Windows Server 2003</item>
<item id="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>
<!-- Framework ids:
These shared content item strings are used for the headings in the Version Information section
These ids must be in sync with the ids used in the config file for VersionBuilder.
-->
<item id="netfw">.NET Framework</item>
<item id="netcfw">.NET Compact Framework</item>
<item id="xnafw">XNA Framework</item>
<item id="silverlight">Silverlight</item>
<item id="silverlight_mobile">Silverlight for Windows Phone</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>
<item id="netfw20_1">2.0 SP1</item>
<item id="netfw20">2.0</item>
<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="silverlight10">1.0</item>
<item id="silverlight20">2.0</item>
<item id="silverlight_v3">3.0</item>
<item id="silverlight_v4">4.0</item>
<item id="silverlight_mobile_v1">Windows Phone OS 7.0</item>
<!-- Used in the Requirements section to display an xmlns URI for apis that can be used in XAML -->
<item id="boilerplate_xamlXmlnsRequirements">**XMLNS для XAML:** {0}</item>
<item id="boilerplate_unmappedXamlXmlns">не имеет соответствия в xmlns.</item>
<item id="boilerplate_secondaryFrameworkOverride"><br /><br />В <include item="{0}"/>, этот член переопределён как {1}.</item>
<item id="boilerplate_secondaryFrameworkInherited"><br /><br />В <include item="{0}"/>&#160;<include item="{1}"/>, этот член унаследован от {2}{3}{4}.</item>
<item id="boilerplate_secondaryFrameworkMember"><br /><br />В <include item="{0}"/>&#160;<include item="{1}"/>, этот метод является {2}.</item>
<item id="boilerplate_useBaseSummary">Этот член переопределяет {0}.</item>
<item id="boilerplate_useBaseSee">См. {0}.</item>
<item id="boilerplate_useBase">Этот член переопределяет {0}; по данной теме может быть доступна более полная документация.</item>
<item id="boilerplate_flagsSummary">Это перечисление имеет атрибут {0}, поддерживающий побитовое соединение составляющих его значений.</item>
<!-- Contracts -->
<item id="contracts_PureMethod">Этот метод является чистым.</item>
<item id="contracts_LearnMore">Узнать больше о контрактах</item>
<item id="contracts_Description">Описание: </item>
<item id="contracts_InheritedFrom">Унаследован от: </item>
<item id="contracts_Exception">Исключение: </item>
<!-- Show Missing Component messages -->
<item id="SMCAutoDocConstructor">Инициализирует новый экземпляр класса <referenceLink target="T:{0}" /></item>
<item id="SMCAutoDocStaticConstructor">Инициализирует статические члены класса <referenceLink target="T:{0}" /></item>
<item id="SMCAutoDocDispose">Освобождает все ресурсы, используемые объектом <referenceLink target="T:{0}" /></item>
<item id="SMCAutoDocDisposeBool">Освобождает неуправляемые ресурсы, используемые объектом <referenceLink target="T:{0}" />, а при необходимости освобождает также управляемые ресурсы</item>
<item id="SMCAutoDocDisposeParam">Значение true позволяет освободить управляемые и неуправляемые ресурсы; значение false позволяет освободить только неуправляемые ресурсы.</item>
<item id="SMCMissingTag">\[&lt;{0}&gt; отсутствует в документации для "{1}"\]</item>
<item id="SMCMissingParamTag">\[&lt;{0} name="{1}"/&gt; отсутствует в документации для "{2}"\]</item>
<item id="SMCMissingIncludeTarget">\[&lt;include&gt; отсутствует в '{0}'. Файл: '{1}' Путь: '{2}'\]</item>
<!-- View Source link text -->
<item id="sourceCodeLinkText">View Source</item>
<item id="sourceCodeLinkTitle">View the source code</item>
</content>

View File

@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- Translations provided by Sergey Zhurikhin -->
<!-- Topic title -->
<item id="boilerplate_pageTitle">{0}</item>
<item id="header"></item>
<!-- Alert titles -->
<item id="alert_title_tip">Подсказка</item>
<item id="alert_title_caution">Внимание</item>
<item id="alert_title_security">Примечание по безопасности</item>
<item id="alert_title_note">Примечание</item>
<item id="alert_title_important">Важно</item>
<item id="alert_title_visualBasic">Примечание для Visual Basic</item>
<item id="alert_title_visualC#">Примечание для C#</item>
<item id="alert_title_visualC++">Примечание для C++</item>
<item id="alert_title_visualJ#">Примечание для J#</item>
<!-- Alert alt text -->
<item id="alert_altText_tip">Подсказка</item>
<item id="alert_altText_caution">Внимание</item>
<item id="alert_altText_security">Примечание по безопасности</item>
<item id="alert_altText_note">Примечание</item>
<item id="alert_altText_important">Важно</item>
<item id="alert_altText_visualBasic">Примечание для Visual Basic</item>
<item id="alert_altText_visualC#">Примечание для C#</item>
<item id="alert_altText_visualC++">Примечание для C++</item>
<item id="alert_altText_visualJ#">Примечание для J#</item>
<!-- Section titles -->
<item id="title_remarks">Заметки</item>
<item id="title_changeHistory">История изменений</item>
<item id="title_events">События</item>
<item id="title_exceptions">Исключения</item>
<item id="title_contracts">Контракты</item>
<item id="title_setter">Set</item>
<item id="title_getter">Get</item>
<item id="title_seeAlso_tasks">Задачи</item>
<item id="title_seeAlso_reference">Ссылки</item>
<item id="title_seeAlso_concepts">Основные понятия</item>
<item id="title_seeAlso_otherResources">Другие ресурсы</item>
<item id="inline_dynamicLink_prefixText">Для получения дополнительной информации см. </item>
<item id="inline_dynamicLink_postfixText">.</item>
<item id="inline_dynamicLink_separatorText"> и </item>
<!-- Development language and code snippet titles for languages without a syntax generator -->
<item id="devlang_HTML">HTML</item>
<item id="devlang_PShell">PowerShell</item>
<item id="devlang_Python">Python</item>
<item id="devlang_SQL">SQL</item>
<item id="devlang_VBScript">Visual Basic Script</item>
<item id="devlang_VisualBasicAndCSharp">VB и C#</item>
<item id="devlang_XML">XML</item>
<!-- language keywords -->
<item id="devlang_nullKeyword">`null` (`Nothing` в Visual Basic)</item>
<item id="devlang_staticKeyword">`static` (`Shared` в Visual Basic)</item>
<item id="devlang_virtualKeyword">`virtual` (`Overridable` в Visual Basic)</item>
<item id="devlang_trueKeyword">`true` (`True` в Visual Basic)</item>
<item id="devlang_falseKeyword">`false` (`False` в Visual Basic)</item>
<item id="devlang_abstractKeyword">`abstract` (`MustInherit` в Visual Basic)</item>
<item id="devlang_sealedKeyword">`sealed` (`NotInheritable` в Visual Basic)</item>
<!-- Back to Top link text -->
<item id="top">В начало страницы</item>
</content>

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
The bibliography feature looks for <cite>name</cite> elements in XML documentation
and <ddue:cite>name</ddue:cite> elements in MAML and automatically generates links
to a bibliography section, which is generated at the bottom of each topic.
To use this feature in MAML you must also add the <ddue:bibliography/> element
somewhere in your topics; preferably, right before the <ddue:relatedTopics> section.
This file is used to describe the entries in the bibliographies for every topic
that is generated. For example, add a remarks section such as the following to
the XMl documentation comments in one of your APIs.
<remarks>
<para>
Sandcastle is a popular download<cite>sandcastle activity</cite>.
</para>
<para>
I expect Sandcastle's popularity<cite>sandcastle activity</cite> to increase
as more community members become aware of its usefulness.
</para>
</remarks>
Then add the following reference element along with any others to this file to
describe those citations.
<reference name="sandcastle activity">
<title>Sandcastle Help File Builder Activity Statistics</title>
<author>Eric Woodruff</author>
<publisher>GitHub.com</publisher>
<link>https://GitHub.com/EWSoftware/SHFB/pulse/monthly</link>
</reference>
Building documentation now will produce your auto-generated reference topic with a
bibliography section near the bottom. Each <cite>name</cite> is replaced in-line
with a hyperlink such as [1], [2], [3], [n]..., linking to the corresponding
entries in the bibliography section.
- The title element is required.
- The author element is required.
- The publisher element is optional.
- The link element is optional.
- Reference names are case-sensitive.
- If a matching reference is not found, the cite element is processed as regular
markup. Currently, the transformations will remove the outer <cite> element but
inner text and content may pass through to the topic.
-->
<bibliography>
<!-- Add <reference> elements here -->
</bibliography>

View File

@ -0,0 +1,5 @@
{@HtmlEncHelpTitle}
{@FooterText}
{@HtmlEncCopyrightInfo}
Send comments on this topic to [{@HtmlEncFeedbackEMailAddress}](mailto:{@UrlEncFeedbackEMailAddress}?Subject={@UrlEncHelpTitle})

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- NOTE: This file must appear LAST in the list of content files so that these items override the matching
items in the stock content files! -->
<item id="topicTitle_root">{@RootNamespaceTitle}</item>
<!-- This is used when a title is not specified in the project -->
<item id="rootTopicTitleLocalized">Namespaces</item>
<item id="header">{@HeaderText} {@Preliminary}</item>
<item id="preliminary">_**\[This is preliminary documentation and is subject to change.\]**_</item>
</content>

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<content xml:space="preserve">
<!-- NOTE: This file must appear LAST in the list of content files so that these items override the matching
items in the stock content files! -->
<item id="topicTitle_root">{@RootNamespaceTitle}</item>
<!-- This is used when a title is not specified in the project -->
<item id="rootTopicTitleLocalized">Пространства имен</item>
<item id="header">{@HeaderText} {@Preliminary}</item>
<item id="preliminary">_**\[Это предварительная версия документации. API может измениться в будущем.\]**_</item>
</content>

View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template name="bibliographyReference">
<xsl:param name="number" />
<xsl:param name="data" />
<xsl:if test="$data">
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
<xsl:text>###### </xsl:text>
<span>
<xsl:attribute name="id">
cite<xsl:value-of select="$number"/>
</xsl:attribute>
\[<xsl:value-of select="$number"/>\]
</span>
<xsl:text> **</xsl:text>
<xsl:value-of select="$data/author/text()" />
<xsl:text>**</xsl:text>
<xsl:text>, </xsl:text>
<xsl:text>*</xsl:text>
<xsl:value-of select="$data/title/text()" />
<xsl:text>*</xsl:text>
<xsl:if test="$data/publisher">
<xsl:text>, </xsl:text>
<xsl:value-of select="$data/publisher/text()" />
</xsl:if>
<xsl:if test="$data/link">
<xsl:text>, </xsl:text>
<a>
<xsl:attribute name="target">_blank</xsl:attribute>
<xsl:attribute name="href">
<xsl:value-of select="$data/link/text()" />
</xsl:attribute>
<xsl:value-of select="$data/link/text()" />
</a>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,269 @@
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>
<!-- ======================================================================================== -->
<xsl:import href="GlobalTemplates.xsl"/>
<!-- ============================================================================================
Code languages
============================================================================================= -->
<!-- This gets the language ID for syntax section and code example titles -->
<xsl:template name="t_codeLang">
<xsl:param name="p_codeLang"/>
<xsl:variable name="v_codeLangLC" select="translate($p_codeLang,$g_allUpperCaseLetters,$g_allLowerCaseLetters)"/>
<xsl:choose>
<!-- Languages without a syntax generator. The presentation style content files will contain any required
resource items for these (i.e. devlang_HTML). -->
<xsl:when test="$v_codeLangLC = 'html' or $v_codeLangLC = 'htm'">
<xsl:text>HTML</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'pshell' or $v_codeLangLC = 'powershell' or $v_codeLangLC = 'ps1'">
<xsl:text>PShell</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'py'">
<xsl:text>Python</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'sql' or $v_codeLangLC = 'sqlserver' or $v_codeLangLC = 'sql server'">
<xsl:text>SQL</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'vbs' or $v_codeLangLC = 'vbscript'">
<xsl:text>VBScript</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'vb-c#' or $v_codeLangLC = 'visualbasicandcsharp'">
<xsl:text>VisualBasicAndCSharp</xsl:text>
</xsl:when>
<xsl:when test="$v_codeLangLC = 'xml' or $v_codeLangLC = 'xmllang' or $v_codeLangLC = 'xsl'">
<xsl:text>XML</xsl:text>
</xsl:when>
<!-- Special case for XAML. It has a syntax generator but we treat the code elements differently and must
use a common ID. -->
<xsl:when test="$v_codeLangLC = 'xaml' or $v_codeLangLC = 'xamlusage'">
<xsl:text>XAML</xsl:text>
</xsl:when>
<!-- None/other. No resource items are needed for these. -->
<xsl:when test="$v_codeLangLC = 'none' or $v_codeLangLC = 'other'">
<xsl:value-of select="$v_codeLangLC"/>
</xsl:when>
<!-- If none of the above, assume it is a language with a syntax generator. The syntax generator content
files will contain any required resource items for the language. -->
<xsl:otherwise>
<xsl:value-of select="$p_codeLang"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================================================================================
Code sections
============================================================================================= -->
<xsl:template name="t_putCodeSections">
<xsl:param name="p_codeNodes"/>
<xsl:param name="p_nodeCount"/>
<xsl:param name="p_codeLangAttr" select="''"/>
<xsl:for-each select="msxsl:node-set($p_codeNodes)">
<xsl:choose>
<xsl:when test="$p_codeLangAttr != ''">
<xsl:variable name="v_codeLang">
<xsl:call-template name="t_codeLang">
<xsl:with-param name="p_codeLang">
<xsl:for-each select="@*">
<xsl:if test="name() = $p_codeLangAttr">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:choose>
<xsl:when test="$v_codeLang = 'XAML'">
<xsl:call-template name="XamlSyntaxBlock"/>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="t_putCodeSection">
<xsl:with-param name="p_codeLang" select="$v_codeLang"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="t_putCodeSection" />
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<xsl:template name="t_putCodeSection">
<xsl:param name="p_codeLang" />
<xsl:if test="(normalize-space(@title) != '') or (not(@title) and normalize-space($p_codeLang) != '' and $p_codeLang != 'other' and $p_codeLang != 'none')">
<xsl:choose>
<xsl:when test="@title">
<xsl:text>&#xa;**</xsl:text>
<xsl:value-of select="@title" />
<xsl:text>**</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>&#xa;**</xsl:text>
<include item="devlang_{$p_codeLang}"/>
<xsl:text>**</xsl:text>
</xsl:otherwise>
</xsl:choose>
<br />
</xsl:if>
<xsl:text>&#xa;```</xsl:text>
<xsl:if test="normalize-space($p_codeLang) != '' and $p_codeLang != 'other' and $p_codeLang != 'none'">
<xsl:text> </xsl:text>
<include item="devlang_{$p_codeLang}"/>
</xsl:if>
<xsl:text>&#xa;</xsl:text>
<!-- Use apply-templates rather than copy-of so ddue:codeFeaturedElement nodes are transformed -->
<xsl:apply-templates mode="preserveFormatting" />
<xsl:text>&#xa;```&#xa;</xsl:text>
</xsl:template>
<!-- ============================================================================================
XAML Syntax
============================================================================================= -->
<xsl:template name="XamlSyntaxBlock">
<!-- Branch based on page type -->
<xsl:choose>
<!-- Display boilerplate for page types that cannot be used in XAML -->
<xsl:when test="$g_apiTopicSubGroup='method' or $g_apiTopicSubGroup='constructor' or
$g_apiTopicSubGroup='interface' or $g_apiTopicSubGroup='delegate' or
$g_apiTopicSubGroup='field'">
<xsl:call-template name="ShowXamlSyntaxBoilerplate"/>
</xsl:when>
<!-- Class and structure -->
<xsl:when test="$g_apiTopicSubGroup='class' or $g_apiTopicSubGroup='structure'">
<xsl:choose>
<xsl:when test="div[@class='xamlObjectElementUsageHeading']">
<xsl:call-template name="ShowAutogeneratedXamlSyntax">
<xsl:with-param name="autogenContent">
<xsl:copy-of select="div[@class='xamlObjectElementUsageHeading']"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="ShowXamlSyntaxBoilerplate">
<xsl:with-param name="p_messageId">
<xsl:copy-of select="."/>
</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- Enumeration -->
<xsl:when test="$g_apiTopicSubGroup='enumeration'">
<xsl:choose>
<xsl:when test="div[@class='nonXamlAssemblyBoilerplate']"/>
<xsl:otherwise>
<include item="xamlAttributeUsageHeading"/>
<include item="enumerationOverviewXamlSyntax"/>
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<!-- Property -->
<xsl:when test="$g_apiTopicSubGroup='property' or $g_apiTopicSubSubGroup='attachedProperty'">
<!-- Property Element Usage -->
<xsl:if test="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']">
<xsl:call-template name="ShowAutogeneratedXamlSyntax">
<xsl:with-param name="autogenContent">
<xsl:copy-of select="div[@class='xamlPropertyElementUsageHeading' or @class='xamlContentElementUsageHeading']"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<!-- Attribute Usage -->
<xsl:if test="div[@class='xamlAttributeUsageHeading']">
<xsl:call-template name="ShowAutogeneratedXamlSyntax">
<xsl:with-param name="autogenContent">
<xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
<!-- Show auto-generated boilerplate if no other content to override it -->
<xsl:if test="not(div[@class='xamlPropertyElementUsageHeading' or
@class='xamlContentElementUsageHeading' or @class='xamlAttributeUsageHeading'])">
<xsl:call-template name="ShowXamlSyntaxBoilerplate">
<xsl:with-param name="p_messageId">
<xsl:copy-of select="div/*"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:when>
<!-- Event -->
<xsl:when test="$g_apiTopicSubGroup='event' or $g_apiTopicSubSubGroup='attachedEvent'">
<!-- If XamlSyntaxUsage component generated an Attribute Usage block, this template will show it -->
<xsl:call-template name="ShowAutogeneratedXamlSyntax">
<xsl:with-param name="autogenContent">
<xsl:copy-of select="div[@class='xamlAttributeUsageHeading']"/>
</xsl:with-param>
</xsl:call-template>
<!-- If XamlSyntaxUsage component generated a boilerplate block, this template will show it -->
<xsl:call-template name="ShowXamlSyntaxBoilerplate">
<xsl:with-param name="p_messageId">
<xsl:copy-of select="div/*"/>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<!-- Displays one of the standard XAML boilerplate strings. -->
<xsl:template name="ShowXamlSyntaxBoilerplate">
<xsl:param name="p_messageId"/>
<!-- 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:value-of select="div/@class[.='interfaceOverviewXamlSyntax' or
.='propertyXamlSyntax_abstractType' or
.='classXamlSyntax_abstract']"/>
</xsl:variable>
-->
<xsl:if test="$boilerplateId != ''">
<include item="{$boilerplateId}">
<xsl:choose>
<xsl:when test="$p_messageId !='' or (count(msxsl:node-set($p_messageId)/*) &gt; 0)">
<parameter><xsl:copy-of select="msxsl:node-set($p_messageId)"/></parameter>
</xsl:when>
<!-- Make sure we at least pass in an empty param because some boilerplates expect them -->
<xsl:otherwise>
<parameter/>
</xsl:otherwise>
</xsl:choose>
</include>
</xsl:if>
</xsl:template>
<!-- Displays the auto-generated XAML syntax for page types other than enumerations -->
<xsl:template name="ShowAutogeneratedXamlSyntax">
<xsl:param name="autogenContent"/>
<xsl:if test="count(msxsl:node-set($autogenContent))>0">
<xsl:for-each select="msxsl:node-set($autogenContent)/div">
<xsl:text>&#xa;|</xsl:text><include item="{@class}"/>
<xsl:text>|</xsl:text>
<xsl:copy-of select="node()"/>
<xsl:text>|</xsl:text>
<xsl:text>&#xa;</xsl:text>
</xsl:for-each>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.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:variable name="g_topicTypes">
<topic guid="EF7DDB37-8ED3-4DFA-B38D-5A3CC1906034"
name=""
contentType="Concepts"
seeAlsoGroup="Concepts"/>
<topic guid="1FE70836-AA7D-4515-B54B-E10C4B516E50"
name="developerConceptualDocument"
contentType="Concepts"
seeAlsoGroup="Concepts"/>
<topic guid="B137C930-7BF7-48A2-A329-3ADCAEF8868E"
name="developerOrientationDocument"
contentType="Concepts"
seeAlsoGroup="Other Resources"/>
<topic guid="68F07632-C4C5-4645-8DFA-AC87DCB4BD54"
name="developerSDKTechnologyOverviewArchitectureDocument"
contentType="Concepts"
seeAlsoGroup="Concepts"/>
<topic guid="CDB8C120-888F-447B-8AF8-F9540562E7CA"
name="developerSDKTechnologyOverviewOrientationDocument"
contentType="Concepts"
seeAlsoGroup="Other Resources"/>
<topic guid="356C57C4-384D-4AF2-A637-FDD6F088A033"
name="developerSDKTechnologyOverviewScenariosDocument"
contentType="Concepts"
seeAlsoGroup="Concepts"/>
<topic guid="19F1BB0E-F32A-4D5F-80A9-211D92A8A715"
name="developerSDKTechnologyOverviewTechnologySummaryDocument"
contentType="Concepts"
seeAlsoGroup="Concepts"/>
<topic guid="56DB00EC-28BA-4C0D-8694-28E8B244E236"
name="developerWhitePaperDocument"
contentType="Concepts"
seeAlsoGroup="Other Resources"/>
<topic guid="B137C930-7BF7-48A2-A329-3ADCAEF8868E"
name="developerOrientationDocument"
contentType="Concepts"
seeAlsoGroup="Other Resources"/>
<topic guid="DAC3A6A0-C863-4E5B-8F65-79EFC6A4BA09"
name="developerHowToDocument"
contentType="How To"
seeAlsoGroup="Tasks"/>
<topic guid="4779DD54-5D0C-4CC3-9DB3-BF1C90B721B3"
name="developerWalkthroughDocument"
contentType="How To"
seeAlsoGroup="Tasks"/>
<topic guid="A635375F-98C2-4241-94E7-E427B47C20B6"
name="developerErrorMessageDocument"
contentType="Reference"
seeAlsoGroup="Reference"/>
<topic guid="95DADC4C-A2A6-447A-AA36-B6BE3A4F8DEC"
name="developerReferenceWithSyntaxDocument"
contentType="Reference"
seeAlsoGroup="Reference"/>
<topic guid="F9205737-4DEC-4A58-AA69-0E621B1236BD"
name="developerReferenceWithoutSyntaxDocument"
contentType="Reference"
seeAlsoGroup="Reference"/>
<topic guid="38C8E0D1-D601-4DBA-AE1B-5BEC16CD9B01"
name="developerTroubleshootingDocument"
contentType="Reference"
seeAlsoGroup="Tasks"/>
<topic guid="B8ED9F21-39A4-4967-928D-160CD2ED9DCE"
name="developerUIReferenceDocument"
contentType="Reference"
seeAlsoGroup="Reference"/>
<topic guid="3272D745-2FFC-48C4-9E9D-CF2B2B784D5F"
name="developerXmlReference"
contentType="Reference"
seeAlsoGroup="Reference"/>
<topic guid="A689E19C-2687-4881-8CE1-652FF60CF46C"
name="developerGlossaryDocument"
contentType="Reference"
seeAlsoGroup="Other Resources"/>
<topic guid="069EFD88-412D-4E2F-8848-2D5C3AD56BDE"
name="developerSampleDocument"
contentType="Samples"
seeAlsoGroup="Tasks"/>
<topic guid="4BBAAF90-0E5F-4C86-9D31-A5CAEE35A416"
name="developerSDKTechnologyOverviewCodeDirectoryDocument"
contentType="Samples"
seeAlsoGroup="Concepts"/>
<topic guid="4A273212-0AC8-4D72-8349-EC11CD2FF8CD"
name="codeEntityDocument"
contentType="Samples"
seeAlsoGroup="Other Resources"/>
</xsl:variable>
</xsl:stylesheet>

View File

@ -0,0 +1,460 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
>
<!-- ============================================================================================
Globals
============================================================================================= -->
<xsl:variable name="g_allUpperCaseLetters">ABCDEFGHIJKLMNOPQRSTUVWXYZ</xsl:variable>
<xsl:variable name="g_allLowerCaseLetters">abcdefghijklmnopqrstuvwxyz</xsl:variable>
<!-- ============================================================================================
String formatting
============================================================================================= -->
<!-- indent by 2*n spaces -->
<xsl:template name="t_putIndent">
<xsl:param name="p_count" />
<xsl:if test="$p_count &gt; 1">
<xsl:text>&#160;&#160;</xsl:text>
<xsl:call-template name="t_putIndent">
<xsl:with-param name="p_count" select="$p_count - 1" />
</xsl:call-template>
</xsl:if>
</xsl:template>
<!-- Gets the substring after the last occurrence of a period in a given string -->
<xsl:template name="t_getTrimmedLastPeriod">
<xsl:param name="p_string" />
<xsl:choose>
<xsl:when test="contains($p_string, '.')">
<xsl:call-template name="t_getTrimmedLastPeriod">
<xsl:with-param name="p_string" select="substring-after($p_string, '.')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$p_string" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- ============================================================================================
Text handling
============================================================================================= -->
<!-- This is used for most text which needs normalizing to remove extra whitespace -->
<xsl:template match="text()">
<xsl:call-template name="t_normalize"><xsl:with-param name="p_text" select="."/></xsl:call-template>
</xsl:template>
<!-- This is used to keep extra whitespace and line breaks intact for things like code blocks -->
<xsl:template match="text()" mode="preserveFormatting">
<xsl:value-of select="." />
</xsl:template>
<!-- Space normalization with handling for inserting a space before and/or after if there are preceding and/or
following elements. -->
<xsl:template name="t_normalize">
<xsl:param name="p_text" />
<!-- If there is a preceding sibling and the text started with whitespace, add a leading space -->
<xsl:if test="preceding-sibling::* and starts-with(translate($p_text, '&#x20;&#x9;&#xD;&#xA;', '&#xFF;&#xFF;&#xFF;&#xFF;'), '&#xFF;')">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:value-of select="normalize-space($p_text)"/>
<!-- If there is a following sibling and the text ended with whitespace, add a trailing space -->
<xsl:if test="following-sibling::* and substring(translate($p_text, '&#x20;&#x9;&#xD;&#xA;', '&#xFF;&#xFF;&#xFF;&#xFF;'), string-length($p_text)) = '&#xFF;'">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:template>
<!-- ============================================================================================
SeeAlso links
============================================================================================= -->
<xsl:template match="referenceLink">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template match="referenceLink" mode="preserveFormatting">
<xsl:copy-of select="."/>
</xsl:template>
<xsl:template name="t_autogenSeeAlsoLinks">
<!-- A link to the containing type on all list and member topics -->
<xsl:if test="($g_apiTopicGroup='member' or $g_apiTopicGroup='list')">
<xsl:variable name="v_typeTopicId">
<xsl:choose>
<xsl:when test="/document/reference/topicdata/@typeTopicId">
<xsl:value-of select="/document/reference/topicdata/@typeTopicId"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/document/reference/containers/type/@api"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<referenceLink target="{$v_typeTopicId}" display-target="format">
<include item="boilerplate_seeAlsoTypeLink">
<parameter>{0}</parameter>
<parameter>
<xsl:choose>
<xsl:when test="/document/reference/topicdata/@typeTopicId">
<xsl:value-of select="/document/reference/apidata/@subgroup"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="/document/reference/containers/type/apidata/@subgroup"/>
</xsl:otherwise>
</xsl:choose>
</parameter>
</include>
</referenceLink>
<br />
</xsl:if>
<!-- A link to the type's All Members list -->
<xsl:variable name="v_allMembersId">
<xsl:choose>
<xsl:when test="/document/reference/topicdata/@allMembersTopicId">
<xsl:value-of select="/document/reference/topicdata/@allMembersTopicId"/>
</xsl:when>
<xsl:when test="$g_apiTopicGroup='member' or ($g_apiTopicGroup='list' and $g_apiTopicSubGroup='overload')">
<xsl:value-of select="/document/reference/containers/type/topicdata/@allMembersTopicId"/>
</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space($v_allMembersId) and not($v_allMembersId=$key)">
<referenceLink target="{$v_allMembersId}" display-target="format">
<include item="boilerplate_seeAlsoMembersLink">
<parameter>{0}</parameter>
</include>
</referenceLink>
<br />
</xsl:if>
<!-- A link to the overload topic -->
<xsl:variable name="v_overloadId">
<xsl:value-of select="/document/reference/memberdata/@overload"/>
</xsl:variable>
<xsl:if test="normalize-space($v_overloadId)">
<referenceLink target="{$v_overloadId}" display-target="format" show-parameters="false">
<include item="boilerplate_seeAlsoOverloadLink">
<parameter>{0}</parameter>
</include>
</referenceLink>
<br />
</xsl:if>
<!-- A link to the namespace topic -->
<xsl:variable name="v_namespaceId">
<xsl:value-of select="/document/reference/containers/namespace/@api"/>
</xsl:variable>
<xsl:if test="normalize-space($v_namespaceId)">
<referenceLink target="{$v_namespaceId}" display-target="format">
<include item="boilerplate_seeAlsoNamespaceLink">
<parameter>{0}</parameter>
</include>
</referenceLink>
<br />
</xsl:if>
</xsl:template>
<!-- ============================================================================================
Section headers
============================================================================================= -->
<xsl:template name="t_putSection">
<xsl:param name="p_title" />
<xsl:param name="p_content" />
<xsl:param name="p_toplink" select="false()" />
<xsl:param name="p_id" select="''" />
<xsl:if test="normalize-space($p_title)">
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
<xsl:text>## </xsl:text>
<xsl:copy-of select="$p_title" />
<xsl:if test="normalize-space($p_id)">
<span>
<xsl:attribute name="id">
<xsl:value-of select="$p_id"/>
</xsl:attribute>
<xsl:text> </xsl:text>
</span>
</xsl:if>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
<xsl:copy-of select="$p_content" />
<xsl:if test="boolean($p_toplink)">
<a href="#PageHeader">
<include item="top"/>
</a>
</xsl:if>
</xsl:template>
<xsl:template name="t_putSectionInclude">
<xsl:param name="p_titleInclude" />
<xsl:param name="p_content" />
<xsl:param name="p_toplink" select="false()" />
<xsl:param name="p_id" select="''" />
<xsl:if test="normalize-space($p_titleInclude)">
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
<xsl:text>## </xsl:text>
<include item="{$p_titleInclude}"/>
<xsl:if test="normalize-space($p_id)">
<span>
<xsl:attribute name="id">
<xsl:value-of select="$p_id"/>
</xsl:attribute>
<xsl:text> </xsl:text>
</span>
</xsl:if>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
<xsl:copy-of select="$p_content" />
<xsl:if test="boolean($p_toplink)">
<a href="#PageHeader">
<include item="top"/>
</a>
</xsl:if>
</xsl:template>
<xsl:template name="t_putSubSection">
<xsl:param name="p_title" />
<xsl:param name="p_content" />
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
<xsl:text>#### </xsl:text>
<xsl:copy-of select="$p_title" />
<xsl:text>&#xa;</xsl:text>
<xsl:copy-of select="$p_content" />
</xsl:template>
<!-- ============================================================================================
Alerts
============================================================================================= -->
<xsl:template name="t_putAlert">
<xsl:param name="p_alertClass" select="@class"/>
<xsl:param name="p_alertContent" select="''"/>
<xsl:variable name="v_title">
<xsl:choose>
<xsl:when test="$p_alertClass='note'">
<xsl:text>alert_title_note</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='tip'">
<xsl:text>alert_title_tip</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='caution' or $p_alertClass='warning'">
<xsl:text>alert_title_caution</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='security' or $p_alertClass='security note'">
<xsl:text>alert_title_security</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='important'">
<xsl:text>alert_title_important</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='vb' or $p_alertClass='VB' or $p_alertClass='VisualBasic' or $p_alertClass='visual basic note'">
<xsl:text>alert_title_visualBasic</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cs' or $p_alertClass='CSharp' or $p_alertClass='c#' or $p_alertClass='C#' or $p_alertClass='visual c# note'">
<xsl:text>alert_title_visualC#</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cpp' or $p_alertClass='c++' or $p_alertClass='C++' or $p_alertClass='CPP' or $p_alertClass='visual c++ note'">
<xsl:text>alert_title_visualC++</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='JSharp' or $p_alertClass='j#' or $p_alertClass='J#' or $p_alertClass='visual j# note'">
<xsl:text>alert_title_visualJ#</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='implement'">
<xsl:text>text_NotesForImplementers</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='caller'">
<xsl:text>text_NotesForCallers</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='inherit'">
<xsl:text>text_NotesForInheritors</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>alert_title_note</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="v_altTitle">
<xsl:choose>
<xsl:when test="$p_alertClass='note' or $p_alertClass='implement' or $p_alertClass='caller' or $p_alertClass='inherit'">
<xsl:text>alert_altText_note</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='tip'">
<xsl:text>alert_altText_tip</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='caution' or $p_alertClass='warning'">
<xsl:text>alert_altText_caution</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='security' or $p_alertClass='security note'">
<xsl:text>alert_altText_security</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='important'">
<xsl:text>alert_altText_important</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='vb' or $p_alertClass='VB' or $p_alertClass='VisualBasic' or $p_alertClass='visual basic note'">
<xsl:text>alert_altText_visualBasic</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cs' or $p_alertClass='CSharp' or $p_alertClass='c#' or $p_alertClass='C#' or $p_alertClass='visual c# note'">
<xsl:text>alert_altText_visualC#</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cpp' or $p_alertClass='c++' or $p_alertClass='C++' or $p_alertClass='CPP' or $p_alertClass='visual c++ note'">
<xsl:text>alert_altText_visualC++</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='JSharp' or $p_alertClass='j#' or $p_alertClass='J#' or $p_alertClass='visual j# note'">
<xsl:text>alert_altText_visualJ#</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>alert_altText_note</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="v_noteImg">
<xsl:choose>
<xsl:when test="$p_alertClass='note' or $p_alertClass='tip' or $p_alertClass='implement' or $p_alertClass='caller' or $p_alertClass='inherit'">
<xsl:text>AlertNote.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='caution' or $p_alertClass='warning'">
<xsl:text>AlertCaution.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='security' or $p_alertClass='security note'">
<xsl:text>AlertSecurity.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='important'">
<xsl:text>AlertCaution.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='vb' or $p_alertClass='VB' or $p_alertClass='VisualBasic' or $p_alertClass='visual basic note'">
<xsl:text>AlertNote.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cs' or $p_alertClass='CSharp' or $p_alertClass='c#' or $p_alertClass='C#' or $p_alertClass='visual c# note'">
<xsl:text>AlertNote.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='cpp' or $p_alertClass='c++' or $p_alertClass='C++' or $p_alertClass='CPP' or $p_alertClass='visual c++ note'">
<xsl:text>AlertNote.png</xsl:text>
</xsl:when>
<xsl:when test="$p_alertClass='JSharp' or $p_alertClass='j#' or $p_alertClass='J#' or $p_alertClass='visual j# note'">
<xsl:text>AlertNote.png</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>AlertNote.png</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#160;</xsl:text>
<table>
<tr>
<th>
<xsl:text>![</xsl:text>
<include item="{$v_title}"/>
<xsl:text>](</xsl:text>
<include item="mediaPath">
<parameter>
<xsl:value-of select="$v_noteImg"/>
</parameter>
</include>
<xsl:text>) </xsl:text>
<include item="{$v_title}"/>
</th>
</tr>
<tr>
<td>
<xsl:choose>
<xsl:when test="$p_alertContent=''">
<xsl:apply-templates/>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="$p_alertContent"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</table>
<xsl:text>&#160;</xsl:text>
<xsl:text>&#xa;</xsl:text>
</xsl:template>
<!-- ============================================================================================
Pass through HTML tags
============================================================================================= -->
<xsl:template match="p|ol|ul|li|dl|dt|dd|table|tr|th|td|a|img|b|i|strong|em|del|sub|sup|br|hr|h1|h2|h3|h4|h5|h6|pre|div|span|blockquote|abbr|acronym|u|font|map|area">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<!-- ============================================================================================
Debugging template for showing an element in comments
============================================================================================= -->
<xsl:template name="t_dumpContent">
<xsl:param name="indent" select="''"/>
<xsl:param name="content" select="."/>
<xsl:for-each select="msxsl:node-set($content)">
<xsl:choose>
<xsl:when test="self::text()">
<xsl:comment>
<xsl:value-of select="$indent"/>
<xsl:value-of select="."/>
</xsl:comment>
</xsl:when>
<xsl:otherwise>
<xsl:comment>
<xsl:value-of select="$indent"/>
<xsl:value-of select="'«'"/>
<xsl:value-of select="name()"/>
<xsl:for-each select="@*">
<xsl:text xml:space="preserve"> </xsl:text>
<xsl:value-of select="name()"/>
<xsl:value-of select="'='"/>
<xsl:value-of select="."/>
</xsl:for-each>
<xsl:choose>
<xsl:when test="./node()">
<xsl:value-of select="'»'"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'/»'"/>
</xsl:otherwise>
</xsl:choose>
</xsl:comment>
<xsl:for-each select="node()">
<xsl:call-template name="t_dumpContent">
<xsl:with-param name="indent"
select="concat($indent,' ')"/>
</xsl:call-template>
</xsl:for-each>
<xsl:if test="./node()">
<xsl:comment>
<xsl:value-of select="$indent"/>
<xsl:value-of select="'«/'"/>
<xsl:value-of select="name()"/>
<xsl:value-of select="'»'"/>
</xsl:comment>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<!-- ======================================================================================== -->
<xsl:import href="ConceptualTopicTypes.xsl"/>
<!-- ============================================================================================
Process relatedTopics
============================================================================================= -->
<xsl:template match="ddue:relatedTopics" mode="seeAlso">
<xsl:param name="p_autoGenerateLinks" select="false()"/>
<xsl:variable name="v_taskLinks">
<xsl:for-each select="(ddue:link | ddue:legacyLink)[@topicType_id]">
<xsl:variable name="v_topicTypeId">
<xsl:value-of select="translate(@topicType_id, $g_allLowerCaseLetters, $g_allUpperCaseLetters)"/>
</xsl:variable>
<xsl:variable name="v_seeAlsoGroup">
<xsl:value-of select="translate(msxsl:node-set($g_topicTypes)/topic[@guid = $v_topicTypeId]/@seeAlsoGroup, $g_allUpperCaseLetters, $g_allLowerCaseLetters)"/>
</xsl:variable>
<xsl:if test="$v_seeAlsoGroup='tasks'">
<xsl:copy-of select="."/>
<br />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="v_conceptLinks">
<xsl:for-each select="(ddue:link | ddue:legacyLink)[@topicType_id]">
<xsl:variable name="v_topicTypeId">
<xsl:value-of select="translate(@topicType_id, $g_allLowerCaseLetters, $g_allUpperCaseLetters)"/>
</xsl:variable>
<xsl:variable name="v_seeAlsoGroup">
<xsl:value-of select="translate(msxsl:node-set($g_topicTypes)/topic[@guid = $v_topicTypeId]/@seeAlsoGroup, $g_allUpperCaseLetters, $g_allLowerCaseLetters)"/>
</xsl:variable>
<xsl:if test="$v_seeAlsoGroup='concepts'">
<xsl:copy-of select="."/>
<br />
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="v_referenceLinks">
<xsl:for-each select="(ddue:link | ddue:legacyLink)[@topicType_id] | ddue:codeEntityReference">
<xsl:choose>
<xsl:when test="self::ddue:codeEntityReference">
<xsl:copy-of select="."/>
<br />
</xsl:when>
<xsl:otherwise>
<xsl:variable name="v_topicTypeId">
<xsl:value-of select="translate(@topicType_id, $g_allLowerCaseLetters, $g_allUpperCaseLetters)"/>
</xsl:variable>
<xsl:variable name="v_seeAlsoGroup">
<xsl:value-of select="translate(msxsl:node-set($g_topicTypes)/topic[@guid = $v_topicTypeId]/@seeAlsoGroup, $g_allUpperCaseLetters, $g_allLowerCaseLetters)"/>
</xsl:variable>
<xsl:if test="$v_seeAlsoGroup='reference'">
<xsl:copy-of select="."/>
<br />
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:variable name="v_otherLinks">
<xsl:for-each select="ddue:link | ddue:legacyLink | ddue:dynamicLink[@type='inline'] | ddue:externalLink">
<xsl:choose>
<xsl:when test="self::ddue:dynamicLink">
<xsl:copy-of select="."/>
<br />
</xsl:when>
<xsl:when test="self::ddue:externalLink">
<xsl:copy-of select="."/>
<br />
</xsl:when>
<xsl:when test="@topicType_id">
<xsl:variable name="v_topicTypeId">
<xsl:value-of select="translate(@topicType_id, $g_allLowerCaseLetters, $g_allUpperCaseLetters)"/>
</xsl:variable>
<xsl:variable name="v_seeAlsoGroup">
<xsl:value-of select="translate(msxsl:node-set($g_topicTypes)/topic[@guid = $v_topicTypeId]/@seeAlsoGroup, $g_allUpperCaseLetters, $g_allLowerCaseLetters)"/>
</xsl:variable>
<xsl:if test="($v_seeAlsoGroup!='tasks') and ($v_seeAlsoGroup!='concepts') and ($v_seeAlsoGroup!='reference')">
<xsl:copy-of select="."/>
<br />
</xsl:if>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
<br />
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</xsl:variable>
<xsl:if test="msxsl:node-set($v_taskLinks)/*">
<xsl:call-template name="t_putSeeAlsoSubSection">
<xsl:with-param name="p_headerGroup" select="'title_seeAlso_tasks'"/>
<xsl:with-param name="p_members" select="$v_taskLinks"/>
<xsl:with-param name="p_autoGenerateLinks" select="false()"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="msxsl:node-set($v_referenceLinks)/* or boolean($p_autoGenerateLinks)">
<xsl:call-template name="t_putSeeAlsoSubSection">
<xsl:with-param name="p_headerGroup" select="'title_seeAlso_reference'"/>
<xsl:with-param name="p_members" select="$v_referenceLinks"/>
<xsl:with-param name="p_autoGenerateLinks" select="$p_autoGenerateLinks"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="msxsl:node-set($v_conceptLinks)/*">
<xsl:call-template name="t_putSeeAlsoSubSection">
<xsl:with-param name="p_headerGroup" select="'title_seeAlso_concepts'"/>
<xsl:with-param name="p_members" select="$v_conceptLinks"/>
<xsl:with-param name="p_autoGenerateLinks" select="false()"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="msxsl:node-set($v_otherLinks)/*">
<xsl:call-template name="t_putSeeAlsoSubSection">
<xsl:with-param name="p_headerGroup" select="'title_seeAlso_otherResources'"/>
<xsl:with-param name="p_members" select="$v_otherLinks"/>
<xsl:with-param name="p_autoGenerateLinks" select="false()"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="t_putSeeAlsoSubSection">
<xsl:param name="p_headerGroup"/>
<xsl:param name="p_members"/>
<xsl:param name="p_autoGenerateLinks" select="false()"/>
<xsl:call-template name="t_putSubSection">
<xsl:with-param name="p_title">
<include item="{$p_headerGroup}"/>
</xsl:with-param>
<xsl:with-param name="p_content">
<xsl:if test="boolean($p_autoGenerateLinks)">
<xsl:call-template name="t_autogenSeeAlsoLinks"/>
</xsl:if>
<xsl:for-each select="msxsl:node-set($p_members)/*">
<xsl:apply-templates select="."/>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,400 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ddue="http://ddue.schemas.microsoft.com/authoring/2003/5"
xmlns:xlink="http://www.w3.org/1999/xlink"
>
<!-- ======================================================================================== -->
<xsl:import href="GlobalTemplates.xsl"/>
<xsl:import href="CodeTemplates.xsl"/>
<xsl:import href="MAMLTemplates.xsl"/>
<xsl:import href="MAMLSeeAlsoTemplates.xsl"/>
<xsl:import href="Bibliography.xsl"/>
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" encoding="utf-8"/>
<!-- ============================================================================================
Parameters - key parameter is the API identifier string
============================================================================================= -->
<xsl:param name="key"/>
<xsl:param name="bibliographyData" select="'../data/bibliography.xml'"/>
<!-- ============================================================================================
Global Variables
============================================================================================= -->
<xsl:variable name="g_hasSeeAlsoSection"
select="boolean(count(/document/topic/*/ddue:relatedTopics/*[local-name()!='sampleRef']) > 0)"/>
<xsl:variable name="g_apiTopicGroup" />
<xsl:variable name="g_apiTopicSubGroup" />
<xsl:variable name="g_apiTopicSubSubGroup" />
<!-- ============================================================================================
Document
============================================================================================= -->
<xsl:template match="/document" name="t_document">
<document>
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#xa;</xsl:text>
<xsl:text># </xsl:text>
<include item="boilerplate_pageTitle">
<parameter>
<xsl:choose>
<xsl:when test="normalize-space(/document/metadata/title)">
<xsl:value-of select="normalize-space(/document/metadata/title)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="normalize-space(/document/topic/*/ddue:title)"/>
</xsl:otherwise>
</xsl:choose>
</parameter>
</include>
<span id="PageHeader">
<xsl:text> </xsl:text>
</span>
<xsl:text>&#xa;</xsl:text>
<xsl:apply-templates select="topic"/>
<xsl:text>&#xa;</xsl:text>
</document>
</xsl:template>
<!-- ============================================================================================
Sections that behave differently in conceptual and reference
============================================================================================= -->
<!-- Ignore the title -->
<xsl:template match="ddue:title" />
<xsl:template match="ddue:introduction">
<!-- Display the introduction only if it has content -->
<xsl:if test="count(*) &gt; 0">
<xsl:if test="@address">
<span>
<xsl:attribute name="id">
<!-- Special case. Links to this address will get converted to a link to the page header
since the introduction has no title itself. -->
<xsl:text>@pageHeader_</xsl:text>
<xsl:value-of select="@address"/>
</xsl:attribute>
<xsl:text> </xsl:text>
</span>
</xsl:if>
<xsl:apply-templates/>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:parameters">
<xsl:if test="normalize-space(.)">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_parameters'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:returnValue">
<xsl:if test="normalize-space(.)">
<xsl:choose>
<xsl:when test="(normalize-space(ddue:content)='') and ddue:sections/ddue:section[ddue:title='Property Value']">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_propertyValue'"/>
<xsl:with-param name="p_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="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_returnValue'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:exceptions">
<xsl:if test="normalize-space(.)">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_exceptions'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:relatedSections">
<xsl:if test="normalize-space(.)">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_relatedSections'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:relatedTopics">
<xsl:if test="$g_hasSeeAlsoSection">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_relatedTopics'"/>
<xsl:with-param name="p_id" select="'seeAlsoSection'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates select="/document/topic/*/ddue:relatedTopics" mode="seeAlso"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:codeExample">
<!-- Create Example section for the first codeExample node -->
<xsl:if test="not(preceding-sibling::ddue:codeExample) and ../ddue:codeExample[normalize-space(.)!='']">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'title_example'"/>
<xsl:with-param name="p_content">
<xsl:apply-templates/>
<!-- If there are additional codeExample nodes, put them inside this section -->
<xsl:for-each select="following-sibling::ddue:codeExample">
<xsl:apply-templates/>
</xsl:for-each>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template match="ddue:codeReference">
<xsl:apply-templates/>
</xsl:template>
<!-- ============================================================================================
<autoOutline/> or <autoOutline>[#]</autoOutline>
Inserts a bullet list of links to the topic's sections or a section's sub-sections with optional support for
limiting the expansion down to a specific level. Authors can use the tag directly or specify a token (defined
in a token file) in a topic's introduction to get a bullet list of the sections; or in a
ddue:section/ddue:content to get a bullet list of the section's sub-sections. If the token is used, the
shared content component replaces <token>autoOutline</token> with an <autoOutline/> node that you specify.
This was the old way of doing it but this version allows it to be specified directly like any other MAML tag.
Examples:
<autoOutline/> Show only top-level topic titles
<autoOutline>1</autoOutline> Show top-level titles and titles for one level down
<autoOutline>3</autoOutline> Show titles from the top down to three levels
============================================================================================= -->
<xsl:template match="autoOutline|ddue:autoOutline" name="t_autoOutline">
<xsl:variable name="v_maxDepth">
<xsl:choose>
<xsl:when test="normalize-space(.)">
<xsl:value-of select="number(normalize-space(.))"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="number(0)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="v_intro" select="@lead"/>
<xsl:variable name="p_outlineType">
<xsl:choose>
<xsl:when test="@excludeRelatedTopics = 'true'">
<xsl:value-of select="string('topNoRelated')"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="string('toplevel')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<!-- If <autoOutline/> is in introduction, it outlines the topic's top level sections -->
<xsl:when test="ancestor::ddue:introduction">
<xsl:for-each select="ancestor::ddue:introduction/parent::*">
<xsl:call-template name="t_insertAutoOutline">
<xsl:with-param name="p_intro">
<xsl:value-of select="$v_intro"/>
</xsl:with-param>
<xsl:with-param name="p_outlineType">
<xsl:value-of select="$p_outlineType"/>
</xsl:with-param>
<xsl:with-param name="p_depth">
<xsl:value-of select="number(0)"/>
</xsl:with-param>
<xsl:with-param name="p_maxDepth">
<xsl:value-of select="$v_maxDepth"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:when>
<!-- If <autoOutline/> is in section/content, it outlines the section's subsections -->
<xsl:when test="ancestor::ddue:content[parent::ddue:section]">
<xsl:for-each select="ancestor::ddue:content/parent::ddue:section/ddue:sections">
<xsl:call-template name="t_insertAutoOutline">
<xsl:with-param name="p_intro">
<xsl:value-of select="$v_intro"/>
</xsl:with-param>
<xsl:with-param name="p_outlineType">subsection</xsl:with-param>
<xsl:with-param name="p_depth">
<xsl:value-of select="number(0)"/>
</xsl:with-param>
<xsl:with-param name="p_maxDepth">
<xsl:value-of select="$v_maxDepth"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template name="t_insertAutoOutline">
<xsl:param name="p_intro"/>
<xsl:param name="p_outlineType"/>
<xsl:param name="p_depth"/>
<xsl:param name="p_maxDepth"/>
<!-- Insert an outline if there are sections with title and address -->
<xsl:if test="ddue:section[ddue:title[normalize-space(.)!='']]">
<!-- Insert a boilerplate intro -->
<xsl:choose>
<xsl:when test="normalize-space($p_intro) = 'none'">
<xsl:text>&#xa;</xsl:text>
</xsl:when>
<xsl:when test="normalize-space($p_intro)">
<xsl:text>&#xa;</xsl:text>
<xsl:value-of select="normalize-space($p_intro)"/>
<xsl:text>&#xa;</xsl:text>
</xsl:when>
<xsl:when test="$p_outlineType='toplevel' or $p_outlineType='topNoRelated'">
<xsl:text>&#xa;</xsl:text>
<include item="boilerplate_autoOutlineTopLevelIntro"/>
<xsl:text>&#xa;</xsl:text>
</xsl:when>
<xsl:when test="$p_outlineType='subsection'">
<xsl:text>&#xa;</xsl:text>
<include item="boilerplate_autoOutlineSubsectionIntro"/>
<xsl:text>&#xa;</xsl:text>
</xsl:when>
</xsl:choose>
<xsl:text>&#xa;</xsl:text>
<xsl:text>&#160;</xsl:text>
<ul>
<xsl:for-each select="ddue:section[ddue:title[normalize-space(.)!='']]">
<xsl:call-template name="t_outlineSectionEntry"/>
<!-- Expand sub-sections too if wanted -->
<xsl:if test="$p_depth &lt; $p_maxDepth">
<xsl:for-each select="ddue:sections">
<xsl:call-template name="t_insertAutoOutline">
<xsl:with-param name="p_outlineType">subsubsection</xsl:with-param>
<xsl:with-param name="p_depth">
<xsl:value-of select="$p_depth + 1"/>
</xsl:with-param>
<xsl:with-param name="p_maxDepth">
<xsl:value-of select="$p_maxDepth"/>
</xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
<!-- For top level outlines include a link to See Also -->
<xsl:if test="starts-with($p_outlineType,'toplevel') and count(//ddue:relatedTopics/*) > 0">
<li>
<a>
<xsl:attribute name="href">#seeAlsoSection</xsl:attribute>
<include item="title_relatedTopics"/>
</a>
</li>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
</ul>
<xsl:text>&#160;</xsl:text>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
</xsl:template>
<!-- A list item in the outline's bullet list -->
<xsl:template name="t_outlineSectionEntry">
<xsl:if test="descendant::ddue:content[normalize-space(.)] or count(ddue:content/*) &gt; 0">
<xsl:text>&#xa;</xsl:text>
<li>
<xsl:choose>
<xsl:when test="@address">
<a href="#{@address}">
<xsl:value-of select="ddue:title"/>
</a>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="ddue:title"/>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="normalize-space(ddue:summary)">
<xsl:apply-templates select="ddue:summary/node()"/>
</xsl:if>
</li>
<xsl:text>&#160;</xsl:text>
<xsl:text>&#xa;</xsl:text>
</xsl:if>
</xsl:template>
<!-- ============================================================================================
Bibliography
============================================================================================= -->
<xsl:key name="k_citations" match="//ddue:cite" use="text()"/>
<xsl:variable name="g_hasCitations" select="boolean(count(//ddue:cite) > 0)"/>
<xsl:template match="ddue:cite" name="t_ddue_cite">
<xsl:variable name="v_currentCitation" select="text()"/>
<xsl:for-each select="//ddue:cite[generate-id(.)=generate-id(key('k_citations',text()))]">
<!-- Distinct citations only -->
<xsl:if test="$v_currentCitation=.">
<xsl:choose>
<xsl:when test="document($bibliographyData)/bibliography/reference[@name=$v_currentCitation]">
<sup>
<a>
<xsl:attribute name="href">
#cite<xsl:value-of select="position()"/>
</xsl:attribute>[<xsl:value-of select="position()"/>]
</a>
</sup>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates/>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:template>
<xsl:template match="ddue:bibliography" name="t_ddue_bibliography">
<xsl:if test="$g_hasCitations">
<xsl:call-template name="t_putSectionInclude">
<xsl:with-param name="p_titleInclude" select="'bibliographyTitle'"/>
<xsl:with-param name="p_content">
<xsl:call-template name="t_autogenBibliographyLinks"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
<xsl:template name="t_autogenBibliographyLinks">
<xsl:for-each select="//ddue:cite[generate-id(.)=generate-id(key('k_citations',text()))]">
<!-- Distinct citations only -->
<xsl:variable name="v_citation" select="."/>
<xsl:variable name="entry" select="document($bibliographyData)/bibliography/reference[@name=$v_citation]"/>
<xsl:call-template name="bibliographyReference">
<xsl:with-param name="number" select="position()"/>
<xsl:with-param name="data" select="$entry"/>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<document>
<reference />
<syntax />
<comments />
<metadata />
</document>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<document>
<metadata />
</document>

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 597 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 608 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 589 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

Some files were not shown because too many files have changed in this diff Show More