Package.CreateRelationship 方法

定义

创建与给定的部件的包级别关系。

重载

CreateRelationship(Uri, TargetMode, String)

使用给定的 URI、目标模式和关系类型创建与部件的包级别关系。

CreateRelationship(Uri, TargetMode, String, String)

创建与具有给定 URI、目标模式、关系类型和标识符的部件的包级关系, (ID) 。

示例

下面的示例演示如何在 和根文档部件之间Package创建 PackageRelationship

// Add the Document part to the Package
PackagePart packagePartDocument =
    package.CreatePart(partUriDocument,
                   System.Net.Mime.MediaTypeNames.Text.Xml);

// Copy the data to the Document Part
using (FileStream fileStream = new FileStream(
       documentPath, FileMode.Open, FileAccess.Read))
{
    CopyStream(fileStream, packagePartDocument.GetStream());
}// end:using(fileStream) - Close and dispose fileStream.

// Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri,
                           TargetMode.Internal,
                           PackageRelationshipType);
' Add the Document part to the Package
Dim packagePartDocument As PackagePart = package.CreatePart(partUriDocument, System.Net.Mime.MediaTypeNames.Text.Xml)

' Copy the data to the Document Part
Using fileStream As New FileStream(documentPath, FileMode.Open, FileAccess.Read)
    CopyStream(fileStream, packagePartDocument.GetStream())
End Using ' end:using(fileStream) - Close and dispose fileStream.

' Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri, TargetMode.Internal, PackageRelationshipType)

注解

包级关系定义包与关联的目标部件或资源之间的关联。 包级关系可以是两种形式之一。

在包关系中,包被视为关系的“所有者”。 删除包时,包拥有的所有关系也会被删除。 创建或删除关系的过程不会以任何方式以物理方式改变目标部件或资源。

有关其他信息,请参阅开放打包约定 (OPC) 规范,可从 https://www.ecma-international.org/publications-and-standards/standards/ecma-376/下载。

CreateRelationship(Uri, TargetMode, String)

Source:
Package.cs
Source:
Package.cs
Source:
Package.cs
Source:
Package.cs

使用给定的 URI、目标模式和关系类型创建与部件的包级别关系。

public:
 System::IO::Packaging::PackageRelationship ^ CreateRelationship(Uri ^ targetUri, System::IO::Packaging::TargetMode targetMode, System::String ^ relationshipType);
public System.IO.Packaging.PackageRelationship CreateRelationship (Uri targetUri, System.IO.Packaging.TargetMode targetMode, string relationshipType);
member this.CreateRelationship : Uri * System.IO.Packaging.TargetMode * string -> System.IO.Packaging.PackageRelationship
Public Function CreateRelationship (targetUri As Uri, targetMode As TargetMode, relationshipType As String) As PackageRelationship

参数

targetUri
Uri

目标部件的统一资源标识符 (URI)。

targetMode
TargetMode

指示目标部件对包来说是 Internal 还是 External

relationshipType
String

唯一定义关系的角色的 URI。

返回

与指定部件的包级别关系。

例外

targetUrirelationshipTypenull

targetUri 部件为 PackageRelationship,或 targetModeInternal,而 targetUri 为绝对 URI。

targetMode 的值无效。

包未打开(已调用了 Dispose(Boolean)Close())。

包为只读。

示例

下面的示例演示如何使用 CreateRelationship 在 和根文档部件之间Package创建 PackageRelationship

// Add the Document part to the Package
PackagePart packagePartDocument =
    package.CreatePart(partUriDocument,
                   System.Net.Mime.MediaTypeNames.Text.Xml);

// Copy the data to the Document Part
using (FileStream fileStream = new FileStream(
       documentPath, FileMode.Open, FileAccess.Read))
{
    CopyStream(fileStream, packagePartDocument.GetStream());
}// end:using(fileStream) - Close and dispose fileStream.

// Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri,
                           TargetMode.Internal,
                           PackageRelationshipType);
' Add the Document part to the Package
Dim packagePartDocument As PackagePart = package.CreatePart(partUriDocument, System.Net.Mime.MediaTypeNames.Text.Xml)

' Copy the data to the Document Part
Using fileStream As New FileStream(documentPath, FileMode.Open, FileAccess.Read)
    CopyStream(fileStream, packagePartDocument.GetStream())
End Using ' end:using(fileStream) - Close and dispose fileStream.

' Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri, TargetMode.Internal, PackageRelationshipType)

注解

包级关系定义包与关联的目标部件或资源之间的关联。 包级关系可以是两种形式之一。

  • Package在 包中的 到目标部件之间。
  • Package在 到包外部的目标资源之间。

在包关系中,包被视为关系的“所有者”。 删除包时,包拥有的所有关系也会被删除。

CreateRelationship 不会以任何方式以物理方式更改目标部件或资源。

关系的目标不能是另一个关系。

如果 targetMode 指定为 InternaltargetUri 则必须是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范构成的相对 URI。 内部相对 URI 可以是以正斜杠 (“/”) 字符(如“/page1.xaml”或“/images/picture4.jpg”)开头的绝对路径,也可以是相对路径,如“.”。/imagespicture1.jpg“,针对包根 (”/“) 作为基 URI 进行解析。

如果 targetMode 指定为 ExternaltargetUri 可以是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范形成的绝对 URI 或相对 URI。 http://www.microsoft.com/page2.xml 是引用外部目标资源“page2.xml”的绝对 URI 的示例。 “images/picture1.jpg”是相对 URI 的一个示例,该 URI 也引用外部目标资源“1.jpg”,但它根据包本身的 URI 进行解析。

relationshipType 必须是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范构成的 URI。 下表显示了开放打包约定 (OPC) 规范定义的包级 relationshipType URI。

包级关系 关系类型 URI
核心属性 http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties
数字签名 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature
数字签名证书 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate
数字签名源 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin
缩略图 http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail

有关打包和包关系的详细信息,请参阅开放打包约定 (OPC) 规范的第 1.3 部分,可在 下载 https://www.ecma-international.org/publications-and-standards/standards/ecma-376/

另请参阅

适用于

CreateRelationship(Uri, TargetMode, String, String)

Source:
Package.cs
Source:
Package.cs
Source:
Package.cs
Source:
Package.cs

创建与具有给定 URI、目标模式、关系类型和标识符的部件的包级关系, (ID) 。

public:
 System::IO::Packaging::PackageRelationship ^ CreateRelationship(Uri ^ targetUri, System::IO::Packaging::TargetMode targetMode, System::String ^ relationshipType, System::String ^ id);
public System.IO.Packaging.PackageRelationship CreateRelationship (Uri targetUri, System.IO.Packaging.TargetMode targetMode, string relationshipType, string? id);
public System.IO.Packaging.PackageRelationship CreateRelationship (Uri targetUri, System.IO.Packaging.TargetMode targetMode, string relationshipType, string id);
member this.CreateRelationship : Uri * System.IO.Packaging.TargetMode * string * string -> System.IO.Packaging.PackageRelationship
Public Function CreateRelationship (targetUri As Uri, targetMode As TargetMode, relationshipType As String, id As String) As PackageRelationship

参数

targetUri
Uri

目标部件的统一资源标识符 (URI)。

targetMode
TargetMode

指示目标部件对包来说是 Internal 还是 External

relationshipType
String

唯一定义关系的角色的 URI。

id
String

唯一 XML 标识符。

返回

与指定部件的包级别关系。

例外

targetUrirelationshipTypenull

targetUri 部件为 PackageRelationship,或 targetModeInternal,而 targetUri 为绝对 URI。

targetMode 的值无效。

包未打开(已调用了 Dispose(Boolean)Close())。

包为只读。

id 不是有效的 XML 标识符;或者包中已存在具有指定的 id 的部件。

示例

下面的示例演示如何使用 CreateRelationship 在 和根文档部件之间Package创建 PackageRelationship

// Add the Document part to the Package
PackagePart packagePartDocument =
    package.CreatePart(partUriDocument,
                   System.Net.Mime.MediaTypeNames.Text.Xml);

// Copy the data to the Document Part
using (FileStream fileStream = new FileStream(
       documentPath, FileMode.Open, FileAccess.Read))
{
    CopyStream(fileStream, packagePartDocument.GetStream());
}// end:using(fileStream) - Close and dispose fileStream.

// Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri,
                           TargetMode.Internal,
                           PackageRelationshipType);
' Add the Document part to the Package
Dim packagePartDocument As PackagePart = package.CreatePart(partUriDocument, System.Net.Mime.MediaTypeNames.Text.Xml)

' Copy the data to the Document Part
Using fileStream As New FileStream(documentPath, FileMode.Open, FileAccess.Read)
    CopyStream(fileStream, packagePartDocument.GetStream())
End Using ' end:using(fileStream) - Close and dispose fileStream.

' Add a Package Relationship to the Document Part
package.CreateRelationship(packagePartDocument.Uri, TargetMode.Internal, PackageRelationshipType)

注解

包级关系定义包与关联的目标部件或资源之间的关联。 包级关系可以是两种形式之一。

  • Package在 包中的 到目标部件之间。
  • Package在 到包外部的目标资源之间。

在包关系中,包被视为关系的“所有者”。 删除包时,包拥有的所有关系也会被删除。

CreateRelationship 不会以任何方式以物理方式更改目标部件或资源。

关系的目标不能是另一个关系。

id 必须是有效的 XML 标识符。 类型 id 为 xsd:ID,必须遵循 XML 架构第 2 部分:数据类型规范中指定的命名约定, (请参阅 https://www.w3.org/TR/xmlschema-2/#ID) 。

如果 id 指定为 null ,将自动生成唯一 ID。 id由空字符串指定的 无效。

如果 targetMode 指定为 InternaltargetUri 则必须是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范构成的相对 URI。 内部相对 URI 可以是以正斜杠 (“/”) 字符(如“/page1.xaml”或“/images/picture4.jpg”)开头的绝对路径,也可以是相对路径,如“.”。/imagespicture1.jpg“,针对包根 (”/“) 作为基 URI 进行解析。

如果 targetMode 指定为 ExternaltargetUri 可以是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范形成的绝对 URI 或相对 URI。 http://www.microsoft.com/page2.xml 是引用外部目标资源“page2.xml”的绝对 URI 的示例。 “images/picture1.jpg”是相对 URI 的一个示例,该 URI 也引用外部目标资源“1.jpg”,但它根据包本身的 URI 进行解析。

relationshipType 必须是根据 RFC 3986 统一资源标识符 (URI) 泛型语法规范构成的 URI。 下表显示了开放打包约定 (OPC) 规范定义的包级 relationshipType URI。

包级关系 关系类型 URI
核心属性 http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties
数字签名 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/signature
数字签名证书 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/certificate
数字签名源 http://schemas.openxmlformats.org/package/2006/relationships/digital-signature/origin
缩略图 http://schemas.openxmlformats.org/package/2006/relationships/metadata/thumbnail

有关打包和包关系的其他信息,请参阅开放打包约定 (OPC) 规范的第 1.3 部分,可在 下载 https://www.ecma-international.org/publications-and-standards/standards/ecma-376/

另请参阅

适用于