Structured Data Capture
2.8.0 - CI Build

Structured Data Capture, published by HL7 International - FHIR Infrastructure Work Group. This is not an authorized publication; it is the continuous build for version 2.8.0). This version is based on the current content of https://github.com/HL7/sdc/ and changes regularly. See the Directory of published versions

Extension: Choice column

Provides guidelines for rendering multi-column choices. I.e. when displaying a list of codes (for choice or open-choice items) or a list of resources (for reference items), this extension allows the drop-down to have multiple columns. For codes, the author can pick additional code system properties to display - such as alternate display names strength or form for drug codes, etc. For references, the author can choose particular columns from the resource (e.g. first name, last name, specialty, address).

The official URL for this extension is:

http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn

Status: draft
Extension maintained by: HL7 International - FHIR Infrastructure Work Group

Context of Use

This extension may be used on the following element(s):

  • Questionnaire.item
  • Questionnaire.item.item

Usage info

Usage:

Formal Views of Extension Content

Description of Profiles, Differentials, Snapshots, and how the XML and JSON presentations work.

This structure is derived from Extension

Summary

Mandatory: 1 element
Fixed Value: 5 elements
Prohibited: 1 element

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*ExtensionGuide for rendering multi-column choices
... extension:path 1..1ExtensionColumn path
.... url 1..1uri"path"
.... value[x] 0..1stringValue of extension
... extension:label 0..1ExtensionColumn label
.... url 1..1uri"label"
.... value[x] 0..1stringValue of extension
... extension:width 0..1ExtensionWidth of column
.... url 1..1uri"width"
.... value[x] 0..1QuantityValue of extension
.... url 1..1uri"forDisplay"
.... value[x] 0..1booleanValue of extension
... url 1..1uri"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn"
... value[x] 0..0

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*ExtensionGuide for rendering multi-column choices
... id 0..1stringUnique id for inter-element referencing
... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
... extension:path 1..1ExtensionColumn path
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"path"
.... value[x] 0..1stringValue of extension
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"label"
.... value[x] 0..1stringValue of extension
... extension:width 0..1ExtensionWidth of column
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"width"
.... value[x] 0..1QuantityValue of extension
... extension:forDisplay 0..1ExtensionUse for display ?
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"forDisplay"
.... value[x] 0..1booleanValue of extension
... url 1..1uri"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn"

doco Documentation for this format

This structure is derived from Extension

Summary

Mandatory: 1 element
Fixed Value: 5 elements
Prohibited: 1 element

Differential View

This structure is derived from Extension

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*ExtensionGuide for rendering multi-column choices
... extension:path 1..1ExtensionColumn path
.... url 1..1uri"path"
.... value[x] 0..1stringValue of extension
... extension:label 0..1ExtensionColumn label
.... url 1..1uri"label"
.... value[x] 0..1stringValue of extension
... extension:width 0..1ExtensionWidth of column
.... url 1..1uri"width"
.... value[x] 0..1QuantityValue of extension
.... url 1..1uri"forDisplay"
.... value[x] 0..1booleanValue of extension
... url 1..1uri"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn"
... value[x] 0..0

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Extension 0..*ExtensionGuide for rendering multi-column choices
... id 0..1stringUnique id for inter-element referencing
... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
... extension:path 1..1ExtensionColumn path
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"path"
.... value[x] 0..1stringValue of extension
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"label"
.... value[x] 0..1stringValue of extension
... extension:width 0..1ExtensionWidth of column
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"width"
.... value[x] 0..1QuantityValue of extension
... extension:forDisplay 0..1ExtensionUse for display ?
.... id 0..1stringUnique id for inter-element referencing
.... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... id 0..1stringUnique id for inter-element referencing
..... extension 0..*ExtensionAdditional content defined by implementations
Slice: Unordered, Open by value:url
..... url 1..1uriidentifies the meaning of the extension
..... value[x] 0..1Value of extension
...... valueBase64Binarybase64Binary
...... valueBooleanboolean
...... valueCanonicalcanonical(Any)
...... valueCodecode
...... valueDatedate
...... valueDateTimedateTime
...... valueDecimaldecimal
...... valueIdid
...... valueInstantinstant
...... valueIntegerinteger
...... valueMarkdownmarkdown
...... valueOidoid
...... valuePositiveIntpositiveInt
...... valueStringstring
...... valueTimetime
...... valueUnsignedIntunsignedInt
...... valueUriuri
...... valueUrlurl
...... valueUuiduuid
...... valueAddressAddress
...... valueAgeAge
...... valueAnnotationAnnotation
...... valueAttachmentAttachment
...... valueCodeableConceptCodeableConcept
...... valueCodingCoding
...... valueContactPointContactPoint
...... valueCountCount
...... valueDistanceDistance
...... valueDurationDuration
...... valueHumanNameHumanName
...... valueIdentifierIdentifier
...... valueMoneyMoney
...... valuePeriodPeriod
...... valueQuantityQuantity
...... valueRangeRange
...... valueRatioRatio
...... valueReferenceReference(Any)
...... valueSampledDataSampledData
...... valueSignatureSignature
...... valueTimingTiming
...... valueContactDetailContactDetail
...... valueContributorContributor
...... valueDataRequirementDataRequirement
...... valueExpressionExpression
...... valueParameterDefinitionParameterDefinition
...... valueRelatedArtifactRelatedArtifact
...... valueTriggerDefinitionTriggerDefinition
...... valueUsageContextUsageContext
...... valueDosageDosage
...... valueMetaMeta
.... url 1..1uri"forDisplay"
.... value[x] 0..1booleanValue of extension
... url 1..1uri"http://hl7.org/fhir/uv/sdc/StructureDefinition/sdc-questionnaire-choiceColumn"

doco Documentation for this format

 

Other representations of extension: Schematron

Constraints

IdPathDetailsRequirements
ele-1ExtensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1ExtensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:pathAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:pathMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:path.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:path.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:path.extension.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:path.extension.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:path.extension.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:path.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:labelAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:labelMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:label.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:label.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:label.extension.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:label.extension.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:label.extension.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:label.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:widthAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:widthMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:width.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:width.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:width.extension.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:width.extension.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:width.extension.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:width.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:forDisplayAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:forDisplayMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:forDisplay.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:forDisplay.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:forDisplay.extension.extensionAll FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ext-1Extension.extension:forDisplay.extension.extensionMust have either extensions or value[x], not both
: extension.exists() != value.exists()
ele-1Extension.extension:forDisplay.extension.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())
ele-1Extension.extension:forDisplay.value[x]All FHIR elements must have a @value or children
: hasValue() or (children().count() > id.count())