RCDC(리소스 제어 표시 구성) 리소스는 Microsoft Identity Manager 2016 SP1(MIM) 데이터 저장소의 다른 리소스가 최종 사용자에게 UI(사용자 인터페이스)에 표시되는 방식을 제어하는 데 사용할 수 있는 사용자 정의 리소스입니다. 각 RCDC 리소스에는 UI 텍스트 및 UI 컨트롤을 추가, 수정 또는 제거하도록 변경할 수 있는 XML 구성 파일이 포함되어 있습니다. MIM 2016 SP1은 몇 가지 기본 RCDC 리소스를 제공하지만 사용자 지정 리소스에 대한 사용자 지정 RCDC 리소스를 만들 수도 있습니다. FIM 포털에서 RCDC UI를 사용하는 방법에 대한 자세한 내용은 FIM 설명서의 FIM 포털 구성 및 사용자 지정 소개를 참조하세요.
알려진 문제
많은 RCDC 컨트롤의 기본값은 지원되지 않습니다.
이 릴리스에서는 옵션 단추 컨트롤을 제외하고 리소스 컨트롤의 컨트롤에서 기본값 설정이 지원되지 않습니다. 사용자가 선택 항목을 변경하도록 강제하는 값과 연결되지 않은 기본값을 지정하여 드롭다운 상자에서 이 문제를 해결할 수 있습니다. 다른 컨트롤에서 이 문제를 해결하려면 권한 부여 워크플로를 사용하여 요청을 제출하는 동안 기본값을 제공해야 합니다.
기본 구조
RCDC 리소스에 대한 XML 데이터는 단일 ObjectControlConfiguration XML 요소로 구성됩니다.
메모
전체 XSD 스키마는 부록 A: 기본 XSD 스키마참조하세요.
다음은 ObjectControlConfiguration 요소에 대한 XSD 스키마입니다.
<xsd:element name="ObjectControlConfiguration"\>
<xsd:complexType\>
<xsd:sequence\>
<xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:Panel"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:TypeName"/>
<xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
</xsd:complexType>
</xsd:element>
ObjectControlConfiguration 요소에는 다음 요소가 포함됩니다.
ObjectDataSource: 이 요소는 RC(Resource Control)에서 사용하는 데이터 원본 클래스의 TypeName을 지정합니다. 설명 및 스키마 정의는 이 문서의 다음 데이터 원본 섹션을 참조하세요. ObjectControlConfiguration 요소는 ObjectDataSource 요소의 노드를 최대 32개까지 포함할 수 있습니다.
XmlDataSource: 요약 페이지의 디자인을 지정하는 데 가장 일반적으로 사용되는 간단한 데이터 원본입니다. 설명 및 스키마 정의는 이 문서의 다음 데이터 원본 섹션을 참조하세요. ObjectControlConfiguration: 요소는 XmlDataSource 요소의 노드를 최대 32개까지 포함할 수 있습니다.
패널: 관리자는 패널 요소 내의 요소를 수정하여 RCDC 페이지의 레이아웃을 사용자 지정할 수 있습니다. 자세한 내용은 이 문서의 뒷부분에 있는 패널 섹션을 참조하세요. ObjectControlConfiguration 요소에는 Panel 요소가 하나만 있어야 합니다.
이벤트: 관리자가 사용자 지정된 코드를 제공할 수 없으므로 이 기능은 제한됩니다. 이는 상태 변경에 따라 패널 또는 컨트롤이 내보낼 수 있는 이벤트입니다. 자세한 내용은 이 문서의 뒷부분에 있는 이벤트 섹션을 참조하세요. ObjectControlConfiguration 요소에는 필요에 따라 하나의 Event 요소가 포함될 수 있습니다. 일반적으로 사용자 지정 이벤트 사용은 나중에 향상된 기능에서 특별히 개발되지 않는 한 지원되지 않습니다.
데이터 원본
Microsoft Identity Manager는 데이터를 UI 구성 요소에 바인딩하는 방법으로 데이터 원본을 사용합니다. 이렇게 하면 프레젠테이션 계층에서 데이터를 쉽게 분리할 수 있습니다. RCDC 리소스 구성 데이터에는 두 가지 종류의 데이터 원본이 있습니다. ObjectDataSource 및 xmlDataSource .
ObjectDataSources RC에 데이터를 제공하는 Microsoft .NET 클래스를 지정합니다. 관리자가 RCDC를 작성할 때 사용하도록 선택할 수 있는 사용 가능한 ObjectDataSources 유형 집합이 고정되어 있습니다.
XMLDataSources는 XML 기반 데이터를 구성하는 간단한 방법을 제공할 있으며, 관리자가 사용자 지정 데이터를 제공하는 데 사용할 수 있습니다. 미리 정의된 기본 제공 XML 구조를 사용하지 않는 한 XML 데이터는 RCDC에서 직접 지정해야 합니다. 기본 제공 XML 구조는 RC에서 요약 페이지를 생성하는 데 사용됩니다.
RCDC에서 이러한 데이터 원본을 RCDC에 지정된 UI 컨트롤의 특성에 바인딩하여 UI를 생성할 수 있습니다.
ObjectDataSource 요소
Microsoft Identity Manager는 다음 표에서 모든 리소스 유형에 사용할 수 있는 공통 데이터 원본 형식을 제공합니다(명시된 경우 제외).
유형 이름 | 설명 | 양방향 바인딩 | 바인딩 구문 |
---|---|---|---|
PrimaryResourceObjectDataSource | 생성, 편집 또는 표시 중인 FIM 2010 리소스를 나타냅니다. 바인딩 문자열의 경로는 특성 이름입니다. 리소스 종류는 RCDC가 아닌 RCDC의 TargetObjectType 특성에 의해 지정됩니다. ConfigurationData 특성입니다. | 예 | 이름으로 지정된 개체 특성의 값을 [AttributeName] . |
PrimaryResourceDeltaDataSource | 이 데이터 원본은 FIM 2010 리소스의 원래 상태와 현재 상태를 비교하는 델타 XML을 빌드합니다. 생성된 델타 XML은 사용자가 제출하는 요청에 대해 UI를 렌더링하기 위해 RC 요약 컨트롤에서 사용됩니다. | 아니오 |
DeltaXml 요약 컨트롤과 함께 델타를 표시하는 데 사용됩니다. |
PrimaryResourceRightsDataSource | 이 데이터 원본은 FIM 2010 리소스의 각 특성에 대한 인라인 권한을 제공합니다. 이를 통해 RC는 제출 전에 사용자가 해당 특성에 대해 가지고 있는 권한을 확인한 다음 해당 특성에 대한 UI를 적절하게 렌더링할 수 있습니다. | 아니오 | [AttributeName] |
SchemaDataSource | 이 데이터 원본은 표시 이름, 설명, 특성이 필요한지 여부 및 리소스 종류 정보와 같은 스키마 관련 정보에 액세스하는 데 사용할 수 있습니다. | 아니오 |
[AttributeName].Required 특성에 유효한 값이 있어야 하는지 여부를 나타내는 부울 값입니다. [AttributeName].DisplayNameString 바인딩의 표시 이름을 나타내는 값입니다. [AttributeName].DescriptionString 바인딩의 설명을 나타내는 값입니다. 바인딩의 String Regex를 나타내는 [AttributeName].StringRegexString 값입니다. [AttributeName].DisplayName [AttributeName].Description [AttributeName].IntegerValueMinimum [AttributeName].IntegerValueMaximum [AttributeName].LocalizedAllowedValues |
DomainDataSource | 이 데이터 원본은 도메인 구성 리소스에 따라 도메인의 열거형을 제공합니다. 이 데이터 원본은 그룹 리소스 및 사용자 리소스에 대한 RCDC에서만 사용할 수 있습니다. | 예 | 도메인 |
다음은 세 개의 데이터 원본을 UocTextBox 컨트롤에 바인딩하여 그룹의 Description 특성을 편집하는 RCDC 코드 조각의 예입니다.
<my:ObjectDataSource my:TypeName="PrimaryResourceObjectDataSource" my:Name="object" my:Parameters=""/>
<my:ObjectDataSource my:TypeName="SchemaDataSource" my:Name="schema"/>
<my:ObjectDataSource my:TypeName="PrimaryResourceRightsDataSource" my:Name="rights"/>
<my:Control my:Name="Description" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Description.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Description}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
<my:Property my:Name="Rows" my:Value="3"/>
<my:Property my:Name="Columns" my:Value="60"/>
<my:Property my:Name="MaxLength" my:Value="450"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=Description, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
XMLDataSource 요소
XMLDataSource 요소를 사용하여 RCDC가 지정된 리소스에 사용할 수 있는 사용자 지정 데이터를 지정할 수 있습니다. 이 경우 XML 데이터를 RCDC에 지정해야 합니다. 또는 이 데이터 원본을 사용하여 기본 제공 XML 데이터 구조를 참조하여 요약 페이지의 UI를 렌더링할 수 있습니다. RCDC에서 정의할 때 사용할 XMLDataSource 유형을 제어합니다.
유형 이름 | 설명 | 양방향 바인딩 | 바인딩 구문 |
---|---|---|---|
XMLDataSource | 데이터 원본은 XML 데이터를 나타냅니다. 데이터는 XSL 또는 포함된 XSL 형식일 수 있습니다.
|
아니오 |
Xpath[;namespaces] 유효한 XML xpath인 Xpath 필수 노트(가장 자주 "/"(루트)를 선택합니다.
namespaces 접두사=URI 문자열의 선택적 목록입니다. 문자열은 Xpath가 이름 간격 XML에 대해 작동하는 데 필요한 대로 세미콜론으로 구분됩니다. |
ReferenceDeltaDataSource | 데이터 원본은 다중값 참조 특성의 델타를 나타냅니다. 그룹 및 집합에 대한 RCDC에서만 사용됩니다. 데이터 원본은 그룹 또는 집합으로 제한되지 않지만 이러한 델타를 제출하려면 RCDC 호스트의 코드 변경이 필요합니다. 현재 그룹 및 집합은 이 데이터 원본을 인식하는 유일한 호스트입니다. |
예 |
[AttributeName].Add 참조 특성을 나타내고 반환되는 데이터가 델타 추가인 [AttributeName] .
[AttributeName].Remove 참조 특성을 나타내고 반환되는 데이터가 델타 제거인 [AttributeName] . DeltaXml |
RequestDetailsDataSource | 데이터 원본은 Request 개체의 RequestParameter 특성을 나타냅니다. 매개 변수는 다중값 특성당 표시할 최대 특성 값 수를 설정합니다. 요청용 RCDC에서만 사용됩니다. <my:ObjectDataSource my:TypeName="RequestDetailsDataSource" my:Name="requestDetails" my:Parameters="1000" /> |
아니오 | DeltaXml |
RequestStatusDataSource | 데이터 원본은 Request 개체의 RequestStatusDetails 특성을 나타냅니다. 요청용 RCDC에서만 사용됩니다. | 아니오 | DeltaXml |
사용자 지정 XML 데이터 원본을 정의하려면 다음 XML을 사용합니다.
<my:XmlDataSource my:Name="MyCustomData" >
%Insert custom, properly formatted XML data here%
</my:XmlDataSource>
기본 제공 요약 컨트롤 XSL을 사용하려면 다음과 같이 데이터 원본을 정의합니다.
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
사용자 지정 리소스 종류에 대한 RCDC를 만드는 경우 이 메서드를 사용하여 해당 사용자 지정 리소스에 대한 요약 페이지를 자동으로 렌더링할 수 있습니다.
다음은 기본 제공 XSL을 사용하여 XMLDataSource 요소와 함께 PrimaryResourceDeltaDataSource 요소를 사용하여 RCDC에서 요약 탭을 만드는 방법의 예입니다.
<my:ObjectDataSource my:TypeName="PrimaryResourceDeltaDataSource" my:Name="delta" />
<my:XmlDataSource my:Name="summaryTransformXsl" my:Parameters="Microsoft.IdentityManagement.WebUI.Controls.Resources.DefaultSummary.xsl" />
<my:Grouping my:Name="summaryGroup" my:Caption="Summary” my:IsSummary="true">
<my:Control my:Name="summaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}" />
<my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}" />
</my:Properties>
</my:Control>
</my:Grouping>
또는 사용자가 이전에 지정한 XmlDataSource 요소를 다음 형식으로 바꾸어 요약 페이지의 사용자 지정된 레이아웃을 정의할 수 있습니다. 참고로 기본 FIM 2010 요약 XSL은 부록 B: 기본 요약 XSL에 포함되어 있으며, 이 문서의 뒷부분에 있습니다.
<my:XmlDataSource my:Name="summaryTransformXsl">
Insert valid XSL code here
</my:XmlDataSource>
데이터 원본에 대한 스키마
다음 XSD 스키마는 두 가지 유형의 데이터 원본을 생성합니다.
<xsd:element name="ObjectDataSource">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XmlDataSource">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
이벤트 요소
Event 요소는 Control의 변경 상태를 정의합니다. 이벤트가 트리거된 후 동작을 정의하기 위해 사용자 지정된 함수(처리기)를 작성할 수 없으므로 이 기능의 확장성이 제한됩니다. Panel 요소에서 동일한 Event 요소를 사용할 수 있습니다. 자세한 내용은 이 문서의 뒷부분에 있는 패널 섹션을 참조하세요.
다음은 Event 요소에 대한 XSD 스키마입니다.
<xsd:element name="Events">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Event">
xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Handler"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
이벤트 빈 요소이며 다음과 같은 특성이 있습니다.
이름: 이벤트의 고유한 이름입니다. ObjectControlConfiguration 유일하게 지원되는 이벤트는 Load 이벤트입니다. 이 이벤트는 페이지가 처음 로드될 때 트리거됩니다.
처리기: 처리기의 고유한 이름입니다. 이벤트가 트리거되면 일반적으로 컨트롤의 상태 변경을 처리하기 위해 프로그램 메서드가 호출됩니다. 지원되지 않는 경우는 다음과 같습니다.
- 기존 컨트롤에서 기존 처리기를 제거합니다.
- 새 처리기 만들기
- 기존 또는 새 컨트롤에 처리기 연결
다음은 Events 요소의 예입니다.
<my:Events>
<my:Event my:Name="Load" my:Handler="OnLoad"/>
</my:Events>
Panel 요소
Panel 요소는 RCDC 레이아웃의 핵심 요소입니다. 다음은 Panel 요소에 대한 XSD 스키마입니다.
<xsd:element name="Panel">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:DisplayAsWizard"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:AutoValidate"/>
</xsd:complexType>
</xsd:element>
Panel 요소에는 그룹화 되풀이 요소가 포함됩니다. 자세한 내용은 이 문서의 그룹화 섹션을 참조하세요.
Panel 요소에는 다음과 같은 특성이 있습니다.
이름: 패널의 이름입니다. 필수 문자열 형식 특성입니다.
DisplayAsWizard : 이 특성은 현재 사용되지 않습니다. RCDC의 해당 VerbContext 특성은 리소스 레이아웃이 마법사 모드 또는 탭 모드인지를 제어합니다. 0(만들기 모드)으로 설정되면 마법사 모드에도 적용됩니다. 그렇지 않으면 탭 모드에 있습니다. 자세한 내용은 설명서에서 FIM 포털 구성 및 사용자 지정 소개를 참조하세요.
캡션: 이 특성은 현재 사용되지 않습니다. 사용자는 머리글 정보만 포함하는 그룹을 포함하여 페이지에 대한 캡션을 지정할 수 있습니다. 자세한 내용은 이 문서의 그룹화 섹션을 참조하세요.
자동 유효성 검사: 선택적 부울 특성입니다. true로 설정된 경우 현재 탭의 각 컨트롤에 대해 유효성 검사가 트리거됩니다. 기본적으로 특성이 누락된 경우 true로 설정됩니다. RegularExpression 속성과 함께 사용할 수 있습니다. 자세한 내용은 이 문서의 뒷부분에 있는 "RegularExpression"을 참조하세요.
Grouping 요소
Grouping 요소는 패널의 전체 레이아웃을 정의합니다. 개별 컨트롤을 서로 다른 섹션과 탭으로 그룹화하는 컨테이너 역할을 합니다. 다음은 Grouping 요소에 대한 XSD 스키마입니다.
<xsd:element name="Grouping">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:IsHeader"/>
<xsd:attribute ref="my:IsSummary"/>
</xsd:complexType>
</xsd:element>
Grouping 요소에는 다음 세 가지 유형이 있습니다.
헤더 그룹화: 헤더 그룹화는 선택 사항입니다. 패널머리글 그룹화는 하나만 있을 수 있습니다. 패널 위에 캡션으로 머리글 그룹화가 나타납니다. 이 그룹화에서는 하나의 UocCaptionControl만 사용할 수 있습니다. 헤더 그룹화의 예제는 샘플 섹션을 참조하세요.
콘텐츠 그룹화: 하나 이상의 콘텐츠 그룹화가 필요합니다. 패널에는 여러 콘텐츠 그룹화가 있을 수 있습니다. 콘텐츠 그룹화는 RCDC 페이지의 기본 콘텐츠로 나타납니다. 각 콘텐츠 그룹화는 동일한 패널에 탭으로 표시되며 1~256개의 컨트롤을 보유할 수 있습니다. 콘텐츠 그룹화예제는 예제 섹션을 참조하세요.
요약 그룹화: 요약 그룹화는 선택 사항입니다. 패널에는 하나의 요약 그룹화만 있을 수 있습니다. 요약 그룹화는 패널의 마지막 탭으로 나타납니다. 요약 그룹화에서 UocHtmlSummary 컨트롤을 하나만 사용하여 요청을 제출하기 전에 사용자가 변경한 내용을 표시할 수 있습니다. 요약 그룹화의 예는 예제 섹션을 참조하세요.
각 그룹화 형식에는 다음 요소가 포함됩니다.
도움말: 이 요소는 탭에 도움말 텍스트를 제공합니다. 탭의 도움말 파일에 대한 링크를 추가하는 데 사용할 수도 있습니다.
컨트롤: 이 요소에 대한 자세한 내용은 이 문서의 Control 섹션을 참조하세요. 각 그룹화에는 그룹화 유형에 따라 1~256개의 컨트롤이 포함되어야 합니다.
이벤트: 이 요소에 대한 자세한 내용은 이 문서의 이벤트 섹션을 참조하세요. 각 그룹화는 옵션으로 하나의 이벤트를 가질 수 있습니다. Grouping 요소에서 지원되는 이벤트는 다음과 같습니다.
- BeforeLeave: 사용자가 콘텐츠 그룹화에서 탭을 떠날 준비가 되면 이 이벤트가 트리거됩니다.
- AfterEnter: 사용자가 콘텐츠 그룹화에 탭을 입력할 준비가 되면 이 이벤트가 트리거됩니다.
그룹화에는 다음 7개의 특성이 포함될 수 있습니다.
이름: 그룹화의 필수 이름입니다. 이름패널내에서 고유해야 합니다.
캡션: 캡션 머리글 그룹화에서 머리글 캡션으로 나타납니다. 콘텐츠 또는 요약 그룹화의 탭 캡션으로 나타납니다.
설명: 선택적 문자열 특성인 설명 콘텐츠 그룹화에서 사용되는 경우에만 작동합니다. 이 요소를 사용하여 최종 사용자에게 동일한 탭 내의 정보에 대한 세부 정보를 제공합니다.
메모
이 특성이 요약 그룹화에 사용되는 경우 XML은 잘못된 것으로 간주됩니다. 이 특성이 헤더 그룹화에서 사용되는 경우 XML은 유효하지만 무시되는 것으로 간주됩니다.
사용: 선택적 부울 특성인 Enabled는 누락된 경우 true로 설정됩니다. Enabled가 false로 설정되면 최종 사용자에게 사용 안 함 탭이 표시됩니다. 이 특성은 콘텐츠 그룹에서만 작동합니다.
메모
이 특성이 요약 그룹화에 사용되는 경우 XML은 잘못된 것으로 간주됩니다. 이 특성이 헤더 그룹화에서 사용되는 경우 XML은 유효하지만 무시되는 것으로 간주됩니다.
표시: 이 특성을 false로 설정하여 RCDC 페이지 탭 또는 제목을 숨길 수 있습니다. 기본적으로 이 선택적 부울 형식 특성은 true로 설정됩니다. 이 특성은 콘텐츠 그룹화에서만 작동합니다.
메모
패널에 콘텐츠 그룹화가 하나만 있는 경우 이 기능은 작동하지 않습니다. 패널에 콘텐츠 그룹화가 두 개 이상 있는 경우 앞에서 설명한 대로 동작합니다.
IsHeader: 이 특성은 그룹화가 헤더 그룹화인지 여부를 정의하는 선택적 부울 특성입니다. 이 특성을 지정하지 않으면 false로 설정됩니다.
IsSummary: 그룹화가 요약 그룹화인지 여부를 정의하는 선택적 부울 특성입니다. 이 특성을 지정하지 않으면 false로 설정됩니다.
그룹화 요소의 형식에 대한 예제
이 섹션에는 Groupings 요소에 대한 예제가 포함되어 있습니다.
예: 헤더 그룹화
다음 그림에서는 샘플 헤더 그룹화입니다.
다음 XML에서는 샘플 헤더 그룹화가 생성됩니다. XML에서 헤더 그룹화는 "샘플 헤더 그룹화"라는 캡션 텍스트가 있는 영역입니다.
<!--Sample for a Header Grouping-->
<my:Grouping my:Name="HeaderGroupingSample" my:IsHeader="true">
<my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Header Grouping">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="32"/>
<my:Property my:Name="MaxWidth" my:Value="32"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Header Grouping Sample-->
예: 콘텐츠 그룹화
다음 그림에서는 샘플 콘텐츠 그룹화입니다.
다음 XML에서는 샘플 콘텐츠 그룹화가 생성됩니다. XML에서 콘텐츠 그룹화는 "샘플 콘텐츠 그룹화"라는 캡션 텍스트가 있는 영역입니다.
<!--Sample for a Content Grouping-->
<my:Grouping my:Name="ContentGroupingSample" my:Caption="Sample Content Grouping" my:Description="Some description for content grouping">
<my:Control my:Name="DisplayName" my:TypeName="UocTextBox" my:Caption="Display name" my:Description="This is the display name of the set.">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="MaxLength" my:Value="128"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Content Grouping Sample-->
예: 요약 그룹화
다음 그림에서는 샘플 요약 그룹화입니다.
다음 XML에서는 샘플 요약 그룹화가 생성됩니다. XML에서 요약 그룹화는 "샘플 요약 그룹화"라는 캡션 텍스트가 있는 영역입니다.
<!--Sample for a Summary Grouping-->
<my:Grouping my:Name="Summary" my:Caption="Sample Summary Grouping" my:IsSummary="true">
<my:Control my:Name="SummaryControl" my:TypeName="UocHtmlSummary" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ModificationsXml" my:Value="{Binding Source=delta, Path=DeltaXml}"/>
<my:Property my:Name="TransformXsl" my:Value="{Binding Source=summaryTransformXsl, Path=/}"/>
</my:Properties>
</my:Control>
</my:Grouping>
<!--End of Summary Grouping Sample-->
도움말 요소
Help 요소는 Grouping 또는 Control 요소에 선택적 요소로 포함할 수 있습니다. Grouping에서 사용되는 경우 사용되는 첫 번째 요소여야 합니다. 최종 사용자에게 정확한 정보를 제공하는 데 도움이 되는 텍스트 도움말을 제공합니다. 도움말 요소에 대한 XSD 스키마는 다음과 같습니다.
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
다음 XML 샘플 코드는 도움말 요소를 생성합니다.
<my:Help my:HelpText="Some Help Text for Group Basic Info" my:Link="03e258a0-609b-44f4-8417-4defdb6cb5e9.htm#bkmk_grouping_GroupingBasicInfo" />
Control 요소
Grouping 요소에는 하나 이상의 Control 요소가 포함되어 있습니다. 컨트롤은 RCDC의 주요 요소입니다. 그룹화 요소에 포함된 다른 Control 요소를 정의하여 그룹화 요소를 사용자 지정할 수 있습니다. Control 요소에 대한 XSD 스키마는 다음과 같습니다.
<xsd:element name="Control">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:CustomProperties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Options" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Buttons" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Properties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:ExpandArea"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:AutoPostback"/>
<xsd:attribute ref="my:RightsLevel"/>
</xsd:complexType>
</xsd:element>
Control 요소에는 다음 요소가 포함됩니다.
도움말: 이 요소는 무시됩니다. 그룹화에서만 작동합니다.
CustomProperties: 이 요소는 지원되지 않습니다.
옵션: 이 요소는 UocDropDownList 또는 UocRadioButtonList 컨트롤과 함께 사용됩니다. 다른 컨트롤에서 작동하지 않습니다. 이 요소의 구조는 이 문서의 옵션 섹션을 참조하세요. 컨트롤에서 옵션을 사용하는 방법을 보려면 이 문서의 개별 컨트롤 섹션을 참조하세요.
단추: 이 요소는 UocListView Control과 함께만 사용됩니다. 다른 컨트롤에는 작동하지 않습니다. 자세한 내용은 이 문서의 UocListView 섹션을 참조하세요.
속성: 이 요소는 모든 컨트롤에서 Control의 추가 동작을 지정하는 데 사용됩니다. 이 요소에 대한 자세한 내용은 이 문서의 속성 섹션을 참조하세요.
이벤트: 이 요소의 구조는 이 문서의 앞부분에 있는 이벤트 섹션을 참조하세요. 컨트롤에서 사용되는 이벤트를 보려면 이 문서의 개별 컨트롤 섹션을 참조하세요.
Control 요소에는 다음과 같은 10개의 특성이 포함될 수 있습니다.
이름: 컨트롤의 이름입니다. 컨트롤의 이름은 각 패널 내에서 고유해야 합니다. 필수 문자열 형식 특성입니다.
TypeName: 이 특성은 컨트롤 형식을 지정합니다. 필수 문자열 형식 특성입니다. 각 컨트롤 이름에 대해서는 이 문서의 개별 컨트롤 섹션을 참조하세요.
캡션: 이 특성을 사용하여 컨트롤에 대한 캡션을 포함할 수 있습니다. 캡션은 일반적으로 컨트롤이 표시하거나 입력하는 데이터의 표시 이름입니다. 캡션의 값을 명시적으로 지정하거나 스키마 특성 표시 이름 정보를 사용하여 바인딩할 수 있습니다. 캡션은 일반 크기 컨트롤의 맨 왼쪽에 나타납니다. 컨트롤이 전체 화면에 걸쳐 있으면 캡션이 컨트롤 위에 나타납니다. 선택적 문자열 형식 특성입니다. 특성 또는 속성 값을 사용하여 데이터 원본을 바인딩하는 방법에 대한 자세한 내용은 속성 섹션을 참조하세요.
다음 예제에서는 캡션을 명시적으로 사용하는 방법을 보여줍니다.
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias">…<my:Control/>
다음 예제에서는 데이터 원본에서 캡션을 사용할 수 있는 방법을 보여줍니다. 이 문서의 앞부분에 표시된 데이터 원본에 템플릿을 사용한 경우 데이터 원본은 스키마입니다. 특성의 DisplayName을 Caption 특성과 바인딩하는 것이 좋습니다.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}">…<my:Control/>
사용: 선택적 부울 형식 특성입니다. 이 특성 값을 false로 설정하면 사용자가 Control을 사용하지 않도록 설정할 수 있습니다. 기본값은 true로 설정됩니다.
표시: 선택적 부울 형식 특성입니다. 이 특성을 사용하여 전체 컨트롤을 숨길 수 있습니다. 기본값은 true로 설정됩니다.
설명: 이 선택적 문자열 형식 특성을 사용하여 최종 사용자가 컨트롤에 배치해야 하는 내용 또는 컨트롤의 작업을 이해하는 데 도움이 되는 설명을 포함합니다. 설명에 대한 값을 명시적으로 지정하거나 스키마 특성 설명 정보와 바인딩할 수 있습니다.
설명은 캡션 아래에 있는 일반 크기 컨트롤의 맨 왼쪽에 나타납니다. 컨트롤이 전체 화면에 걸쳐 있는 경우 설명은 캡션 아래 컨트롤의 맨 위에 나타납니다. 특성 또는 속성 값을 사용하여 데이터 원본을 바인딩하는 방법에 대한 자세한 내용은 이 문서의 속성 섹션을 참조하세요.
다음 예제에서는 설명을 명시적으로 사용하는 방법을 보여줍니다.
<my:Control my:Name="ExplicitAlias" my:TypeName="UocTextBox" my:Caption="Explicit Alias" my:Description="This is explicit description.">…<my:Control/>
이 예제에서는 데이터 원본에서 설명을 사용할 수 있는 방법을 보여줍니다. 이 문서의 앞부분에 표시된 데이터 원본에 템플릿을 사용한 경우 데이터 원본은 스키마 . 특성의 Description Description 특성과 바인딩하는 것이 좋습니다.
<my:Control my:Name="DynamicAlias" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=Alias.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=Alias.Description, Mode=OneWay}">…<my:Control/>
ExpandArea: 이 특성은 컨트롤이 전체 화면에 걸쳐 있는지 여부를 나타냅니다. 선택적 부울 형식 특성입니다. 기본값은 false로 설정됩니다.
메모
이 특성이 true로 설정되면 캡션 및 설명 특성을 사용할 수 없습니다. UocLabel 컨트롤을 사용하여 확장된 컨트롤에 대한 캡션을 제공합니다.
힌트: 선택적 문자열 형식 특성입니다. Hint 특성의 텍스트는 최종 사용자가 컨트롤에 유효한 입력을 결정하는 데 도움이 됩니다. 힌트가 컨트롤 아래에 나타납니다.
자동 포스트백: 선택적 부울 형식 특성입니다. 기본값은 false입니다. false로 설정하면 페이지를 새로 고치면 컨트롤이 새로 고쳐지지 않을 수 있습니다. AutoPostback에 대한 자세한 내용은 동일한 이름의 Microsoft ASP.NET UI 컨트롤 속성을 찾습니다.
RightsLevel: 선택적 문자열 형식 특성입니다. 이 특성은 데이터 원본을 사용하여 인라인 권한으로만 바인딩할 수 있습니다. 컨트롤은 사용자의 권한에 따라 동적으로 켜지거나 사용하지 않도록 설정됩니다. 특성 또는 속성 값을 사용하여 데이터 원본을 바인딩하는 방법에 대한 자세한 내용은 이 문서의 속성 섹션을 참조하세요.
이 예제에서는 RightsLevel 특성을 데이터 원본과 함께 사용하는 방법을 보여줍니다. 이 문서의 앞부분에 표시된 데이터 원본에 템플릿을 사용한 경우 데이터 원본은 권한을. 특성 이름을 경로로 사용합니다.
속성 요소
Property 요소를 사용하여 각 컨트롤의 동작을 추가로 사용자 지정할 수 있습니다. 속성은 빈 요소입니다. Property 요소에 대한 XSD 스키마는 다음과 같습니다.
<xsd:element name="Properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Property">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Value"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
모든 속성에는 다음과 같은 두 가지 필수 특성이 있습니다.
이름: 이 문자열 형식 특성은 속성의 고유한 이름입니다. 컨트롤에 따라 속성이 다릅니다. 모든 컨트롤에서 사용할 수 있는 몇 가지 일반적인 속성이 있습니다. 지정된 컨트롤에 사용할 수 있는 이름에 대한 자세한 내용은 이 문서의 공통 속성 및 개별 컨트롤 섹션을 참조하세요.
값: 속성의 값입니다. 값의 데이터 형식은 할당된 속성에 따라 달라집니다. 특정 속성에 허용되는 값 형식은 다음 섹션을 참조하세요.
데이터 원본 콘텐츠를 사용하여 속성 바인딩
일부 속성은 데이터 원본의 정보로 바인딩할 수 있습니다. 이 바인딩을 만들려면 다음 문자열 형식을 사용합니다. 데이터 원본과 속성을 바인딩하는 방법을 알아보려면 이 문서의 개별 컨트롤 섹션에 있는 개별 속성에 대한 설명을 참조하세요.
<my:Property my:Name="Required" my:Value="[Formatted String]"/>
Formatted String := “{Binding “ + [SourceExpression] + “,” + [PathExpression] + “,” + [ModeExpression]? + “}
SourceExpression:= “Source=” + [ObjectDataSourceName]
PathExpression:= “Path=” + [AttributeName]|[AttributePropertyName]
ModeExpression:= “Mode=” + [ModeChoice]
ModeChoice:= “OneWay”|”TwoWay”
ObjectDataSourceName:= The value of any string assign to node /ObjectControlConfiguration/ObjectDataSource/Name.
AttributeName:= valid schema attribute name from the data source.
AttributePropertyName:= valid property name of a schema attribute from the data source.
다음 XML에서는 데이터 원본을 Property 요소에 바인딩하는 방법을 보여 있습니다.
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
일반 속성
이 문서에 지정된 모든 RCDC 컨트롤에는 이 섹션에 설명된 공통 속성이 있을 수 있습니다. 이러한 속성을 다른 컨트롤과 관련된 다른 속성과 함께 사용할 수 있습니다.
필수: 이 속성은 필드가 필수 필드이거나 선택적 필드임을 나타냅니다. 필수 필드는 값으로 채워야 합니다. 빈 값은 문자열 입력에 대해 지원되지 않습니다. 선택적 필드는 비워 둘 수 있습니다. 값이 입력되지 않은 필수 필드인 경우 입력 컨트롤 위에 오류 메시지가 나타납니다. 필드가 필요한지 선택적 필드인지 명시적으로 지정할 수 있습니다. 특성과 리소스 종류 간에 지정된 바인딩의 스키마 정보를 사용하여 필드를 바인딩할 수도 있습니다. 기본적으로 이 속성이 없으면 컨트롤이 선택적 입력 컨트롤임을 의미합니다.
다음 예제에서는 이 속성에 대해 명시적 값을 사용합니다.
<my:Property my:Name="Required" my:Value="True"/>
이 속성에 동적 데이터 원본을 사용하는 예제입니다. 이 문서의 이전 섹션에 표시된 데이터 원본에 템플릿을 사용한 경우 데이터 원본은 스키마입니다.
<attribute name>.Required
경로로 사용합니다.<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required}"/>
ReadOnly: 이 속성을 true로 설정하면 최종 사용자가 읽기 전용 모드에서 컨트롤을 경험하게 됩니다. 선택적 부울 형식 특성입니다. 기본값은 false로 설정됩니다. 그러나 경우에 따라 이 속성의 동작은 컨트롤을 사용하여 데이터 바인딩에 대해 사용자가 가진 권한 유형에 의해 덮어쓰여집니다. 예를 들어 사용자에게 필드를 업데이트할 권한이 없으며 필드가 인라인 권한으로 바인딩된 경우 사용자는 이 속성이 false로 설정되어 있더라도 데이터를 읽기 전용 모드로 볼 수 있습니다.
RegularExpression: 이 속성은 컨트롤의 값에 적용되는 제한을 지정합니다. 이 속성 값의 형식은 .NET StringRegex 표준에서 지원되는 형식입니다. 자세한 내용은 .NET Framework 정규식 참조하세요. 컨트롤이 값을 입력하는 데 사용되는 경우 사용자가 현재 페이지를 나가려고 할 때 이 속성에 지정된 제한에 대해 값을 확인합니다. 잘못된 입력이 있는 컨트롤 위에 오류 메시지가 나타납니다. 사용자는 문자열 정규식을 명시적으로 지정할 수 있습니다. 사용자는 지정된 특성의 스키마 정보를 사용하여 바인딩할 수도 있습니다. 기본적으로 이 속성이 누락된 경우 컨트롤이 입력 문자열에 대한 제한을 확인하지 않음을 의미합니다.
다음 예제에서는 이 속성에 대해 명시적 값을 사용합니다.
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
이 속성에 동적 데이터 원본을 사용하는 예제입니다. 이 문서에 앞서 표시된 데이터 원본에 템플릿을 사용한 경우 데이터 원본은 스키마입니다.
<attribute name>.StringRegex
경로로 사용합니다.<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=Alias.StringRegex, Mode=OneWay}"/>
표시: 선택적 부울 형식 특성입니다. 이 특성을 사용하여 전체 컨트롤을 숨길 수 있습니다. 기본값은 true로 설정됩니다.
Options 요소
Options 요소에는 하나 이상의 Option 하위 노드가 포함됩니다. Options 요소는 UocRadioButtonList 및 UocDropDownList 컨트롤에만 사용됩니다. 이러한 컨트롤을 사용하는 방법에 대한 자세한 내용은 이 문서의 개별 컨트롤 섹션을 참조하세요.
Options 요소에 대한 XSD 스키마는 다음과 같습니다.
<xsd:element name="Options">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Option">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Options 요소에는 다음과 같은 특성이 있습니다.
값: 문자열 형식의 필수 특성입니다. 값 특성은 동일한 컨트롤 내에서 고유해야 합니다. A부터 Z까지만 대/소문자를 구분하지 않는 문자를 사용할 수 있습니다.
캡션: 이 필수 특성은 각 옵션의 표시 이름입니다.
힌트: 선택적 특성입니다. 이 특성을 사용하여 최종 사용자에게 자세한 정보와 힌트를 제공할 수 있습니다.
환경 변수
다음 환경 변수는 모든 RCDC 구성에서 사용할 수 있습니다.
변수 | 설명 |
---|---|
<LoginID> |
현재 로그인한 사용자의 ID를 표시합니다. |
<LoginDomain> |
현재 로그인한 사용자의 도메인을 표시합니다. |
<Today> |
현재 날짜 및 시간을 표시합니다. |
<FromToday_nnn> |
현재 날짜와 nnn 및 시간을 표시합니다. 여기서 nnn 정수입니다. |
<ObjectID> |
RCDC 기본 리소스 ID입니다. |
<Attribute_xxx> |
RCDC 주 리소스의 지정된 특성 xxx를 반환합니다. |
XML 구성 파일 디버그
RCDC에 대한 XML 구성 파일을 개발하거나 수정하는 경우 Microsoft Visual Studio와 같은 편집기를 사용하여 XSD 파일에 대해 XML의 유효성을 검사하여 오류를 줄일 수 있습니다. 자세한 내용은 Visual Studio 2005XML 도구 소개를 참조하세요.
도움말 파일 사용자 지정
새 리소스 및 특성을 만드는 경우 FIM 포털의 기존 도움말 파일을 사용자 지정된 리소스에 대한 콘텐츠로 업데이트할 수 있습니다. FIM 포털의 도움말 파일은 .htm 형식이며 수동으로 편집할 수 있습니다. 사용자 지정 특성을 만드는 방법에 대한 자세한 내용은 FIM 2010 설명서에서 사용자 지정 리소스 및 특성 관리 소개를 참조하세요.
중요합니다
HTML 서식 지정 또는 편집의 기본 사항에 대한 정보는 이 문서에 제공되지 않습니다. 사용자는 HTML 파일을 편집하는 방법을 알아야 합니다.
도움말 파일의 위치
Microsoft Identity Manager 2016 SP1 포털의 모든 도움말 파일은 MIM 서비스 서버의 폴더 <ProgramFiles>\Common Files\Microsoft Shared\Web Server Extensions\12\Template\Layouts\MSILM2\Help\1033\html
있습니다.
특정 도움말 파일 찾기
FIM 포털에 대한 모든 도움말 파일의 이름은 GUID(Globally Unique Identifier)로 지정됩니다. 사용자 지정 리소스에 대한 올바른 파일을 찾으려면 다음을 수행합니다.
FIM 포털에서 사용자 지정하려는 포털 페이지에서 도움말 파일을 엽니다.
도움말 파일을 마우스 오른쪽 단추로 클릭하고 속성선택합니다.
<GUID\>.htm
필드에서 파일을 강조 표시하고 복사합니다.도움말 파일이 저장된 폴더로 이동하여 파일을 검색합니다.
기존 Grouping 요소에서 특성에 대한 콘텐츠 추가
기존 Grouping 요소(탭) 내에서 새 특성에 대한 설명 콘텐츠를 추가하려면 다음을 참조하세요.
적절한 도움말 파일을 식별하고 찾습니다.
HTML 편집기를 사용하여 파일을 엽니다.
콘텐츠를 추가할 위치를 찾습니다. 일반적으로 다음과 같은 추가 단락에 있습니다.
<p xmlns="">A new paragraph with customized information.</p>
기존 목록에 삽입된 항목일 수도 있습니다. 예를 들면 다음과 같습니다.
<li class="unordered"><b>First Name</b> – The first name of the User.<br> <li class="unordered"><b>Last Name</b> - The last name of the User.<br> <li class="unordered"><b>Added a new line</b><br>
기존 Grouping 요소에 대한 콘텐츠 추가
대부분의 FIM 포털 페이지에는 여러 그룹화 요소(또는 탭)가 있으며, 함께 제공되는 도움말 파일에는 각 Grouping 요소와 관련된 책갈피가 지정된 섹션이 있습니다. HTML의 책갈피는 섹션에 지정됩니다. 예를 들어 FIM 포털의 사용자 만들기 페이지에 대한 도움말 파일의 작업 정보 탭에 대한 HTML입니다.
<a name="bkmk_grouping_WorkInfo" xmlns=""></a><h3 class="subHeading" xmlns="">Work Info</h3><p class="subHeading" xmlns=""></p><div class="subSection" xmlns="">
Configuration for User Creation RCDC에 대한 구성 데이터 XML 파일의 Grouping 요소 WorkInfo 참조됩니다.
\<GUID\>.htm
파일 이름과 책갈피는 my:Link
매개 변수에 지정됩니다.
<my:Grouping my:Name="WorkInfo" my:Caption="%SYMBOL_WorkInfoTabCaption_END%" my:Enabled="true" my:Visible="true"> <my:Help my:HelpText="%SYMBOL_WorkInfoTabHelpText_END%" my:Link="5e18a08b-4b20-48b8-90c6-c20f6cbeeb44.htm#bkmk_grouping_WorkInfo"/>
간단한 컨트롤 샘플
이 섹션에서는 다양한 간단한 텍스트 상자 컨트롤을 만들기 위한 샘플을 제공합니다.
다음 그림에서는 다양한 모드의 몇 가지 간단한 텍스트 상자 컨트롤을 보여 줍니다.
다음 코드 세그먼트는 모든 특성 및 속성에 명시적 텍스트를 사용하는 첫 번째 텍스트 상자 컨트롤을 만듭니다.
<!-- Sample for a simple control to use explicit information. (with hints)-->
<my:Control my:Name="ExplicitControl" my:TypeName="UocTextBox" my:Caption="Explicit Control" my:Description="This is explicit description." my:Hint="This is a Hint (enter any text).">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="RegularExpression" my:Value="[A-Z]*"/>
<my:Property my:Name="Text" my:Value="Enter Information Here"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use explicit information.-->
다음 코드 세그먼트는 동적 바인딩 기술을 사용하여 컨트롤을 다른 데이터 원본과 연결하는 두 번째 텍스트 상자 컨트롤을 만듭니다.
<!-- Sample for a simple control to use stored data information.-->
<my:Control my:Name="DynamicControl" my:TypeName="UocTextBox" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=DisplayName, Mode=OneWay}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=DisplayName.Required, Mode=OneWay}"/>
<my:Property my:Name="RegularExpression" my:Value="{Binding Source=schema, Path=DisplayName.StringRegex, Mode=OneWay}"/>
<my:Property my:Name="Text" my:Value="{Binding Source=object, Path=DisplayName, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple control to use stored data information.-->
다음 코드 세그먼트는 세 번째로 확장된 레이블 및 텍스트 상자 컨트롤을 만듭니다.
<!-- Sample for a simple expanded control with caption control.-->
<my:Control my:Name="SampleExpandLabel" my:TypeName="UocLabel" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Text" my:Value="This is an expanded control."/>
</my:Properties>
</my:Control>
<my:Control my:Name="ExpandedControl" my:TypeName="UocTextBox"
my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Required" my:Value="false"/>
<my:Property my:Name="Columns" my:Value="40"/>
<my:Property my:Name="Text" my:Value="Expanded control (enter text)"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple expanded control.-->
다음 코드 세그먼트는 네 번째 비활성화된 텍스트 상자 컨트롤을 만듭니다. 이 컨트롤은 사용 안 함 상태와 사용 상태 간에 표시되는 차이를 표시하지 않지만 사용자는 더 이상 텍스트 상자에 데이터를 입력할 수 없습니다.
<!-- Sample for a simple disabled control.-->
<my:Control my:Name="DisabledControl" my:TypeName="UocTextBox" my:Caption="Disabled Control" my:Description="This is disabled simple control." my:Enabled="false">
<my:Properties>
<my:Property my:Name="Required" my:Value="false"/>
<my:Property my:Name="MaxLength" my:Value="128"/>
<my:Property my:Name="Text" my:Value="Disabled control"/>
</my:Properties>
</my:Control>
<!-- End of Sample for a simple disabled control.-->
개별 컨트롤
이 섹션에서는 Microsoft Identity Manager 2016 SP1과 함께 제공되는 개별 컨트롤을 설명합니다.
UocButton
이름: UocButton
설명: 특정 작업을 트리거하는 데 사용할 수 있는 간단한 단추 컨트롤입니다. 그러나 사용자 고유의 처리기를 지정할 수 없으므로 이 컨트롤의 사용이 제한됩니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
텍스트: 이 속성은 단추에 나타나는 텍스트를 지정합니다. 선택적 문자열 형식 특성입니다. 텍스트는 명시적 문자열 값을 사용합니다.
이벤트:
- OnButtonClicked: 단추를 클릭하면 이벤트가 내보내집니다.
예제:
UocButton 컨트롤UocButton control
다음 XML 세그먼트는 간단한 UocButton 컨트롤 단추를 생성합니다.
<!--Sample enabled simple button control-->
<my:Control my:Name="ButtonControl" my:TypeName="UocButton" my:Caption="SampleButton" my:Description="This is a simple button."
my:Hint="Click the button">
<my:Properties>
<my:Property my:Name="Required" my:Value="True"/>
<my:Property my:Name="Text" my:Value="Click Me"/>
</my:Properties>
</my:Control>
<!--End of sample enabled simple button control -->
UocCaptionControl
이름: UocCaptionControl
설명: 이 컨트롤은 RCDC 페이지의 캡션을 표시하는 데 사용됩니다. 이 컨트롤은 헤더 그룹화에서 단일 컨트롤로만 사용하도록 설계되었습니다. 다른 컨텍스트에서 사용하면 렌더링 문제 또는 포털 오류가 발생할 수 있습니다.
모드: 읽기 전용(OneWay)
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
MaxHeight: 이 속성은 캡션 섹션에서 아이콘의 최대 높이를 지정합니다. 이 속성은 선택 사항입니다. 이 속성은 정수 값을 픽셀 단위로 사용합니다. 기본값은 32픽셀입니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
UocCaptionControl 컨트롤UocCaptionControl control
다음 코드 세그먼트는 헤더 캡션생성합니다.
<!--Sample header caption control-->
<my:Control my:Name="SampleHeaderCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Header Caption" my:Description="Description Starts here.">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="32"/>
<my:Property my:Name="MaxWidth" my:Value="32"/>
</my:Properties>
</my:Control>
<!--End of sample header caption control-->
다음 코드 세그먼트는 명시적 콘텐츠 캡션생성합니다.
<my:Control my:Name="SampleContentCaption" my:TypeName="UocCaptionControl" my:ExpandArea="true" my:Caption="Sample Explicit Content Caption" my:Description="Explicit content caption with smaller icon">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="20"/>
<my:Property my:Name="MaxWidth" my:Value="20"/>
</my:Properties>
</my:Control>
<!--End of sample caption-->
다음 코드 세그먼트는 동적 캡션을 표시 이름을 생성합니다.
<!--Sample content dynamic caption-->
<my:Control my:Name="Caption3" my:TypeName="UocCaptionControl" my:Caption="{Binding Source=schema, Path=DisplayName.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=DisplayName.Description, Mode=OneWay}"/>
<!--End of sample caption -->
UocCheckBox
이름: UocCheckBox
설명: 간단한 확인란 컨트롤입니다. 사용자가 이 컨트롤을 부울 형식 데이터와 바인딩하는 것이 좋습니다. 이 컨트롤은 바인딩되는 데이터를 기반으로 읽기 전용 컨트롤 또는 업데이트 가능한 컨트롤로 사용할 수 있습니다.
메모
이 릴리스에서는 편집 모드에서 확인란 컨트롤을 사용하여 부울 특성을 표시할 때 특성에 이전에 할당된 값이 없는 경우 편집 모드에서 확인 클릭할 때 특성에 false 값을 추가합니다. 해결 방법은 항상 존재하지 않는 것이 false 동일하다고 가정하는 부울 특성을 만들거나 부울 특성에 대한 라디오 단추와 같은 다른 컨트롤을 사용하는 것입니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
DefaultValue: 선택적 부울 형식 속성입니다. 기본값은 false로 설정됩니다. 이 필드는 확인란의 기본 동작을 지정합니다. 명시적으로 지정할 수 있습니다.
선택한: 선택적 부울 형식 속성입니다. 기본값은 false로 설정됩니다. 이 값은 DefaultValue와 함께 있을 때 DefaultValue 속성을 덮어씁니다. 이 필드는 확인란의 동작을 지정합니다. DefaultValue와 마찬가지로 명시적으로 지정하거나 서버의 데이터로 바인딩할 수 있습니다.
텍스트: 선택적 문자열 형식 특성입니다. 확인란의 오른쪽에 텍스트가 표시됩니다. 이 속성을 사용하여 최종 사용자에게 자세한 정보를 제공하는 텍스트를 지정할 수 있습니다.
이벤트:
- CheckedChanged: 확인란이 상태를 변경하면 이 이벤트가 내보내집니다.
예제:
다음 예제에서는 사용자 지정 리소스 종류와 isConfigurationType 특성 간에 사용자 지정 바인딩이 만들어집니다. XML은 사용자 지정 리소스 유형의 RCDC에서 사용됩니다.
UocCheckBox 컨트롤UocCheckBox control
다음 코드 세그먼트는 이전 그림의 동적 확인란처럼 동적 확인란을 생성합니다. 이 유형의 바인딩은 명시적 확인란보다 더 다양하고 유용합니다. 특성은 현재 리소스 종류에 속해야 합니다.
<!--Sample dynamic check box-->
<my:Control my:Name="SampleDynamicCheckBox" my:TypeName="UocCheckBox" my:Caption="Dynamic Check Box" my:Description="This is a dynamic check box. It saves to data source." my:RightsLevel="{Binding Source=rights, Path=IsConfigurationType}">
<my:Properties>
<my:Property my:Name="Text" my:Value="{Binding Source=schema, Path=IsConfigurationType.DisplayName, Mode=OneWay}"/>
<my:Property my:Name="Checked" my:Value="{Binding Source=object, Path=IsConfigurationType, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of sample dynamic check box -->
UocCommonMultiValueControl
이름: UocCommonMultiValueControl
설명: 특수 문자열 서식을 지원하는 여러 줄 텍스트 상자 컨트롤입니다. 다중값 항목의 각 값은 텍스트 상자의 세미콜론(;) 또는 줄 바꿈)으로 서로 구분됩니다. 이 컨트롤을 다중값, 짧은 문자열 및 정수 형식의 데이터와 바인딩하는 것이 좋습니다. 이 컨트롤은 읽기 전용 모드와 업데이트 가능한 모드를 모두 지원합니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
DataType: 필수 문자열 형식 특성입니다. 이를 문자열, 정수또는 DateTime 형식으로 명시적으로 지정할 수 있습니다. 스키마 특성의 DataType 속성을 사용하여 특성을 바인딩할 수도 있습니다. 다중값 참조 형식은 UOCListView 또는 UOCIdentityPicker 처리해야 합니다. 다중값 부울은 지원되는 데이터 형식이 아닙니다.
행: 선택적 정수 형식 특성입니다. 상자의 높이를 문자 수로 정의할 수 있습니다. 기본값은 1로 설정됩니다.
열: 선택적 정수 형식 특성입니다. 상자의 너비(문자 수)를 정의할 수 있습니다. 기본값은 20으로 설정됩니다.
값: 선택적 문자열 형식 특성입니다. 이 특성은 데이터 원본에만 바인딩할 수 있습니다.
이벤트:
- ValueListChanged: 이 이벤트는 컨트롤의 현재 값이 변경될 때 트리거됩니다.
예제:
다음 예제에서는 AMultiValueString 명명된 다중값 문자열 특성이 만들어지고 사용자 지정 리소스 형식에 바인딩됩니다. 이 예제는 이 바인딩을 만든 후에만 작동합니다.
UocCommonMultiValueControl 컨트롤UocCommonMultiValueControl control
다음 코드 세그먼트는 UocCommonMultiValueControl 컨트롤을 생성합니다.
<!--Sample multivalue control-->
<my:Control my:Name="SampleDynamicMultiValueControl" my:TypeName="UocCommonMultiValueControl" my:Caption="{Binding Source=schema, Path=AMultiValueString.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=AMultiValueString.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=AMultiValueString}">
<my:Properties>
<my:Property my:Name="Rows" my:Value="6"/>
<my:Property my:Name="Columns" my:Value="60"/>
<my:Property my:Name="DataType" my:Value="String"/>
<!--not supported for above property my:Value={Binding Source=schema, Path=AMultiValueString.DataType, Mode=OneWay}"/>-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AMultiValueString, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of sample multivalue control -->
UocDateTimeControl
이름: UocDateTimeControl
설명: 텍스트 상자 컨트롤과 비슷하지만 설명 특정 형식만 허용합니다. 읽기 전용 모드에서는 레이블처럼 표시됩니다. 지원되는 입력 문자열의 형식은 이 섹션의 DateTimeFormat 속성을 참조하세요.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
DateTimeFormat: 선택적 문자열 형식 특성입니다. 지원되는 형식은 DateTime 및 DateOnly. 기본값은 DateTime 형식으로 설정됩니다.
DateTime: 특성의 형식은 mm/dd/yyyy hh:mm:ss AM입니다.
DateOnly: 특성의 형식은 mm/dd/yyyy입니다.
메모
차이를 지정하는 사용자에 관계없이 DateTime 및 DateOnly 형식이 모두 지원됩니다.
값: 선택적 문자열 형식 특성입니다. 이 특성을 리소스 데이터 원본에 바인딩합니다. 이 특성의 값은 올바른 날짜/시간 형식을 준수해야 합니다.
이벤트:
- DateTimeChanged: datetime 값이 변경되면 이벤트가 발생합니다.
예제:
UocDateTimeControl 컨트롤UocDateTimeControl control
다음 코드 세그먼트는 첫 번째 DateTime 컨트롤을 생성합니다.
<!--Sample explicit DateTime control-->
<my:Control my:Name="SampleExplicitDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="Explicit Date Time Control" my:Description="The data shown here is explicit and in date time format.">
<my:Properties>
<my:Property my:Name="DateTimeFormat" my:Value="DateTime"/>
<my:Property my:Name="Value" my:Value="11/11/2008 00:00:00"/>
</my:Properties>
</my:Control>
<!--End of sample explicit DateTime control -->
다음 코드 세그먼트는 두 번째 DateTime 컨트롤을 생성합니다. 데이터 원본 섹션에서 샘플 코드를 사용한 경우 ExpirationTime 특성은 모든 리소스 유형에 바인딩됩니다. 따라서 다음 코드와 함께 사용할 수 있습니다.
<!--Sample dynamic DateTime control-->
<my:Control my:Name="SampleDynamicDateTimeControl" my:TypeName="UocDateTimeControl" my:Caption="{Binding Source=schema, Path=ExpirationTime.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ExpirationTime.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ExpirationTime}">
<my:Properties>
<my:Property my:Name="DateTimeFormat" my:Value="DateOnly"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExpirationTime, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of dynamic explicit DateTime control -->
UocDropDownList
이름: UocDropDownList
설명: 간단한 드롭다운 상자 컨트롤입니다. 이 컨트롤은 정의된 선택 집합에서 옵션을 선택하는 데 사용됩니다. 문자열, 정수, 날짜/시간 및 부울의 데이터 형식은 이 컨트롤에 적합한 후보입니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
ValuePath: ItemSource에서 Value 특성을 가져올 속성입니다. ItemSource를 Custom으로 지정하면 값 경로가 값으로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 값 필드와 바인딩됩니다.
CaptionPath: ItemSource에서 Value 특성을 가져올 속성입니다. ItemSource를 Custom으로 지정하면 값 경로가 Caption으로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 캡션 필드와 바인딩됩니다.
HintPath: ItemSource에서 Value 특성을 가져올 속성입니다. ItemSource를 Custom으로 지정하면 값 경로가 힌트로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 힌트 필드와 바인딩됩니다.
ItemSource: 목록에서 선택 항목을 정의하는 ListControlItems의 컬렉션입니다. 사용자는 명시적으로 이를 Custom으로 설정하고 이 섹션에 설명된 대로 Option 요소를 사용하여 문자열 값을 지정할 수 있습니다.
SelectedValue: 현재 선택된 값입니다. 필수 문자열 형식 속성입니다. 이 속성은 데이터 원본의 문자열 데이터와 바인딩됩니다.
이벤트:
- SelectedIndexChanged: 드롭다운 상자의 선택 항목이 변경될 때 이벤트가 발생합니다.
옵션:
Options 요소의 구조는 Options 요소참조하세요.
값: 단일 Options 요소의 값은 컨트롤이 바인딩하는 데이터 원본의 유효한 입력인 모든 문자열로 설정할 수 있습니다.
캡션: 캡션은 문자열 값일 수 있습니다.
힌트: 힌트는 문자열 값일 수 있습니다.
예제:
UocDropDownList 컨트롤UocDropDownList control
UocDropDownList 컨트롤Options in a UocDropDownList control옵션
메모
샘플이 작동하려면 RCDC가 적용되는 사용자 지정 리소스 형식으로 범위 기존 문자열 형식 특성을 바인딩해야 합니다.
다음 코드 세그먼트는 드롭다운 목록을 생성합니다.
<!--Sample for drop-down list control-->
<my:Control my:Name="Scope" my:TypeName="UocDropDownList" my:Caption="{Binding Source=schema, Path=Scope.DisplayName}" my:RightsLevel="{Binding Source=rights, Path=Scope}">
<my:Options>
<my:Option my:Value="DomainLocal" my:Caption="Domain Local" my:Hint="to secure a local resource (i.e. a file share on your computer)" />
<my:Option my:Value="Global" my:Caption="Global" my:Hint="to secure resources across your team or division" />
<my:Option my:Value="Universal" my:Caption="Universal" my:Hint="to use this group across your organization" />
</my:Options>
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Scope.Required" />
<my:Property my:Name="ValuePath" my:Value="Value" />
<my:Property my:Name="CaptionPath" my:Value="Caption" />
<my:Property my:Name="HintPath" my:Value="Hint" />
<my:Property my:Name="ItemSource" my:Value="Custom" />
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=Scope, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for drop-down list control-->
UocFileDownload
이름: UocFileDownload
설명: 이 컨트롤에는 하이퍼링크가 포함되어 있습니다. 하이퍼링크를 클릭하면 Windows 파일 저장 페이지가 나타납니다. 사용자는 로컬 드라이브에 파일을 저장할 수 있습니다. Internet Explorer에서 파일 형식을 렌더링할 수 있는 경우에도 열기 옵션이 지원됩니다. 이 컨트롤을 사용하는 데 권장되는 데이터 형식은 서식이 지정된 문자열(XML) 및 이진 형식입니다.
메모
Microsoft Identity Manager 2016 SP1 릴리스에서는 사용자가 파일을 연 Internet Explorer 창을 닫은 다음 페이지를 새로 고쳐야 합니다. Internet Explorer 창을 새로 고치면 사용자는 다운로드를 시작하여 원래 창에서 동일한 파일을 다시 저장하거나 열 수 있습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
텍스트: 하이퍼링크 텍스트를 정의하는 선택적 문자열 형식 특성입니다. 사용자는 이 속성에 대한 명시적 문자열을 지정할 수 있습니다.
값: 필수 특성입니다. 콘텐츠를 다운로드할 서버의 특성 바인딩을 지정합니다.
PromptedFileName: 선택적 문자열 형식 특성입니다. 다운로드한 파일을 저장할 때 사용자에게 제안되는 파일 이름입니다.
contentType : 필수 문자열 형식 특성입니다. 데이터가 저장되는 파일 형식입니다. 텍스트 또는 이진 파일은 지원되는 두 문자열 옵션입니다. 텍스트인 경우 반환 값은 긴 문자열로 간주됩니다. 그렇지 않으면 이진 파일의 경우 반환 값은 바이트[]로 간주됩니다. 텍스트를 선택한 경우 사용자는 옵션으로 접미사를 추가하여 텍스트의 형식을 지정할 수 있습니다. 예를 들어 text/xml은 유효합니다.
메모
이 컨트롤에 바인딩된 값이 비어 있으면 컨트롤에 다운로드 작업을 트리거하는 데 사용할 하이퍼링크가 없습니다. 다운로드할 항목이 없기 때문입니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
UocFileDownload 컨트롤UocFileDownload control
메모
이 샘플 파일을 업로드하기 전에 사용자는 사용자 지정 리소스 유형과 기존 ConfigurationData 특성 간에 바인딩을 만들어야 합니다.
다음 코드 세그먼트는 파일 다운로드 컨트롤을 생성합니다.
<!--Sample dynamic download control-->
<my:Control my:Name="SampleDynamicFileDownloadControl" my:TypeName="UocFileDownload" my:Caption="{Binding Source=schema, Path=ConfigurationData.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ConfigurationData.Description, Mode=OneWay}" my:RightsLevel="{Binding Source=rights, Path=ConfigurationData}">
<my:Properties>
<my:Property my:Name="Text" my:Value="Download Dummy xml"/>
<my:Property my:Name="PromptedFileName" my:Value="DummyXML.xml"/>
<my:Property my:Name="ContentType" my:Value="text/xml"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ConfigurationData}"/>
</my:Properties>
</my:Control>
<!--End of dynamic download control -->
UocFileUpload
이름: UocFileUpload
설명: 이 컨트롤에는 업로드할 로컬 파일의 위치, 파일 찾아보기 단추 및 업로드 단추를 표시하는 텍스트 상자가 포함되어 있습니다. 최종 사용자가 찾아보기 단추를 클릭하면 Windows 파일 열기 창이 나타납니다. 최종 사용자는 업로드할 로컬 드라이브에서 하나의 파일을 선택할 수 있습니다. 파일을 선택하면 텍스트 상자에 파일의 위치가 표시됩니다. 업로드 단추를 클릭하면 파일이 클라이언트 쪽 로컬 데이터 원본에 업로드됩니다. 파일 콘텐츠가 서버에 아직 제출되지 않았습니다. 이 컨트롤을 사용하는 데 권장되는 데이터 형식은 형식이 지정된 문자열(XML) 또는 이진 형식과 같습니다.
메모
업로드 진행률 또는 상태에 대한 표시는 없습니다. 파일이 로컬 데이터 원본에 업로드되면 텍스트 상자가 지워집니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
값: 필수 특성입니다. 데이터가 업로드되는 서버에서 스키마 특성 바인딩을 지정합니다.
ContentType: 선택적 문자열 형식 특성입니다. 파일이 서버에 저장되는 데이터 형식입니다. 텍스트 또는 이진으로 설정할 수 있습니다. 속성이 없으면 기본값은 Binary입니다.
MaxFileSize: 선택적 문자열 형식 특성입니다. MaxFileSize는 업로드된 파일 크기가 얼마나 큰지 정의합니다. 기본적으로 속성이 누락된 경우 최대 크기는 1MB입니다.
PromptedForNoValue: 선택적 문자열 형식 특성입니다. 파일이 업로드되지 않을 때 사용자에게 표시되는 텍스트를 정의합니다.
이벤트:
- FileUploaded: 파일이 성공적으로 업로드되면 이 이벤트가 내보내집니다.
예제:
UocFileUpload 컨트롤UocFileUpload control
메모
다음 샘플 코드가 작동하려면 ABinaryAttribute라는 새 이진 형식 특성을 만든 다음 사용자 지정 리소스 종류와 이 특성 간에 새 바인딩을 만들어야 합니다.
다음 코드 세그먼트는 업로드 컨트롤을 생성합니다.
<!--Sample dynamic upload control-->
<my:Control my:Name="SampleDynamicFileUploadControl" my:TypeName="UocFileUpload" my:Caption="{Binding Source=schema, Path=ABinaryAttribute.DisplayName, Mode=OneWay}" my:Description="{Binding Source=schema, Path=ABinaryAttribute.Description, Mode=OneWay}” my:RightsLevel="{Binding Source=rights, Path=ABinaryAttribute}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABinaryAttribute.Required}"/>
<my:Property my:Name="ContentType" my:Value="Binary"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ABinaryAttribute, Mode=TwoWay}"/>
</my:Properties>
</my:Control>
<!--End of dynamic upload control -->
UocFilterBuilder
이름: UocFilterBuilder
설명: 사용자가 MIM 2016 XPath 식을 렌더링할 수 있는 복잡한 컨트롤입니다. 일부 XPath 식은 지원되지 않습니다. 필터 작성기를 사용하는 방법에 대한 자세한 내용은 필터 작성기 도움말을 참조하세요.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
PermittedObjectTypes: 필터 작성기의 select 문에 표시할 리소스 종류 목록을 정의합니다. 필터 작성기를 사용하는 방법에 대한 자세한 내용은 필터 작성기 도움말을 참조하세요. 문자열은 ResourceTypeA, ResourceTypeB 형식으로, 각 리소스 종류는 ',' 쉼표로 구분됩니다.
값: 필터 작성기를 렌더링하는 값입니다. XPath 식을 포함하는 문자열 형식 데이터가 있는 바인딩만 지원됩니다. 필터 특성은 이 컨트롤을 바인딩하는 데 권장되는 특성입니다.
PreviewButtonVisible: 선택적 부울 형식 속성입니다. 이 속성을 false로 설정하면 사용자에게 미리 보기 단추가 표시되지 않습니다. 기본값은 true로 설정됩니다. 이 단추는 목록 보기 컨트롤과 함께 사용하여 XPath 식의 결과를 미리 볼 수 있습니다.
ExcludeGroupMembership: 부울 속성입니다. 이 속성을 true로 설정하면 <참조 특성>(예: ResourceID)가 <Group 개체>멤버인 필터를 만들 수 없습니다. 즉, 이 속성을 true로 설정하면 그룹 멤버 자격 디렉터리를 사용하는 필터를 만들 수 없습니다.
PreviewButtonCaption: 선택적 문자열입니다. PreviewButtonVisible이 true로 설정된 경우 이 속성을 사용하여 단추에 사용자 지정된 텍스트를 제공할 수 있습니다. 미리 보기 단추에 텍스트가 나타납니다.
이벤트:
- OnFilterChanged: 이 이벤트는 필터 작성기 콘텐츠가 변경될 때 트리거됩니다.
예제:
UocFilterBuilder 컨트롤UocFilterBuilder control
다음 샘플 코드에는 UOCLabel 컨트롤, PermittedObjectTypes를 사용하는 간단한 필터 작성기 및 미리 보기 목록 보기가 포함되어 있습니다. 목록 보기 ListFilter 속성 및 필터 작성기 값 속성을 동일한 데이터 원본 특성으로 가리키면 두 속성을 연결합니다.
메모
이 샘플 코드를 사용하기 전에 기존 필터 특성과 사용자 지정 리소스 유형 간에 새 바인딩을 만듭니다.
<!--Sample filter builder with preview list-->
<my:Control my:Name="ComplexFilterBuilderLabel" my:TypeName="UocLabel" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="Text" my:Value="This is a Filter Builder with preview."/>
</my:Properties>
</my:Control>
<my:Control my:Name="ComplexFilterBuilder" my:TypeName="UocFilterBuilder" my:RightsLevel="{Binding Source=rights, Path=Filter}" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="PermittedObjectTypes" my:Value="Person,Group" />
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Filter, Mode=TwoWay}" />
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Filter.Required, Mode=OneWay}" />
</my:Properties>
</my:Control>
<my:Control my:Name="FilterBuilderwithpreview" my:TypeName="UocListView" my:ExpandArea="true">
<my:Properties>
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName,ObjectType,AccountName" />
<my:Property my:Name="EmptyResultText" my:Value="There is no members according to the filter definition." />
<my:Property my:Name="PageSize" my:Value="10" />
<my:Property my:Name="ShowTitleBar" my:Value="false" />
<my:Property my:Name="ShowActionBar" my:Value="false" />
<my:Property my:Name="ShowPreview" my:Value="false" />
<my:Property my:Name="ShowSearchControl" my:Value="false" />
<my:Property my:Name="EnableSelection" my:Value="false" />
<my:Property my:Name="SingleSelection" my:Value="false" />
<my:Property my:Name="ItemClickBehavior" my:Value=" ModelessDialog "/>
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}" />
</my:Properties>
</my:Control>
<!--end of sample filter builder with preview-->
UocHtmlSummary
이름: UocHtmlSummary
설명: 이 컨트롤을 사용하여 RCDC 페이지에서 요약 페이지를 정의할 수 있습니다. 이 요약 페이지는 최종 사용자가 요청을 제출한 후에 표시됩니다. 이 컨트롤은 요약 그룹화에서만 사용할 수 있으며 유일한 컨트롤이어야 합니다. 제공되는 샘플 코드를 사용하는 것이 좋습니다.
메모
이 컨트롤은 광범위하게 테스트되지 않았습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
ModificationsXml: 이 속성은 {Binding Source=delta, Path=DeltaXml}로 포맷되어야 합니다. 여기서 델타는 구성 헤더 ObjectDataSource에 정의됩니다.
TransformXsl: 이 속성은 {Binding Source=summaryTransformXsl, Path=/}로 포맷됩니다. 여기서 summaryTransformXsl은 구성 헤더 XmlDataSource에 정의됩니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
이 컨트롤의 샘플은 이 문서의 Grouping 요소 섹션에서 요약 그룹화 예제를 참조하세요.
UocHyperLink
이름: UocHyperLink
설명: 간단한 하이퍼링크 컨트롤입니다. 이 컨트롤을 사용하여 정보를 하이퍼링크로 표시할 수 있습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
ObjectReference: 선택적 참조 형식 속성입니다. 이 속성에 정의된 GUID에서 유효한 리소스를 참조하는 경우 하이퍼링크는 최종 사용자에게 리소스에 액세스할 수 있는 방법을 제공합니다. NavigateUrl 속성과 함께 사용할 수 없습니다.
텍스트: 선택적 문자열 형식 속성입니다. 이 속성을 사용하여 하이퍼링크로 표시되는 텍스트를 정의합니다.
NavigateUrl: 선택적 문자열 형식 속성입니다. 이 속성을 사용하여 하이퍼링크가 연결하는 전체 경로 URL을 정의합니다. ObjectReference 속성과 함께 사용할 수 없습니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
UocHyperLink 컨트롤UocHyperLink control
메모
이를 연결하려면 리소스의 유효한 GUID가 필요합니다. 이 경우 두 번째 하이퍼링크는 유효한 GUID를 사용하여 생성됩니다. 첫 번째 웹 사이트는 모든 웹 사이트일 수 있습니다.
다음 코드 세그먼트는 리디렉션 하이퍼링크를 생성합니다.
<!--Sample for a hyperlink that redirects page.-->
<my:Control my:Name="RedirectHyperlink" my:TypeName="UocHyperLink" my:Caption="Redirect Hyperlink" my:Description="This is a hyperlink that takes you to other pages.">
<my:Properties>
<my:Property my:Name="NavigateUrl" my:Value="http://www.microsoft.com"/>
<my:Property my:Name="Text" my:Value="Microsoft Home Page"/>
</my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that redirect page-->
다음 코드 세그먼트는 리소스를 참조하는 하이퍼링크를 생성합니다. 명시적 참조를 {Binding Source=object, Path=Creator} 식으로 바꿔 데이터 원본과 바인딩할 수 있습니다. 이는 리소스의 관리자가 존재하고 참조 형식 값인 경우에만 유효할 수 있습니다.
<!--Sample for a hyperlink that reference object-->
<my:Control my:Name="ReferenceHyperlink" my:TypeName="UocHyperLink" my:Caption="Reference Hyperlink" my:Description="This is a hyperlink gives you an object view of the reference object">
<my:Properties>
<my:Property my:Name="ObjectReference" my:Value="e4e048b1-9e43-415e-806c-cf44c429c34c"/>
<my:Property my:Name="Text" my:Value="View a group in FIM 2010."/>
</my:Properties>
</my:Control>
<!--End of Sample for a hyperlink that reference object-->
UocIdentityPicker
이름: UocIdentityPicker
설명: 이 컨트롤은 선택적 확인 상자와 찾아보기 창으로 구성됩니다. 선택적 확인 상자는 ID를 입력하는 선택적 텍스트 상자, ID를 확인하는 확인 단추, 팝업 찾아보기 창을 표시하는 찾아보기 단추로 구성됩니다. 찾아보기 창을 사용하면 사용자가 목록 보기 컨트롤을 통해 ID를 선택할 수 있습니다. 찾아보기 창에서 선택한 ID가 확인 상자에 반영됩니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
UsageKeywords: 선택적 문자열 속성입니다. 각 키워드를 아포스트로피(')로 구분하는 SearchScopeConfiguration 구조에서 지원하는 사용 키워드 목록을 제공하여 리소스 선택기에서 사용할 검색 범위 목록을 정의할 수 있습니다.
필터: 선택적 문자열 속성입니다. 사용자는 정의된 범위에 맞는 항목만 표시하도록 리소스 선택기 범위를 지정하는 XPath 식을 제공합니다. 이 속성은 UsageKeywords 속성과 함께 사용할 수 없습니다. 검색 범위가 적용되면 이 속성은 영향을 주지 않습니다.
ResultObjectType: 선택적 문자열 속성입니다. 리소스 종류는 팝업 대화 상자 목록에서 리소스를 렌더링하는 데 사용됩니다. 필터와 함께 사용하면 ID 선택기가 필터에서 반환되는 리소스 유형을 식별하고 그에 따라 데이터를 렌더링할 수 있습니다. 이 속성은 UsageKeywords 속성과 함께 사용할 수 없습니다. 검색 범위가 적용되면 아무런 영향을 주지 않습니다. 이 속성에 허용되는 문자열은 유효한 단일 리소스 유형 이름(예: Person)입니다. 필터가 여러 리소스 종류를 반환해야 하는 경우 리소스가 사용됩니다.
PreviewTitle: 목록 보기에 사용되는 미리 보기 제목입니다. 이 속성에 대한 자세한 내용은 UocListView 섹션을 참조하세요.
ListViewTitle: 선택적 문자열 속성입니다. 이 속성을 사용하여 목록 보기 위에 표시된 텍스트를 제목으로 정의할 수 있습니다.
값: 선택적 문자열 속성입니다. 이 값을 스키마 특성과 바인딩하여 값을 데이터 원본에 연결하는 것이 좋습니다.
모드: 선택적 문자열 속성입니다. 이 속성을 사용하여 ID 선택기에서 하나의 값을 선택할 수 있는지 또는 여러 ID를 선택할 수 있는지를 정의합니다. SingleResult 및 MultipleResult는 허용되는 값입니다. 기본적으로 SingleResult로 설정됩니다.
ObjectTypes: 선택적 문자열 형식 속성입니다. 최종 사용자가 ID 선택 확인 상자에서 항목을 확인할 수 있는 리소스 종류 목록을 정의할 수 있습니다. 목록은 ',' 쉼표로 구분된 리소스 유형 이름 목록으로 구성됩니다.
AttributesToSearch: 선택적 문자열 형식 속성입니다. ID 선택기에서 항목을 확인하는 데 사용할 특성 목록을 정의할 수 있습니다. 여기서 목록은 스키마 특성 목록이며 쉼표 ','로 구분됩니다. 예를 들어 AttributesToSearch가
DisplayName, Alias
설정된 경우 사용자는DisplayName = \<search value\>
또는Alias=\<search value\>
사용하여 항목을 검색할 수 있습니다. 여기에 입력된 특성 이름은 Value 속성에 지정된 데이터 원본의 대상 리소스 유형에 대한 유효한 특성이어야 합니다. 대상 리소스 종류는 ObjectTypes 필드에서 찾을 수 있습니다. 모든 특성은 ObjectTypes 필드에 인용된 지정된 리소스 종류에서 유효해야 합니다.ColumnsToDisplay: 선택적 문자열 형식 속성입니다. 사용자는 스키마 특성 이름 목록을 ',' 쉼표로 구분하여 제공합니다. 여기에 정의된 특성은 ID 선택기에서 목록 보기의 열을 구성합니다.
행: 선택적 정수 속성입니다. 모드가 MultipleResult로 설정된 경우에만 작동합니다. 이 속성을 사용하여 확인 텍스트 상자의 높이를 문자 단위의 지정된 크기로 설정합니다.
MainSearchScreenText: 선택적 문자열 형식 속성입니다. 검색이 찾아보기 창에서 실행되는 동안 표시되는 사용자 지정 텍스트입니다.
이벤트:
- SelectedObjectChanged: 이 이벤트는 사용자가 선택한 리소스를 변경할 때 내보내집니다.
예제:
메모
이 샘플이 작동하려면 Manager 특성과 이 XML이 적용되는 사용자 지정 리소스 유형 간에 새 바인딩을 만들어야 합니다.
다음 코드 세그먼트는 RCDC의 일부로 Filter 및 ResultObjectType 속성을 사용하여 SingleResult 모드에서 ID 선택기를 생성합니다.
<!--Sample for a single-selection identity picker using Filter and Result Object Type-->
<my:Control my:Name="SingleSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A Single Selection Identity Picker" my:Description="The user is allowed to select only one entry here." my:RightsLevel="{Binding Source=rights, Path=Manager}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=Manager.Required}"/>
<my:Property my:Name="Mode" my:Value="SingleResult" />
<!--Columns displayed in list view in pop-up window-->
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
<!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
<my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
<!--single valued reference type attribute is used to bind the control-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=Manager , Mode=TwoWay}" />
<!--Scoping the list explicitly to All Persons name contains letter "e"-->
<my:Property my:Name="Filter" my:Value="/Person[contains(JobTitle, 'Manager')]"/>
<!--Result object type specify the type is Person-->
<my:Property my:Name="ResultObjectType" my:Value="Person"/>
<my:Property my:Name="ListViewTitle" my:Value="Select only one entry" />
<my:Property my:Name="PreviewTitle" my:Value="Entry selected:" />
</my:Properties>
</my:Control>
<!--End of sample for a single-selection identity picker.-->
다음 그림에서는 MultipleResult 모드의 ID 선택기를 보여줍니다.
multipleResult 모드UocIdentityPicker control in MultipleResult modeUocIdentityPicker 컨트롤
메모
이 샘플 코드가 작동하려면 ExplicitMember 특성(다중값 참조 특성)을 사용자 지정 리소스 유형에 바인딩해야 합니다. UsageKeyword 속성이 Person 및 Group으로 설정된 검색 범위를 만듭니다.
다음 코드 세그먼트는 MultipleResult 모드에서 ID 선택기를 만듭니다.
<!--Sample for a multiselection Identity Picker uses Search Scope-->
<my:Control my:Name="multiSelectionIdentityPicker" my:TypeName="UocIdentityPicker" my:Caption="A multi Selection Identity Picker" my:Description="The user is allowed to select more than one entry here" my:RightsLevel="{Binding Source=rights, Path=ExplicitMember}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ExplicitMember.Required}"/>
<my:Property my:Name="Mode" my:Value="MultipleResult" />
<my:Property my:Name="Rows" my:Value="10" />
<!--There are existing search scopes that has key word "Person" and "Group" use both sets of search scopes here.-->
<my:Property my:Name="UsageKeywords" my:Value="Person,Group"/>
<!--Columns displayed in list view in pop-up window-->
<my:Property my:Name="ColumnsToDisplay" my:Value="DisplayName, ObjectType" />
<!--Identities will be resolved against following attribute in the resolve textbox when resolve button is clicked.-->
<my:Property my:Name="AttributesToSearch" my:Value="DisplayName, AccountName" />
<!--multi valued reference type attribute is used to bind the control-->
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=ExplicitMember , Mode=TwoWay}" />
<my:Property my:Name="ResultObjectType" my:Value="Resource"/>
<my:Property my:Name="ListViewTitle" my:Value="Select multiple entries" />
<my:Property my:Name="PreviewTitle" my:Value="Entries selected" />
</my:Properties>
</my:Control>
<!--End of sample for a multiselection Identity Picker.-->
UocLabel
이름: UocLabel
설명: 간단한 읽기 전용 텍스트 레이블 컨트롤입니다. 이 컨트롤을 사용하여 읽기 전용 데이터를 표시하는 것이 좋습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
텍스트: 문자열 형식 특성입니다. 명시적 문자열 값을 제공하거나 데이터 원본에 바인딩하여 이 속성을 정의합니다. 이 속성의 값을 할당하는 샘플 바인딩은 {Binding Source=object, Path=<유효한 특성 이름>.
UocLabel 컨트롤의 샘플은 단순 컨트롤 샘플 섹션에서 간단한 컨트롤을 참조하세요.
UocListView
이름: UocListView
설명: 고급 목록 보기 컨트롤입니다. 간단한 목록 보기, 선택적 단순 검색, 선택적 고급 검색 컨트롤, 선택적 선택 미리 보기 상자 및 작업 단추 모음으로 구성됩니다. 선택적 단순 검색은 검색 범위와 간단한 검색 텍스트 상자로 구성됩니다. 고급 검색 컨트롤은 필터 작성기입니다. 목록 보기에는 미리 렌더링된 리소스 목록이 표시됩니다. 이 컨트롤의 검색 컨트롤에서 오는 검색 결과를 표시할 수도 있습니다. 작업 단추 표시줄은 목록 보기의 선택에 따라 수행할 수 있는 작업을 정의합니다. 선택 미리 보기 상자에는 목록 보기에서 선택한 항목이 표시됩니다.
중요합니다
UocListView는 단일 값 참조 특성에서 작동하지 않습니다. 다중값 참조 특성에서만 사용할 수 있습니다. 단일 값 참조 특성은 이 문서의 UocIdentityPicker를 참조하세요.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
SelectedValue: GUID 형식 문자열 목록을 허용하는 다중값 참조 특성에 바인딩된 선택적 문자열 형식 속성입니다.
PageSize: 선택적 정수 속성입니다. 사용자는 목록 보기 컨트롤의 한 페이지에 맞는 항목 수를 지정할 수 있습니다. 기본값은 10개 항목입니다. 모든 양의 정수는 유효합니다.
UsageKeyword: 선택적 문자열 형식 속성입니다. 사용자는 목록 보기 검색 컨트롤에서 사용되는 검색 범위를 정의하는 키워드 목록을 지정할 수 있습니다. FIM 2010 서버에는 검색 범위 리소스가 있습니다. UsageKeyword라는 SearchScopeConfiguration 구조의 특성은 검색 범위 집합을 그룹화하는 데 사용됩니다. 목록 보기는 해당 키워드 목록을 사용합니다. 각 키워드는 쉼표(,)로 구분됩니다. 이 목록 보기에 표시하려는 해당 검색 범위에서 사용되는 사용 키워드입니다. 이는 ShowSearchControl 속성이 true로 설정된 경우에만 적용됩니다.
searchControlAutoPostback : 선택적 부울 속성입니다. 검색이 트리거될 때 자동 포스트백을 수행하려면 이 속성의 값을 true로 설정합니다. 기본적으로 SearchControlAutoPostback은 false로 설정됩니다.
EmptyResultText: 선택적 문자열 형식 속성입니다. 기본적으로 항목 없음으로 설정되지만 문자열 값으로 설정할 수 있습니다. 검색 결과가 비어 있으면 이 텍스트가 나타납니다.
ButtonHeight: 선택적 정수 형식 속성입니다. 이 속성의 값을 양수 정수 값으로 설정합니다. 이 속성은 작업 표시줄의 단추 높이를 픽셀 단위로 정의합니다. 기본값은 32픽셀입니다.
ButtonWidth: 선택적 정수 형식 속성입니다. 이 속성의 값을 양수 정수 값으로 설정합니다. 이 속성은 작업 표시줄의 단추 너비를 픽셀 단위로 정의합니다. 기본값은 32픽셀입니다.
CaptionImageMaxHeight: 선택적 정수 형식 속성입니다. 이 속성의 값을 양수 정수로 설정합니다. 이 속성은 선택적 캡션의 최대 아이콘 높이를 정의합니다. 기본값은 32픽셀입니다.
CaptionImageMaxWidth: 선택적 정수 형식 속성입니다. 이 속성의 값을 양수 정수로 설정합니다. 이 속성은 선택적 캡션의 최대 아이콘 너비를 정의합니다. 기본값은 32픽셀입니다.
CaptionImageUrl: 선택적 문자열 형식 속성입니다. 이 속성은 캡션 이미지로 표시되는 이미지에 연결되는 URL을 정의합니다.
PreviewTitle: 선택적 문자열 형식 속성입니다. 선택 미리 보기 상자 위에 표시되는 텍스트를 정의하려면 이 속성을 사용합니다.
EnableSelection: 선택적 부울 형식 속성입니다. 이 속성을 사용하여 목록 보기가 선택 모드에 있는지 여부를 정의합니다. 목록 보기가 선택 모드인 경우 목록 보기의 맨 왼쪽 열에 확인란 열이 표시되고 목록 보기 아래쪽에 선택 미리 보기 상자가 나타납니다. 이 속성의 기본값은 true로 설정됩니다.
SingleSelection: 선택적 부울 형식 속성입니다. 목록 보기에 대해 선택 모드를 설정한 경우 이 값을 true로 설정하면 최종 사용자가 목록에서 하나의 항목만 선택하도록 제한됩니다. 기본적으로 이 속성의 값은 false로 설정됩니다. 즉, 기본적으로 최종 사용자는 목록에서 여러 항목을 선택할 수 있습니다.
RedirectUrl: 선택적 문자열 형식 속성입니다. 목록에서 하이퍼링크 항목을 클릭할 때 리디렉션할 페이지를 지정하려면 이 속성을 사용합니다. 이 URL은 런타임 중에 실제 값으로 대체되는 자리 표시자를 포함할 수 있습니다. 자리 표시자는 다음과 같습니다.
- {0} objectType
- objectID {1}
- displayName {2}
ShowTitleBar: 선택적 부울 형식 속성입니다. 제목 표시줄을 표시할지 여부를 지정하려면 이 속성을 사용합니다. 이 속성의 기본값은 false입니다.
ShowActionBar: 선택적 부울 형식 속성입니다. 작업 표시줄 영역을 표시할지 여부를 지정하려면 이 속성을 사용합니다. 이 속성의 기본값은 true입니다.
ShowPreview: 선택적 부울 형식 속성입니다. 미리 보기 영역을 표시할지 여부를 지정하려면 이 속성을 사용합니다. 이 속성의 기본값은 true입니다.
ShowSearchControl: 선택적 부울 형식 속성입니다. 검색 컨트롤을 표시할지 여부를 지정 하려면이 속성을 사용 합니다. 이 속성의 기본값은 true입니다.
ResultObjectType: 선택적 문자열 형식 속성입니다. 검색 결과의 예상 개체 형식을 지정하려면 이 속성을 사용합니다. 이 속성의 기본값은 Resource입니다. 검색 결과에 여러 리소스 유형이 포함된 경우 이 값을 Resource로 지정해야 합니다.
ColumnsToDisplay: 선택적 속성입니다. 목록 보기를 열로 표시할 특성을 지정하려면 이 속성을 사용합니다. 이 속성의 기본값은 DisplayName, ResourceType입니다. 각 열은 특성의 시스템 이름으로 표시됩니다. 각 열은 ',' 쉼표로 구분됩니다. 목록 보기가 선택 모드에서 사용되는 경우 이 속성의 값을 지정할 필요가 없습니다. 선택 모드에서 열 설정은 현재 선택된 검색 범위의 SearchScopeColumn 특성에서 가져옵니다.
ListFilter: 선택적 문자열 형식 속성입니다. 목록 보기를 렌더링하는 데 사용되는 xpath이며 ShowSearchControl 속성이 false로 설정된 경우에만 적용됩니다. 이 값을 지정하면 목록 보기는 쿼리에 이 속성 값을 사용하고 목록 보기는 선택 모드가 아닙니다. 필터는 리소스의 문자열 특성에 바인딩될 수 있습니다.
<my:Property my:Name="ListFilter" my:Value="{Binding Source=object, Path=Filter}"/>
또는 미리 정의된 환경 변수를 포함하는 문자열이 될 수 있습니다.
<my:Property my:Name="ListFilter" my:Value="/Approval[Request=''%ObjectID%'']"/>
TargetAttribute: 사용되지 않는 속성입니다. 해당 값은 다중값 참조 특성의 시스템 이름이어야 합니다. 이 속성을 더 이상 사용하지 않는 것이 좋습니다. 예를 들어 그룹 관리에서는 다음을 사용하는 대신 다음을 사용합니다.
<my:Property my:Name="TargetAttribute" my:Value="ExplicitMember"/>
사용:
<my:Property my:Name=”ListFilter” my:Value=”/Group[ObjectID=’%ObjectID%’]/ExplicitMember”/>
ItemClickBehavior: 선택적 문자열 형식 속성입니다. 목록 보기 항목을 클릭하여 서버 포스트백을 트리거할지 또는 항목의 세부 정보 보기를 표시할지 여부를 지정하려면 이 속성을 사용합니다. ModelessDialog 및 Server의 두 가지 옵션 값이 지원됩니다. 기본값은 ModelessDialog입니다.
SearchOnLoad: 목록 보기 컨트롤이 로드 시 쿼리해야 하는지 여부를 지정하는 선택적 부울 형식 속성입니다. 이 속성은 목록 보기가 선택 모드인 경우에만 적용됩니다. 이 속성의 기본값은 true입니다. 사용자가 일반적으로 텍스트를 검색에 입력하여 의미 있는 결과를 얻을 것으로 예상하는 경우 해제할 수 있습니다. 이 경우 목록 보기는 처음에 사용자에게 검색을 수행하는 방법을 알려주는 메시지를 표시합니다. 텍스트는 다음 속성으로 사용자 지정할 수 있습니다.
MainSearchScreenText: 이 선택적 문자열 형식 속성은 SearchOnload가 true로 설정된 경우에만 적용됩니다. 목록 보기가 자동으로 검색되지 않을 때 목록 보기 중간에 표시되는 텍스트를 사용자 지정하는 데 이 속성을 사용할 수 있습니다. 이 속성의 기본값은 앞에서 설명한 대로 검색을 사용하여 리소스를 찾는 것입니다. 텍스트를 시나리오와 더 관련성 있게 만드는 값을 지정할 수 있습니다.
SubSearchScreenText: 이 선택적 문자열 형식 속성은 MainSearchScreenText 속성 후에 나타나는 텍스트를 사용자 지정하는 데 사용됩니다. 일반적으로 목록 보기를 사용하는 방법에 대한 몇 가지 추가 지침을 추가하려는 경우가 아니면 이 속성에 대한 값을 지정할 필요가 없습니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
UocFilterBuilder 컨트롤과 함께 목록 보기를 미리 보기 목록으로 사용하는 방법에 대한 예제는 이 문서의 앞부분에 있는 UocFilterBuilder 샘플을 참조하세요. UocListView는 필터 작성기 없이도 사용할 수 있습니다.
UocNumericBox
이름: UocNumericBox
설명: 정수 값만 사용하는 간단한 텍스트 상자입니다. 이 컨트롤은 읽기 전용 모드와 업데이트 가능한 모드를 모두 지원합니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
MaxValue: 선택적 정수 형식 속성입니다. 이 속성을 사용 하 여 컨트롤에 대 한 클라이언트 쪽 유효성 검사를 정의 합니다. 최종 사용자가 입력하는 값은 이 값을 초과할 수 없습니다. {Binding Source=schema, Path=IntegerMaximum}을 사용하여 명시적 정수 또는 데이터 원본의 정수 데이터와 바인딩할 수 있습니다.
MinValue: 선택적 정수 형식 속성입니다. 이 속성을 사용 하 여 컨트롤에 대 한 클라이언트 쪽 유효성 검사를 정의 합니다. 최종 사용자가 입력하는 값은 이 값보다 낮을 수 없습니다. {Binding Source=schema, Path=IntegerMinimum}을 사용하여 명시적 정수 또는 데이터 원본의 정수 데이터와 바인딩할 수 있습니다.
DefaultValue: 선택적 정수 형식 속성입니다. 컨트롤이 새 데이터를 만드는 데 사용되는 경우 컨트롤의 기본값을 정의하려면 이 속성을 사용합니다. 이 값은 정적 정수로만 명시적으로 설정할 수 있습니다.
값: 선택적 정수 형식 속성입니다. 이를 데이터 원본의 정수 형식 데이터와 바인딩하면 페이지가 로드될 때 해당 특성의 값이 나타나고 제출 후 데이터 원본에 저장됩니다.
이벤트:
- textChanged : 컨트롤 내부의 현재 값이 변경되면 이 이벤트가 내보내집니다.
예제:
UocNumericBox 컨트롤UocNumericBox control
메모
다음 샘플 코드는 첫 번째 숫자 상자를 생성합니다. 숫자 상자가 데이터 원본 또는 스키마 정보와 연결되어 있지 않습니다.
<!--Sample for an explicit Numeric Box-->
<my:Control my:Name="SampleExplicitNumericBox" my:TypeName="UocNumericBox" my:Caption="An Explicit NumericBox" my:Description="This is a dummy numeric box that is not linked with data source.">
<my:Properties>
<my:Property my:Name="MinValue" my:Value="1"/>
<my:Property my:Name="MaxValue" my:Value="100"/>
<my:Property my:Name="DefaultValue" my:Value="1"/>
</my:Properties>
</my:Control>
<!--End of sample for an explicit Numeric Box.-->
다음 샘플 코드는 두 번째 숫자 상자를 생성합니다.
메모
이 샘플이 작동하려면 먼저 AnIntegerAttribute라는 새 정수 형식 특성을 만들고 사용자 지정 리소스 형식에 바인딩해야 합니다.
<!--Sample for a dynamically rendered numeric box-->
<my:Control my:Name="SampleDynamicNumericBox" my:TypeName="UocNumericBox" my:Caption="{Binding Source=schema, Path=AnIntegerAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=AnIntegerAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=AnIntegerAttribute}">
<my:Properties>
<my:Property my:Name="MaxValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMaximum}"/>
<my:Property my:Name="MinValue" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.IntegerMinimum}"/>
<my:Property my:Name="DefaultValue" my:Value="1"/>
<my:Property my:Name="Value" my:Value="{Binding Source=object, Path=AnIntegerAttribute, Mode=TwoWay}"/>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=AnIntegerAttribute.Required}"/>
</my:Properties>
</my:Control>
<!--End of sample for a dynamically numeric box.-->
UocPictureBox
이름: UocPictureBox
설명: 이 컨트롤은 그림, 이진 형식 데이터를 렌더링하는 데 사용됩니다. 이 컨트롤은 이진 형식 데이터와 함께 사용하는 것이 좋습니다. 제공된 이미지 URL, 이진 형식 데이터 또는 그림 형식 데이터가 포함된 특성 원본을 통해 그림을 렌더링할 수 있습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
ImageUrl: 선택적 문자열 형식 속성입니다. 대상 그림의 URL을 입력합니다.
MaxHeight: 선택적 문자열 형식 속성입니다. 픽셀 단위로 렌더링할 이미지의 최대 높이를 정의합니다.
MaxWidth: 선택적 문자열 형식 속성입니다. 픽셀 단위로 렌더링할 이미지의 최대 너비를 정의합니다.
ImageData: 이진 형식 속성입니다. 데이터 원본을 표시된 이미지와 바인딩하려면 이 속성을 사용합니다. 바인딩된 데이터 원본은 이진이어야 합니다. 이 필드를 사용하여 데이터를 바이트[] 형식으로 제공하여 그림을 명시적으로 설정할 수도 있습니다.
ImageResource: 선택적 이진 형식 속성입니다.
AlternativeText: 선택적 문자열 형식 속성입니다. 이 속성은 그림을 표시할 수 없는 경우 대체 텍스트로 나타납니다.
이벤트:
- 이 컨트롤에 대한 이벤트가 없습니다.
예제:
메모
이 샘플을 사용하려면 컨트롤에 기존 이미지 데이터 바인딩이 있어야 합니다.
다음 코드 세그먼트는 데이터 원본을 컨트롤과 바인딩하는 그림 상자 컨트롤을 생성합니다.
<!--Sample for a Picture Box control binding with a data source-->
<my:Control my:Name="SamplePictureBoxImageData" my:TypeName="UocPictureBox" my:RightsLevel="{Binding Source=rights, Path=Photo}">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="100" />
<my:Property my:Name="MaxWidth" my:Value="100" />
<my:Property my:Name="ImageData" my:Value="{Binding Source=object, Path=Photo}" />
</my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->
다음 코드 세그먼트는 URL 이미지를 컨트롤과 바인딩하는 그림 상자 컨트롤을 생성합니다.
<!--Sample for a Picture Box control bind with explicit URL-->
<my:Control my:Name="SamplePictureBoxImageUrl" my:TypeName="UocPictureBox">
<my:Properties>
<my:Property my:Name="MaxHeight" my:Value="100" />
<my:Property my:Name="MaxWidth" my:Value="100" />
<my:Property my:Name="ImageUrl" my:Value="http://www.microsoft.com/dummypicture.jpg" />
</my:Properties>
</my:Control>
<!--End of Sample for a Picture Box control-->
UocRadioButtonList
이름: UocRadioButtonList
설명: 간단한 옵션 단추 목록입니다. 선택 항목은 이 목록에서 함께 사용할 수 없습니다. 사용자가 선택할 수 있는 옵션이 5개 이하인 경우 이 컨트롤을 사용하는 것이 좋습니다. 그렇지 않으면 UOCListView를 사용하는 것이 좋습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
ValuePath: 값 경로가 Value로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 값 필드와 바인딩됩니다.
CaptionPath: 값 경로가 Caption으로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 캡션 필드와 바인딩됩니다.
HintPath: 값 경로가 Hint로 설정됩니다. 이 섹션에 설명된 대로 Option 요소의 힌트 필드와 바인딩됩니다.
SelectedValue: 현재 선택된 값입니다. 필수 문자열 형식 속성입니다. 이 속성은 데이터 원본의 문자열 데이터와 바인딩됩니다.
이벤트:
SelectedIndexChanged: 선택한 라디오 단추가 변경될 때 이벤트가 발생합니다.
CheckedChanged: 라디오 단추가 상태를 변경하면 이 이벤트가 내보내집니다.
옵션:
이 컨트롤에 대한 옵션으로 두 개의 Options 요소만 있을 수 있습니다. Options 요소의 구조는 Options 요소참조하세요.
값: 단일 Option 요소의 값 필드를 True 또는 False로 설정해야 합니다.
캡션: 모든 문자열 값일 수 있습니다.
힌트: 모든 문자열 값일 수 있습니다.
예제:
UocRadioButtonList 컨트롤UocRadioButtonList control
메모
이 샘플이 작동하려면 새 부울 특성인 ABooleanAttribute를 만들고 사용자 지정 리소스 유형에 바인딩해야 합니다.
다음 코드 세그먼트는 옵션 단추 목록을 만듭니다.
<!--Sample for option button list control-->
<my:Control my:Name="SampleRadioButtonList" my:TypeName="UocRadioButtonList" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
<my:Options>
<my:Option my:Value="False" my:Caption="Set Value To False" my:Hint="By selecting this option, you are setting the value of the attribute to false." />
<my:Option my:Value="True" my:Caption="Set Value To True" my:Hint="By selecting this option, you are setting the value of the attribute to true." />
</my:Options>
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
<my:Property my:Name="ValuePath" my:Value="Value" />
<my:Property my:Name="CaptionPath" my:Value="Caption" />
<my:Property my:Name="HintPath" my:Value="Hint" />
<my:Property my:Name="SelectedValue" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for option button list control-->
UocSimpleRadioButton
이름: UocSimpleRadioButton
설명: 간단한 옵션 단추 컨트롤입니다. 이 컨트롤의 사용은 간단한 확인란과 비슷합니다. 텍스트 레이블 지정과 나란히 표시되는 두 가지 옵션 단추가 있습니다. 컨트롤을 부울 형식 데이터에 바인딩하는 것이 좋습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
TrueText: 선택적 문자열 형식 속성입니다. 옵션 단추를 선택할 때 표시되는 텍스트입니다.
FalseText: 선택적 문자열 형식 속성입니다. 옵션 단추를 선택하지 않으면 표시되는 텍스트입니다.
SelectedItem: 선택적 부울 형식 속성입니다. 이 값은 옵션 단추가 선택되었음을 나타냅니다. 데이터 원본의 부울 형식 데이터와 바인딩할 수 있습니다. 기본값은 false로 설정됩니다.
이벤트:
- CheckedChanged: 옵션 단추가 선택된 상태에서 선택되지 않은 상태로 변경되거나 반대로 변경되면 이 신호가 내보내집니다.
예제:
UocSimpleRadioButton 컨트롤UocSimpleRadioButton control
메모
샘플을 작동하려면 새 부울 특성 ABooleanAttribute를 만들고 사용자 지정 리소스 종류에 바인딩해야 합니다. RCDC 데이터는 동일한 사용자 지정 리소스 종류에 적용됩니다.
다음 코드 세그먼트는 옵션 단추를 생성합니다.
<!--Sample for simple option button control-->
<my:Control my:Name="SampleSimpleRadioButton" my:TypeName="UocSimpleRadioButton" my:Caption="{Binding Source=schema, Path=ABooleanAttribute.DisplayName}" my:Description="{Binding Source=schema, Path=ABooleanAttribute.Description}" my:RightsLevel="{Binding Source=rights, Path=ABooleanAttribute}">
<my:Properties>
<my:Property my:Name="Required" my:Value="{Binding Source=schema, Path=ABooleanAttribute.Required}" />
<my:Property my:Name="FalseText" my:Value="False"/>
<my:Property my:Name="TrueText" my:Value="True"/>
<my:Property my:Name="SelectedItem" my:Value="{Binding Source=object, Path=ABooleanAttribute, Mode=TwoWay}" />
</my:Properties>
</my:Control>
<!--End of Sample for simple option button control-->
UocTextBox
이름: UocTextBox
설명: 문자열 형식 입력을 지원하는 간단한 텍스트 상자입니다. 이 컨트롤을 사용하여 문자열 형식 데이터를 바인딩하는 것이 좋습니다.
Properties:
모든 공통 속성: 이러한 속성에 대한 자세한 내용은 공통 속성참조하세요.
MaxLength: 선택적 정수 형식 특성입니다. 이 속성은 문자열 입력의 최대 길이를 지정합니다. 이 속성의 기본값은 128자입니다.
텍스트: 선택적 문자열 형식 속성입니다. 텍스트 상자에 표시되는 텍스트입니다. 컨트롤을 처음 로드하는 동안 텍스트 상자에 표시되는 명시적 문자열을 정의하거나 문자열 형식의 스키마 특성에 바인딩할 수 있습니다.
행: 선택적 정수 형식 속성입니다. 이 속성은 문자 단위로 텍스트 상자의 높이를 정의합니다. 기본값은 한 문자입니다.
열: 선택적 정수 형식 속성입니다. 이 속성은 텍스트 상자의 너비를 문자 단위로 정의합니다. 기본값은 20자입니다.
래핑: 선택적 부울 형식 속성입니다. 이 속성의 값을 true로 설정하면 텍스트 상자에서 Word Wrap 기능을 사용할 수 있습니다. 이 속성의 기본값은 true로 설정됩니다.
UniquenessValidationXPath: 선택적 문자열 형식 속성입니다. 유효한 FIM XPath 필터 식을 사용하고 사용자가 입력한 값이 필터 범위에 있는 리소스 내에서 고유하도록 합니다. 예를 들어 사용자가 요청한 표시 이름이 FIM 서비스 DB의 모든 메일 사용 보안 그룹 내에서 고유하도록 하려면 XPath
/Group[DisplayName=’%VALUE%’ and Type=’MailEnabledSecurity’
사용합니다. 유효성 검사 작업은 사용자가 페이지를 떠날 때 수행됩니다. 이 속성은 리소스를 만들기 위해 RCDC에서만 지원됩니다.UniquenessErrorMessage: 선택적 문자열 형식 속성입니다. 이 문자열은 UniquenessValidationXPath 유효성 검사가 실패하고 명시적 텍스트 또는 문자열 리소스 변수일 수 있는 경우 오류 메시지를 표시하는 데 사용됩니다. 이 속성을 지정하지 않으면 실패한 유효성 검사에 대한 기본 오류 메시지는 "%VALUE% 이미 있습니다. 다른 것을 시도해 보세요."
이벤트:
- textChanged : 이 이벤트는 텍스트 상자 내의 텍스트가 변경될 때 내보내집니다.
예제:
이 컨트롤의 전체 샘플은 단순 컨트롤 샘플 섹션을 참조하세요.
부록 A: 기본 XSD 스키마
이 섹션에서는 Microsoft Identity Manager 2016 SP1과 함께 제공되는 모든 기본 RCDC에 대한 전체 XSD 스키마를 보여 줍니다.
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xsd:schema targetNamespace="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:my="http://schemas.microsoft.com/2006/11/ResourceManagement" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:attribute name="TypeName" type="my:requiredString"/>
<xsd:attribute name="Name" type="my:requiredAlphanumericString"/>
<xsd:attribute name="Parameters" type="xsd:string"/>
<xsd:attribute name="DisplayAsWizard" type="xsd:boolean"/>
<xsd:attribute name="Caption" type="xsd:string"/>
<xsd:attribute name="AutoValidate" type="xsd:boolean"/>
<xsd:attribute name="Enabled" type="xsd:string"/>
<xsd:attribute name="Visible" type="xsd:string"/>
<xsd:attribute name="IsSummary" type="xsd:boolean"/>
<xsd:attribute name="IsHeader" type="xsd:boolean"/>
<xsd:attribute name="HelpText" type="xsd:string"/>
<xsd:attribute name="Link" type="xsd:string"/>
<xsd:attribute name="Description" type="xsd:string"/>
<xsd:attribute name="ExpandArea" type="xsd:boolean"/>
<xsd:attribute name="Hint" type="xsd:string"/>
<xsd:attribute name="AutoPostback" type="xsd:string"/>
<xsd:attribute name="RightsLevel" type="my:requiredString"/>
<xsd:attribute name="Value" type="xsd:string"/>
<xsd:attribute name="Handler" type="my:requiredString"/>
<xsd:attribute name="ImageUrl" type="xsd:string"/>
<xsd:attribute name="RedirectUrl" type="xsd:string"/>
<xsd:attribute name="ClickBehavior" type="xsd:string"/>
<xsd:attribute name="EnableMode" type="xsd:string"/>
<xsd:attribute name="ValueType" type="xsd:string"/>
<xsd:attribute name="Condition" type="xsd:string"/>
<xsd:element name="ObjectControlConfiguration">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:ObjectDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:XmlDataSource" minOccurs="0" maxOccurs="32"/>
<xsd:element ref="my:Panel"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:TypeName"/>
<xsd:anyAttribute processContents="lax" namespace="http://www.w3.org/XML/1998/namespace"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="ObjectDataSource">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="XmlDataSource">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Panel">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Grouping" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:DisplayAsWizard"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:AutoValidate"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Grouping">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Control" minOccurs="1" maxOccurs="256"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:IsHeader"/>
<xsd:attribute ref="my:IsSummary"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Help">
<xsd:complexType>
<xsd:sequence/>
<xsd:attribute ref="my:HelpText"/>
<xsd:attribute ref="my:Link"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Control">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Help" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:CustomProperties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Options" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Buttons" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Properties" minOccurs="0" maxOccurs="1"/>
<xsd:element ref="my:Events" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:TypeName"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:Description"/>
<xsd:attribute ref="my:ExpandArea"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:AutoPostback"/>
<xsd:attribute ref="my:RightsLevel"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CustomProperties">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##targetNamespace" processContents="lax"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Options">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Option" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute ref="my:ValueType"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="Option">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Buttons">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Button" minOccurs="1" maxOccurs="8"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Button">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Caption"/>
<xsd:attribute ref="my:Hint"/>
<xsd:attribute ref="my:ImageUrl"/>
<xsd:attribute ref="my:ClickBehavior"/>
<xsd:attribute ref="my:RedirectUrl"/>
<xsd:attribute ref="my:Enabled"/>
<xsd:attribute ref="my:Visible"/>
<xsd:attribute ref="my:EnableMode"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Properties">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Property" minOccurs="1" maxOccurs="32"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Property">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Value"/>
<xsd:attribute ref="my:Condition"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:element name="Events">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="my:Event" minOccurs="1" maxOccurs="16"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Event">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute ref="my:Name"/>
<xsd:attribute ref="my:Handler"/>
<xsd:attribute ref="my:Parameters"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
<xsd:simpleType name="requiredString">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredAlphanumericString">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Za-z0-9_]{1,128}"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredAnyURI">
<xsd:restriction base="xsd:anyURI">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="requiredBase64Binary">
<xsd:restriction base="xsd:base64Binary">
<xsd:minLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
부록 B: 기본 요약 XSL
이 섹션에서는 Microsoft Identity Manager 2016 SP1과 함께 제공되는 전체 요약 XSL을 보여 줍니다.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:template name="output-attribute-value">
<xsl:param name="attribute"/>
<xsl:param name="type"/>
<xsl:choose>
<xsl:when test="$type='Binary'">
<xsl:value-of select="$attribute" disable-output-escaping="yes"/>
</xsl:when>
<xsl:when test="$type='Text'">
<xsl:text xml:space="preserve" disable-output-escaping="yes">(text data)</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="translate($attribute,' ',' ')" disable-output-escaping="yes"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="output-modified-value">
<xsl:param name="name"/>
<xsl:param name="attribute1"/>
<xsl:param name="text1"/>
<xsl:param name="attribute2"/>
<xsl:param name="text2"/>
<xsl:param name="type"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$name" disable-output-escaping="yes"/>
</td>
<xsl:choose>
<xsl:when test="$attribute1 and $attribute1!=''">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute1"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text1"/>
</td>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$attribute2 and $attribute2!=''">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute2"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text2"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$name" disable-output-escaping="yes"/>
</td>
<xsl:choose>
<xsl:when test="$attribute1 and $attribute1!=''">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute1"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text1"/>
</td>
</xsl:otherwise>
</xsl:choose>
<xsl:choose>
<xsl:when test="$attribute2 and $attribute2!=''">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute2"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:when>
<xsl:otherwise>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:copy-of select="$text2"/>
</td>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</tr>
</xsl:template>
<xsl:template name="output-localized-attribute-value">
<xsl:param name="locale"/>
<xsl:param name="attribute"/>
<xsl:param name="type"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$locale" disable-output-escaping="yes"/>
</td>
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="$locale" disable-output-escaping="yes"/>
</td>
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="$attribute"/>
<xsl:with-param name="type" select="$type"/>
</xsl:call-template>
</td>
</xsl:if>
</tr>
</xsl:template>
<xsl:template match="/">
<xsl:choose>
<xsl:when test="ModifiedAttributes[@ActionType='Create']">
<!-- expected XML
<ModifiedAttributes ActionType="Create">
<Attribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the value]"/>
other <Attribute> elements
</ModifiedAttributes>
-->
<table cellspacing="0" cellpadding="3" class="commonSummaryListViewGridBorder">
<tr align="left" class="listViewHeader" style="height:22px;">
<th class="commonSummaryListViewHeaderCellBR">Attribute</th>
<th class="commonSummaryListViewHeaderCellBR">Value</th>
</tr>
<xsl:for-each select="ModifiedAttributes/Attribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<tr class="listViewRow" style="height:22px;">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<xsl:if test="count(LocalizedValue)!=0">
<td class="commonSummaryListViewCellBR ms-vb">
<table cellspacing="0" style="width:100%">
<tr class="listViewHeader">
<th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
<th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
</tr>
<xsl:if test="@InitializedValue and @InitializedValue != ''">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</td>
</xsl:if>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<xsl:if test="count(LocalizedValue)!=0">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<table cellspacing="0" style="width:100%">
<tr class="listViewHeader">
<th align="left" class="commonSummaryListViewHeaderCellBR">Language</th>
<th align="left" class="commonSummaryListViewHeaderCellBR">Status</th>
</tr>
<xsl:if test="@InitializedValue and @InitializedValue != ''">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-localized-attribute-value">
<xsl:with-param name="locale" select="@Locale"/>
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:call-template name="output-attribute-value">
<xsl:with-param name="attribute" select="@InitializedValue"/>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</td>
</xsl:if>
</xsl:if>
</tr>
</xsl:for-each>
</table>
</xsl:when>
<xsl:when test="ModifiedAttributes[@ActionType='Modify']">
<!-- expected XML
<ModifiedAttributes ActionType="Modify">
<SingleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InitializedValue="[the old value]" SetValue="[the new value]"/>
other <SingleAttribute> elements
<MultipleAttribute Name="[attribute's system name]" DisplayName="[attribute's display name]" DataType="[all kinds of ILM data type]" InsertedItem="[inserted items separated by ';']" RemovedItem="[removed items separated by ';']"/>
other <MultipleAttribute> elements
</ModifiedAttributes>
-->
<table class="commonSummaryListViewGridBorder" cellspacing="0" cellpadding="3">
<xsl:if test="ModifiedAttributes[count(SingleAttribute)!=0]">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Single-Value Attributes</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:for-each select="ModifiedAttributes/SingleAttribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<xsl:if test="count(LocalizedValue)!=0">
<tr class="listViewRow">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td colSpan="2">
<table cellspacing="0" cellpadding="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td colSpan="2">
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Old Value</th>
<th class="commonSummaryListViewHeaderCellBR">New Value</th>
</tr>
<xsl:if test="(@InitializedValue and @InitializedValue !='') or (@SetValue and @SetValue != '')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="../@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
</tr>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@DisplayName"/>
<xsl:with-param name="attribute1" select="@InitializedValue"/>
<xsl:with-param name="text1">(no initial value)</xsl:with-param>
<xsl:with-param name="attribute2" select="@SetValue"/>
<xsl:with-param name="text2">(value removed)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:if>
<xsl:if test="ModifiedAttributes[count(MultipleAttribute)!=0]">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Multiple-Value Attributes</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:for-each select="ModifiedAttributes/MultipleAttribute">
<xsl:sort select="@DisplayName" order="ascending"/>
<xsl:if test="count(LocalizedValue)!=0">
<tr class="uocSummaryTitleTR">
<xsl:if test="position() mod 2 != 0">
<td class="commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td>
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
<xsl:if test="position() mod 2 != 1">
<td class="ms-alternating commonSummaryListViewCellBR ms-vb">
<xsl:value-of select="@DisplayName" disable-output-escaping="yes"/>
</td>
<td>
<table cellspacing="0" style="width:100%">
<tr align="left" class="listViewHeader">
<th class="commonSummaryListViewHeaderCellBR">Language</th>
<th class="commonSummaryListViewHeaderCellBR">Removed Items</th>
<th class="commonSummaryListViewHeaderCellBR">Inserted Items</th>
</tr>
<xsl:if test="(@RemovedItem and @RemovedItem!='') or (@InsertedItem and @InsertedItem!='')">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
<xsl:for-each select="LocalizedValue">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@Locale"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:for-each>
</table>
</td>
</xsl:if>
</tr>
</xsl:if>
<xsl:if test="count(LocalizedValue)=0">
<xsl:call-template name="output-modified-value">
<xsl:with-param name="name" select="@DisplayName"/>
<xsl:with-param name="attribute1" select="@RemovedItem"/>
<xsl:with-param name="text1">(no removed item)</xsl:with-param>
<xsl:with-param name="attribute2" select="@InsertedItem"/>
<xsl:with-param name="text2">(no inserted item)</xsl:with-param>
<xsl:with-param name="type" select="@DataType"/>
</xsl:call-template>
</xsl:if>
</xsl:for-each>
</xsl:if>
</table>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>