Is XSD information for a SOAP WSDL mandatory?
Is the XSD file mandatory for a SOAP WSDL? If the .xsd file is not mandatory, then is it mandatory I put the XSD information inside the WSDL Types Element?
I have written a custom XML deserializer/serializer and a custom WSDL generator that will take in python functions (that have been Type Hinted) and dynamically generate a WSDL based on the functions fed to it.
def example(arg1: str, arg2: int) -> str:
code
So the WSDL I generate is correct, assuming the type hints are correct (whoever wrote the python module, etc). I can feed in a python function or multiple, and generate a WSDL dynamically. The last remaining piece is the type tag. This wiki blurb on XSD makes me think that making a XSD or a XSD generator will be trivial since it will too be based off the function type hints, and since all of this is dynamic/unknown, no pre-made assumptions can be made for the XSD.
XSD can be used to express a set of rules to which an XML document
must conform in order to be considered "valid" according to that
schema. However, unlike most other schema languages, XSD was also
designed with the intent that determination of a document's validity
would produce a collection of information adhering to specific data
types. Such a post-validation infoset can be useful in the development
of XML document processing software....
I have looked at several example WSDL, this one is not using a XSD, but it is explicitly stating the types inside the main XML. I assume then if I do not use a XSD, I simply need to add information inside the WSDL Types Element? I have that information readily available and can simply put the function type signature inside
<?xml version="1.0"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:hy="http://www.herongyang.com/Service/"
targetNamespace="http://www.herongyang.com/Service/">
<wsdl:documentation>
Hello_WSDL_11_SOAP.wsdl
Copyright (c) 2007 HerongYang.com, All Rights Reserved.
</wsdl:documentation>
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.herongyang.com/Service/">
<xsd:element name="HelloRequest" type="xsd:string"/>
<xsd:element name="HelloResponse" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="helloInputMessage">
<wsdl:part name="helloInputPart" element="hy:HelloRequest"/>
</wsdl:message>
<wsdl:message name="helloOutputMessage">
<wsdl:part name="helloOutputPart" element="hy:HelloResponse"/>
</wsdl:message>
<wsdl:portType name="helloPortType">
<wsdl:operation name="Hello">
<wsdl:input name="helloInput"
message="hy:helloInputMessage"/>
<wsdl:output name="helloOutput"
message="hy:helloOutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="helloBinding" type="hy:helloPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Hello">
<soap:operation
soapAction="http://www.herongyang.com/Service/Hello"/>
<wsdl:input name="helloInput">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloOutput">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="helloService">
<wsdl:port name="helloPort" binding="hy:helloBinding">
<soap:address
location="http://www.herongyang.com/Service/Hello_SOAP_11.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
EDIT: Here is another example WSDL and their XSD usage is different as well, so far as that the xsd types are simply added in the message elements and ignoring it in the types element. This difference is very confusing and nothing via google provides any concrete information for XSD and especially WSDL usage.
<definitions name="SoapResponder"
targetNamespace="http://www.SoapClient.com/xml/SoapResponder.wsdl">
<types>
<schema targetNamespace="http://www.SoapClient.com/xml/SoapResponder.xsd">
</schema>
</types>
<message name="Method1">
<part name="bstrParam1" type="xsd:string"/>
<part name="bstrParam2" type="xsd:string"/>
</message>
<message name="Method1Response">
<part name="bstrReturn" type="xsd:string"/>
</message>
<portType name="SoapResponderPortType"></portType>
<binding name="SoapResponderBinding" type="tns:SoapResponderPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Method1">
<soap:operation soapAction="http://www.SoapClient.com/SoapObject"/>
<input>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="SoapResponder">
<documentation>A SOAP service that echoes input parameters in the
response
</documentation>
<port name="SoapResponderPortType" binding="tns:SoapResponderBinding">
<soap:address
location="http://www.soapclient.com/xml/soapresponder.wsdl"/>
</port>
</service>
</definitions>
python xml soap xsd wsdl
add a comment |
Is the XSD file mandatory for a SOAP WSDL? If the .xsd file is not mandatory, then is it mandatory I put the XSD information inside the WSDL Types Element?
I have written a custom XML deserializer/serializer and a custom WSDL generator that will take in python functions (that have been Type Hinted) and dynamically generate a WSDL based on the functions fed to it.
def example(arg1: str, arg2: int) -> str:
code
So the WSDL I generate is correct, assuming the type hints are correct (whoever wrote the python module, etc). I can feed in a python function or multiple, and generate a WSDL dynamically. The last remaining piece is the type tag. This wiki blurb on XSD makes me think that making a XSD or a XSD generator will be trivial since it will too be based off the function type hints, and since all of this is dynamic/unknown, no pre-made assumptions can be made for the XSD.
XSD can be used to express a set of rules to which an XML document
must conform in order to be considered "valid" according to that
schema. However, unlike most other schema languages, XSD was also
designed with the intent that determination of a document's validity
would produce a collection of information adhering to specific data
types. Such a post-validation infoset can be useful in the development
of XML document processing software....
I have looked at several example WSDL, this one is not using a XSD, but it is explicitly stating the types inside the main XML. I assume then if I do not use a XSD, I simply need to add information inside the WSDL Types Element? I have that information readily available and can simply put the function type signature inside
<?xml version="1.0"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:hy="http://www.herongyang.com/Service/"
targetNamespace="http://www.herongyang.com/Service/">
<wsdl:documentation>
Hello_WSDL_11_SOAP.wsdl
Copyright (c) 2007 HerongYang.com, All Rights Reserved.
</wsdl:documentation>
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.herongyang.com/Service/">
<xsd:element name="HelloRequest" type="xsd:string"/>
<xsd:element name="HelloResponse" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="helloInputMessage">
<wsdl:part name="helloInputPart" element="hy:HelloRequest"/>
</wsdl:message>
<wsdl:message name="helloOutputMessage">
<wsdl:part name="helloOutputPart" element="hy:HelloResponse"/>
</wsdl:message>
<wsdl:portType name="helloPortType">
<wsdl:operation name="Hello">
<wsdl:input name="helloInput"
message="hy:helloInputMessage"/>
<wsdl:output name="helloOutput"
message="hy:helloOutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="helloBinding" type="hy:helloPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Hello">
<soap:operation
soapAction="http://www.herongyang.com/Service/Hello"/>
<wsdl:input name="helloInput">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloOutput">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="helloService">
<wsdl:port name="helloPort" binding="hy:helloBinding">
<soap:address
location="http://www.herongyang.com/Service/Hello_SOAP_11.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
EDIT: Here is another example WSDL and their XSD usage is different as well, so far as that the xsd types are simply added in the message elements and ignoring it in the types element. This difference is very confusing and nothing via google provides any concrete information for XSD and especially WSDL usage.
<definitions name="SoapResponder"
targetNamespace="http://www.SoapClient.com/xml/SoapResponder.wsdl">
<types>
<schema targetNamespace="http://www.SoapClient.com/xml/SoapResponder.xsd">
</schema>
</types>
<message name="Method1">
<part name="bstrParam1" type="xsd:string"/>
<part name="bstrParam2" type="xsd:string"/>
</message>
<message name="Method1Response">
<part name="bstrReturn" type="xsd:string"/>
</message>
<portType name="SoapResponderPortType"></portType>
<binding name="SoapResponderBinding" type="tns:SoapResponderPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Method1">
<soap:operation soapAction="http://www.SoapClient.com/SoapObject"/>
<input>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="SoapResponder">
<documentation>A SOAP service that echoes input parameters in the
response
</documentation>
<port name="SoapResponderPortType" binding="tns:SoapResponderBinding">
<soap:address
location="http://www.soapclient.com/xml/soapresponder.wsdl"/>
</port>
</service>
</definitions>
python xml soap xsd wsdl
add a comment |
Is the XSD file mandatory for a SOAP WSDL? If the .xsd file is not mandatory, then is it mandatory I put the XSD information inside the WSDL Types Element?
I have written a custom XML deserializer/serializer and a custom WSDL generator that will take in python functions (that have been Type Hinted) and dynamically generate a WSDL based on the functions fed to it.
def example(arg1: str, arg2: int) -> str:
code
So the WSDL I generate is correct, assuming the type hints are correct (whoever wrote the python module, etc). I can feed in a python function or multiple, and generate a WSDL dynamically. The last remaining piece is the type tag. This wiki blurb on XSD makes me think that making a XSD or a XSD generator will be trivial since it will too be based off the function type hints, and since all of this is dynamic/unknown, no pre-made assumptions can be made for the XSD.
XSD can be used to express a set of rules to which an XML document
must conform in order to be considered "valid" according to that
schema. However, unlike most other schema languages, XSD was also
designed with the intent that determination of a document's validity
would produce a collection of information adhering to specific data
types. Such a post-validation infoset can be useful in the development
of XML document processing software....
I have looked at several example WSDL, this one is not using a XSD, but it is explicitly stating the types inside the main XML. I assume then if I do not use a XSD, I simply need to add information inside the WSDL Types Element? I have that information readily available and can simply put the function type signature inside
<?xml version="1.0"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:hy="http://www.herongyang.com/Service/"
targetNamespace="http://www.herongyang.com/Service/">
<wsdl:documentation>
Hello_WSDL_11_SOAP.wsdl
Copyright (c) 2007 HerongYang.com, All Rights Reserved.
</wsdl:documentation>
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.herongyang.com/Service/">
<xsd:element name="HelloRequest" type="xsd:string"/>
<xsd:element name="HelloResponse" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="helloInputMessage">
<wsdl:part name="helloInputPart" element="hy:HelloRequest"/>
</wsdl:message>
<wsdl:message name="helloOutputMessage">
<wsdl:part name="helloOutputPart" element="hy:HelloResponse"/>
</wsdl:message>
<wsdl:portType name="helloPortType">
<wsdl:operation name="Hello">
<wsdl:input name="helloInput"
message="hy:helloInputMessage"/>
<wsdl:output name="helloOutput"
message="hy:helloOutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="helloBinding" type="hy:helloPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Hello">
<soap:operation
soapAction="http://www.herongyang.com/Service/Hello"/>
<wsdl:input name="helloInput">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloOutput">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="helloService">
<wsdl:port name="helloPort" binding="hy:helloBinding">
<soap:address
location="http://www.herongyang.com/Service/Hello_SOAP_11.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
EDIT: Here is another example WSDL and their XSD usage is different as well, so far as that the xsd types are simply added in the message elements and ignoring it in the types element. This difference is very confusing and nothing via google provides any concrete information for XSD and especially WSDL usage.
<definitions name="SoapResponder"
targetNamespace="http://www.SoapClient.com/xml/SoapResponder.wsdl">
<types>
<schema targetNamespace="http://www.SoapClient.com/xml/SoapResponder.xsd">
</schema>
</types>
<message name="Method1">
<part name="bstrParam1" type="xsd:string"/>
<part name="bstrParam2" type="xsd:string"/>
</message>
<message name="Method1Response">
<part name="bstrReturn" type="xsd:string"/>
</message>
<portType name="SoapResponderPortType"></portType>
<binding name="SoapResponderBinding" type="tns:SoapResponderPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Method1">
<soap:operation soapAction="http://www.SoapClient.com/SoapObject"/>
<input>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="SoapResponder">
<documentation>A SOAP service that echoes input parameters in the
response
</documentation>
<port name="SoapResponderPortType" binding="tns:SoapResponderBinding">
<soap:address
location="http://www.soapclient.com/xml/soapresponder.wsdl"/>
</port>
</service>
</definitions>
python xml soap xsd wsdl
Is the XSD file mandatory for a SOAP WSDL? If the .xsd file is not mandatory, then is it mandatory I put the XSD information inside the WSDL Types Element?
I have written a custom XML deserializer/serializer and a custom WSDL generator that will take in python functions (that have been Type Hinted) and dynamically generate a WSDL based on the functions fed to it.
def example(arg1: str, arg2: int) -> str:
code
So the WSDL I generate is correct, assuming the type hints are correct (whoever wrote the python module, etc). I can feed in a python function or multiple, and generate a WSDL dynamically. The last remaining piece is the type tag. This wiki blurb on XSD makes me think that making a XSD or a XSD generator will be trivial since it will too be based off the function type hints, and since all of this is dynamic/unknown, no pre-made assumptions can be made for the XSD.
XSD can be used to express a set of rules to which an XML document
must conform in order to be considered "valid" according to that
schema. However, unlike most other schema languages, XSD was also
designed with the intent that determination of a document's validity
would produce a collection of information adhering to specific data
types. Such a post-validation infoset can be useful in the development
of XML document processing software....
I have looked at several example WSDL, this one is not using a XSD, but it is explicitly stating the types inside the main XML. I assume then if I do not use a XSD, I simply need to add information inside the WSDL Types Element? I have that information readily available and can simply put the function type signature inside
<?xml version="1.0"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:hy="http://www.herongyang.com/Service/"
targetNamespace="http://www.herongyang.com/Service/">
<wsdl:documentation>
Hello_WSDL_11_SOAP.wsdl
Copyright (c) 2007 HerongYang.com, All Rights Reserved.
</wsdl:documentation>
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.herongyang.com/Service/">
<xsd:element name="HelloRequest" type="xsd:string"/>
<xsd:element name="HelloResponse" type="xsd:string"/>
</xsd:schema>
</wsdl:types>
<wsdl:message name="helloInputMessage">
<wsdl:part name="helloInputPart" element="hy:HelloRequest"/>
</wsdl:message>
<wsdl:message name="helloOutputMessage">
<wsdl:part name="helloOutputPart" element="hy:HelloResponse"/>
</wsdl:message>
<wsdl:portType name="helloPortType">
<wsdl:operation name="Hello">
<wsdl:input name="helloInput"
message="hy:helloInputMessage"/>
<wsdl:output name="helloOutput"
message="hy:helloOutputMessage"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="helloBinding" type="hy:helloPortType">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="Hello">
<soap:operation
soapAction="http://www.herongyang.com/Service/Hello"/>
<wsdl:input name="helloInput">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="helloOutput">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="helloService">
<wsdl:port name="helloPort" binding="hy:helloBinding">
<soap:address
location="http://www.herongyang.com/Service/Hello_SOAP_11.php"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
EDIT: Here is another example WSDL and their XSD usage is different as well, so far as that the xsd types are simply added in the message elements and ignoring it in the types element. This difference is very confusing and nothing via google provides any concrete information for XSD and especially WSDL usage.
<definitions name="SoapResponder"
targetNamespace="http://www.SoapClient.com/xml/SoapResponder.wsdl">
<types>
<schema targetNamespace="http://www.SoapClient.com/xml/SoapResponder.xsd">
</schema>
</types>
<message name="Method1">
<part name="bstrParam1" type="xsd:string"/>
<part name="bstrParam2" type="xsd:string"/>
</message>
<message name="Method1Response">
<part name="bstrReturn" type="xsd:string"/>
</message>
<portType name="SoapResponderPortType"></portType>
<binding name="SoapResponderBinding" type="tns:SoapResponderPortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Method1">
<soap:operation soapAction="http://www.SoapClient.com/SoapObject"/>
<input>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</input>
<output>
<soap:body use="encoded"
namespace="http://www.SoapClient.com/xml/SoapResponder.xsd"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
</output>
</operation>
</binding>
<service name="SoapResponder">
<documentation>A SOAP service that echoes input parameters in the
response
</documentation>
<port name="SoapResponderPortType" binding="tns:SoapResponderBinding">
<soap:address
location="http://www.soapclient.com/xml/soapresponder.wsdl"/>
</port>
</service>
</definitions>
python xml soap xsd wsdl
python xml soap xsd wsdl
edited Nov 13 '18 at 18:54
Kent Wong
asked Nov 13 '18 at 16:37
Kent WongKent Wong
1501213
1501213
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285611%2fis-xsd-information-for-a-soap-wsdl-mandatory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53285611%2fis-xsd-information-for-a-soap-wsdl-mandatory%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown